web-dev-qa-db-ja.com

Apache DAV SVNLDAPおよびAuthzSVNAccessFile

私は、すべてのユーザーとそのグループメンバーシップを含むApacheDSがあるプロジェクトに取り組んでいます。グループメンバーシップは、各グループのメンバー属性として保存され、スキーマを変更したので、各ユーザーにmemberOf属性もあり、承認を行うときにグループメンバーシップを確認するのは簡単です。グループメンバーシップに基づいてユーザーにSubversionリポジトリへのアクセスを許可し、それを今すぐ稼働させる必要があります。

しかし、私の顧客は、要件を指定するときに1つの「わずかな」詳細について言及するのを忘れたと私に言いました。また、特定のサブフォルダーに対してより厳しい要件が必要なリポジトリもいくつかあるようです。したがって、簡単な解決策を考え出すために、LDAPrequireディレクティブをAuthzSVNAccessFileディレクティブと単純に組み合わせることができると思いました。

これが私の設定です:

        <Location /TestClosedProject>
            SVNPath /repos/TestClosedProject
            SVNListParentPath on

            # Include shared LDAP settings, binddn, passwords, ldapurl etc.
            Include /svn/conf/ldapCommonSettings

            # LDAP Authentication & Authorization is final; do not check other databases
            AuthzLDAPAuthoritative on

            AuthName "TestClosedProject"

            # Admin group has full access
            Require ldap-attribute memberOf=cn=TestProject-admins,ou=groups,dc=somedomain,dc=somecountry

            # Members group has read-only access
            <Limit GET PROPFIND OPTIONS REPORT>
                    Require ldap-attribute memberOf=cn=TestProject-members,ou=groups,dc=somedomain,dc=somecountry
            </Limit>
    </Location>

これにより、TestProjectメンバーは/ TestProjectのコードを読むことができ、Test-adminsはフルアクセス権を持ちます。

ただし、上記の構成にAuthzSVNAccessFile /svn/conf/TestClosedProject.svnAuthを挿入すると、LDAPに存在するが、-adminsと-membersのどちらのメンバーでもないユーザーを指定することにより、requireldap-attributeディレクティブをsvnAuthファイルでオーバーライドできます。グループ。 /svn/conf/TestClosedProject.svnAuthの内容:

[groups]
supporters = jrf,agata
admins = fj,jrf
members = fj,jrf

[/]
* =
@members = r
@admins = rw

[TestClosedProject:/support]
@supporters = rw
@members = r

問題のあるシナリオは

  • lDAPは非常に頻繁に/自動的に更新されます
  • svnAuthファイルは手動で管理されています
    • だから例えば従業員は解雇/退職し、TestProject-members/TestProject-adminsグループから自動的に削除されますが、他の内部システムのため、LDAPのユーザーであり続けますが、「プロジェクトグループ」メンバーシップはありません。プロジェクトフォルダへのアクセスを許可するsvnAuthファイルがない限り、これは正常に機能します。
    • SvnAuthファイルは手動で管理されているため、ほとんどの場合、LDAPグループメンバーシップほど定期的に更新されません。したがって、解雇された従業員は実際にはsvnAuthファイルに記載されているため、リポジトリにアクセスできます。必要なグループのいずれかのより長いメンバー。

メンバーまたは管理者のLDAPグループのユーザーのみがsvnAuthファイルを使用してアクセスを許可されるようにこれを設定する方法はありますか?基本的に、svnAuthファイルに委任する前に、これらのグループのいずれにも属していない人へのアクセスを拒否したいだけです-それは可能です-もしそうなら、これをどのように指定しますか?

1
user81347

リポジトリアクセスを管理する方法は次のとおりです。

  1. すべてのリポジトリには、authzファイルを含む「admin」ディレクトリがあります
  2. 「admin」ディレクトリへのアクセスをリポジトリの「owners」に制限するようにauthzファイルを設定しました。
  3. 「admin」ディレクトリの変更をcronジョブでチェックし、authzファイルをリポジトリにコピーします。

Apache構成では、「valid-userが必要」以外は何もしません(そうすれば、新しいリポジトリが追加されたときにのみApacheを再起動する必要があります)。

このようにして、リポジトリ権限のすべてのメンテナンスをリポジトリの所有者にオフロードします。 LDAPグループが組み込まれていないため、これで問題に直接対処できない場合がありますが、このソリューションは、数百のリポジトリで数年間機能してきました。

1
trent

これが純粋なオープンソースで可能かどうかはわかりませんが、WANdiscoの商用製品であるSubversion AccessControlでこれを処理できます。製品には、authzファイルの代わりに、ユーザーに適用される独自のグループとルールのリストがあります。グループのメンバーシップはActiveDirectoryサーバーのポーリングから取得されるため、これで要件を満たす必要があります。

http://www.wandisco.com/Subversion/accesscontrol

1
vinnyjames