2009-05-19 17 views
3

私はSVNリポジトリを一からセットアップしました。SVNコピーコマンドを使っていくつかのリリースにタグ付けしました。Subversionのタグ付けとセキュリティ

SSPI認証プラグインをApache用に使用していたため、開発者はネットワーク資格情報でサーバーにヒットしました。すべてうまく動作します。

私はAuthZ認証ファイルを作成し、開発者をファイル内のグループに追加し、ルートへの書き込みアクセスを許可しました。私は匿名ユーザーにルートへの読み取り専用アクセスを許可しました。

は、私はその後に/ SVN /ディレクトリをロックダウン:「CORP \ CKAN0BlahBlah」これは効果的に読み取り専用のアクセスを、彼らはaAuthZの設定によってアクセスを許可されるまで、セキュリティグループに新しい開発者を制限

-グループが必要ファイル。今

、私は質問のカップルを持っている:

  1. 「タグ」ディレクトリのいずれかに変更をコミットからユーザー を防ぐために、(名誉システム 以外の)適切な方法は何ですか?

  2. は、それが可能な構成 ファイルに個別にメンバー をリストするのではなく、 のauthzにグループのメンバー、 を渡すためにSSPIを使用しますか?

答えて

3

質問には#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 

質問#2が、答えはNOであるため http://sourceforge.net/projects/unxutils


からのgrepツールをつかんで、あなたがすることはできませんAuthZ設定ファイルのADセキュリティグループと照合します。

ご協力いただきありがとうございます。

+0

grepの代わりにネイティブのfindstrを使用できると確信しています。 – RedFilter

+0

ありがとう、私はそれを見ていきます。 –

+0

これはクールなWindowsスクリプティングです;)質問:あなたのスクリプトでは、私はタグに新しいファイルを追加することができます..あなたはこれを避けるための解決策を知っていますか(私はそのような解決策を探しています)? –

6

1 - コミットを防止するためにプリコミットフックを使用できます。SVN pre-commit hook for avoiding changes to tags subdirectoriesを参照してください。

編集: Windows上でこれを行うには、次のことを試してください:あなたのレポのフックフォルダにあらかじめ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 

注意、これにより、サブ文字列タグを含むリポジトリパスへのコミットが防止されます。必要に応じて変更してください。

+0

Windowsでこれを行う方法はありますか? –

+2

フックはサーバー側にあるため、ホストプラットフォームにネイティブなコンパイル済みアプリケーション、シェルスクリプト、コマンドファイルなどでフックを実行できます。 – crashmstr

+0

だから、私は.batプリコミットスクリプトを探していて、ほとんどすべてがPerlスクリプトを呼び出しています。私はこのサーバにperlをインストールする許可を得ることができないので、純粋な.batのバージョンを知っていますか? –

2

「適切な」方法はありません。タグは規約であり、開発者はそれを習得し、それに従うべきです。それを避けて、フェイルセーフはSubversionフックを使って実装できます。素敵なチュートリアルについてはthisページをご覧ください。

1

これは私にとっては教育とプロセスの問題です。あなたの開発者があなたのSVNタグの目的を理解していれば、(意図的に)タグをコミットする人がいる可能性は非常に低いようです。これらのプロセスを効果的に伝達するために不可欠であると判明したのは、最新の書面による文書です。私のチームは、私たちのプロセスに関するドキュメントを保管するためにwikiを使用しています(具体的にはMediaWikiを使用しています)。 wikiアプローチは、バージョン管理されたMS OfficeドキュメントをSharePointに保存するよりも、アクセスしやすく、最新のものにすることが容易になるようです。

+0

私は開発者の一人であり、実際にはむしろこれを難易度の高いルールとして実装しています。 –

+0

十分に公正。理由を聞いてもいいですか?明らかに、事故が起きるのは、固くて速い規則が有用なユースケースの1つです。あなたはそれを望んでいるのですか? –

+0

はい。私の同僚たちの中には、私がこのポリシーを理解することを信じていない人がいるかもしれません。 –

0

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認証プラグインを知らないので、私の提供する例はあなたの文脈ではうまくいかないでしょう。

関連する問題