Estoy intentando proporcionar acceso remoto al servidor SVN a través de Apache. La situación se puede ilustrar así:
/root
/public-project
/trunk
/branches
/restricted-project
/trunk
/branches
Sólo hay un repositorio que contiene ambos proyectos.
Los proyectos públicos pueden ser vistos por cualquier persona (solo vistos, nunca modificados). Los restringidos pueden ser leídos/modificados sólo por los usuarios que pertenecen a grupos específicos. La configuración es la siguiente:
<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>
¿Es lo suficientemente seguro o existe la posibilidad de que un invitado acceda a información confidencial del proyecto restringido?
Al actualizar el código fuente del proyecto público a través de SVN, aparece el siguiente error:
No autorizado para abrir la raíz de la operación de edición
Apache error.log muestra los siguientes elementos:
Se produjo una falla al ejecutar el editor de informes de actualización [500, #220000]
No está autorizado para abrir la raíz de la operación de edición [500, #220000]En cuanto a access.log, muestra que el cliente SVN realizó un montón de
PROPFIND
(respuesta: HTTP 207) yOPTIONS
(respuesta: HTTP 200), y finalmente:"INFORME /root/!svn/vcc/default HTTP/1.1" 500 241
¿Qué debo hacer para resolver este problema, es decir, habilitar el acceso público de sólo lectura para el proyecto público y mantener el proyecto restringido oculto a usuarios no autorizados?
Nota: otorgar el privilegio GET /root
hace posible que un invitado cargue el código fuente del proyecto público, pero también hace que el comportamiento público sea el predeterminado. Preferiría restringir el acceso y otorgarlo solo en nodos que contengan proyectos públicos.
Respuesta1
Construí un entorno nuevo desde cero y jugué con su configuración, pero parece que elsoloLa forma es configurar todo como público de forma predeterminada y luego restringir proyectos particulares explícitamente.
Esto es completamente tonto desde el punto de vista de la seguridad, especialmente en el contexto donde se crean muchos proyectos, a veces no completamente automatizados, lo que hace que sea fácil cometer un error al olvidarse de poner una restricción. Dicho esto, también obliga a impulsar aún más la automatización, lo que sólo puede ser beneficioso.
Si alguien quiere jugar con la configuración, puedo proporcionarle la configuración actual utilizada.