Come posso limitare l'accesso Apache / SVN a utenti specifici (autenticazione basata su file / LDAP)?
-
20-08-2019 - |
Domanda
Ho Apache / SVN in esecuzione su Windows Server 2003 con autenticazione tramite LDAP / Active Directory e un file flat.
Funziona benissimo tranne che qualsiasi qualsiasi utente LDAP può accedere a tutto. Mi piacerebbe essere in grado di limitare i repository SVN per utente o gruppo.
Idealmente, arriverei a qualcosa del genere:
<Location /svn/repo1>
# Restricted to ldap-user1, file-user1, or members of ldap-group1,
# all others denied
</Location>
<Location /svn/repo2>
# Restricted to ldap-user2, file-user2, or members of ldap-group2,
# all others denied
</Location>
Il vero trucco potrebbe essere che ho un'autenticazione mista: LDAP e file:
<Location /svn>
DAV svn
SVNParentPath C:/svn_repository
AuthName "Subversion Repository"
AuthType Basic
AuthBasicProvider ldap file
AuthUserFile "svn-users.txt" #file-based, custom users
AuthzLDAPAuthoritative On
AuthLDAPBindDN ldapuseraccount@directory.com
AuthLDAPBindPassword ldappassword
AuthLDAPURL ldap://directory.com:389/cn=Users,dc=directory,dc=com?sAMAccountName?sub?(objectCategory=person)
Require valid-user
</Location>
Nel mio googling, ho visto alcune persone realizzare questo inserendo il file authz
in questo modo:
<Location /svn>
...
AuthzSVNAccessFile "conf/svn-authz.txt"
</Location
Quindi, dovrei mappare gli utenti AD. Qualche esempio di tale approccio?
Soluzione
Questo è stato in realtà molto più facile di quanto pensassi. Ho aggiunto questo alla mia posizione:
<Location /svn>
...
AuthzSVNAccessFile "conf/svn-authz.txt"
</Location
In quel file, ho appena specificato le normali autorizzazioni SVN (a questo punto il sistema non sembra distinguere tra utenti di file e utenti LDAP):
[groups]
@admin = haren
###
### Deny all but administrators to the tree
###
[/]
* =
@admin = rw
###
### Allow more specific people on a per-repository basis below
###
[repo1:/]
ldap-user1 = rw
file-user1 = rw
[repo2:/]
ldap-user2 = rw
file-user2 = rw
Sto ancora giocando con la sintassi del gruppo LDAP per far funzionare quella parte. Eventuali suggerimenti sono apprezzati.
Altri suggerimenti
Un altro metodo alternativo per chiunque sia interessato:
Require ldap-group cn=SVN Users,cn=Users,dc=company,dc=com
Ciò presuppone che tu abbia creato un gruppo chiamato Utenti SVN in Active Directory. Si noti che non ci sono doppie virgolette nel gruppo.
Usa quello invece di Richiedi utente valido
Quindi probabilmente non è necessario riavviare apache ogni volta che si apportano modifiche, è sufficiente aggiungere l'utente al gruppo in AD
Dovresti non usare
Require valid-user
ma usa
Require group