Subversion のタグ付けとセキュリティ
-
22-08-2019 - |
質問
私は SVN リポジトリを最初からセットアップし、SVN copy コマンドを使用していくつかのリリースに正常にタグを付けることができました。
Apache 用の SSPI 認証プラグインを使用したため、開発者はネットワーク資格情報をサーバーに送信するだけで、すべてがうまく動作しました。
AuthZ 認証ファイルを作成し、開発者をファイル内のグループに追加し、ルートへの書き込みアクセスを許可しました。また、匿名ユーザーにルートへの読み取り専用アクセスを許可しました。
次に、/svn/ ディレクトリを次のようにロックダウンしました。必須グループ「CORP\CKAN0BlahBlah」
これにより、セキュリティ グループ内の新しい開発者は、aAuthZ 構成ファイルを通じてアクセスが許可されるまで、読み取り専用アクセスに事実上制限されます。
ここで、いくつか質問があります。
ユーザーが「タグ」ディレクトリのいずれかの変更をコミットしないようにするための適切な方法(名誉制度以外)は何ですか?
構成ファイルにメンバーを個別にリストするのではなく、SSPIを使用してグループのメンバーをAUTHZに渡すことは可能ですか?
解決 2
のために 質問1, 、私はこれのために開発しました:
@echo off
SET SVNLOOK=C:\Program Files\CollabNet Subversion Server\svnlook.exe
SET GREP=D:\SVN\Repo\hooks\grep.exe
SET LOG=D:\SVN\Repo Logs.txt
>>"%LOG%" echo ==== commit %1 %2 ====
>>"%LOG%" "%svnlook%" changed -t %2 %1
("%svnlook%" changed -t %2 %1 | "%grep%" "^U.*/tags/") && (echo Cannot commit to tags.>&2 && exit 1)
("%svnlook%" log -t %2 %1 | "%grep%" "[a-zA-Z0-9]") || (echo You must specify a comment.>&2 && exit 1)
exit 0
grepツールを取得しました http://sourceforge.net/projects/unxutils
のために 質問2, の場合、答えは「いいえ」です。AuthZ 構成ファイル内の AD セキュリティ グループをチェックすることはできません。
皆さん、ご協力ありがとうございます。
他のヒント
1 - コミット前フックを使用してコミットを防ぐことができます。「コミット前フック」を参照してください。 タグのサブディレクトリへの変更を回避するための SVN 事前コミットフック.
編集: Windows でこれを行うには、次のことを試してください。
これを pre-commit.bat という名前のファイルとしてリポジトリのフック フォルダーに保存します。
@echo off
set REPOSITORY=%1
echo %REPOSITORY% | find /I "tags"
if errorlevel 1 goto done
echo You tried to commit to %REPOSITORY% >&2
echo Committing to tags is not allowed >&2
exit 1
:done
これにより、部分文字列を含むリポジトリ パスにコミットできなくなることに注意してください。 タグ. 。ニーズに応じて変更してください。
「適切な」方法はありません。タグは規則であり、開発者はそれを学び、従う必要があります。それを除けば、Subversion フックを使用してフェイルセーフを実装できます。見る これ 素晴らしいチュートリアルのページ。
これは教育とプロセスの問題であるように私には思えます。開発者が SVN タグの目的を理解していれば、(意図的に) タグにコミットする人が現れる可能性はかなり低くなるように思えます。これらのプロセスを効果的に伝えるために不可欠であると私が感じたのは、最新の文書化された文書です。私のチームは Wiki を使用してプロセスに関するドキュメントを保存しています (具体的には、 メディアウィキ)。Wiki のアプローチは、バージョン管理された MS Office ドキュメントを SharePoint に保存するなどの方法よりもはるかにアクセスしやすく、最新の状態に保つのが容易になるようです。
svn-auth ファイルを使用してそれを定義してはどうでしょうか?これは次のようになります:
[groups]
ADMINS=<your ID>
<rest of groups>=<all other IDs>
[/]
* = r
<rest of groups> = rw
@ADMINS = rw
[/tags]
<rest of groups> = r
これにより、ADMINS にはタグ ディレクトリへの読み取り/書き込みアクセスが許可されますが、他のユーザーには許可されません。SSPI 認証プラグインがわからないので、おそらく私の提供した例はあなたのコンテキストでは機能しないでしょう。