Apache 経由で SVN サーバーへのリモート アクセスを提供しようとしています。状況は次のように説明できます。
/root
/public-project
/trunk
/branches
/restricted-project
/trunk
/branches
両方のプロジェクトが含まれるリポジトリは 1 つだけです。
パブリック プロジェクトは誰でも表示できます (表示のみ、変更は不可)。制限付きプロジェクトは、特定のグループに属するユーザーのみが読み取り/変更できます。設定は次のとおりです。
<Location "/root">
DAV svn
SVNPath [...]
SVNIndexXSLT [...]
[...]
<LimitExcept PROPFIND OPTIONS REPORT>
require ldap-group CN=SVN Administrators,OU=Subversion,DC=example,DC=com
</LimitExcept>
</location>
<Location "/root/public-project">
<LimitExcept GET PROPFIND OPTIONS REPORT>
require ldap-group CN=Project1 Contributors,OU=Subversion,DC=example,DC=com
</LimitExcept>
</location>
<Location "/root/restricted-project">
require ldap-group CN=Project2 Contributors,OU=Subversion,DC=example,DC=com
</location>
十分に安全ですか、それともゲストが制限されたプロジェクトから機密情報にアクセスする可能性がありますか?
SVN 経由でパブリック プロジェクトのソースを更新すると、次のエラーが発生します。
編集操作のルートを開く権限がありません
Apache error.log には次の要素が表示されます。
更新レポート エディターの実行中にエラーが発生しました [500、#220000]
編集操作のルートを開く権限がありません [500、#220000]PROPFIND
access.log に関しては、SVN クライアントが(response: HTTP 207) と(response: HTTP 200)を大量に生成しOPTIONS
、最終的に次のようになったことが示されています。「レポート /root/!svn/vcc/default HTTP/1.1」 500 241
この問題を解決するにはどうすればいいでしょうか。つまり、パブリック プロジェクトに対しては読み取り専用アクセスを有効にし、制限されたアクセスは権限のないユーザーからは非表示にしておく、ということです。
注意: GET 権限を付与すると、/root
ゲストがパブリック プロジェクトのソースをロードできるようになりますが、パブリックの動作がデフォルトの動作になります。アクセスを制限し、パブリック プロジェクトを含むノードにのみ付与することをお勧めします。
答え1
私は一から新しい環境を構築し、その構成を試してみましたが、のみ1 つの方法は、すべてをデフォルトで公開に設定し、特定のプロジェクトを明示的に制限することです。
これはセキュリティの観点から完全に愚かなことです。特に、多数のプロジェクトが作成され、完全に自動化されていない場合、制限を設定することを忘れて間違いを犯しやすくなります。そうは言っても、自動化をさらに推進することを強制するため、メリットしかありません。
誰かが設定を試してみたい場合は、現在使用されている構成を提供できます。