Subversion Tagging e Segurança
-
22-08-2019 - |
Pergunta
Eu configurei um repositório SVN do zero, e eu tenho marcado com sucesso alguns dos meus lançamentos usando o comando de cópia SVN.
Eu usei o SSPI auth plugin para o apache, para que os nossos desenvolvedores só apertar o servidor com suas credenciais de rede, e tudo funciona bem.
Eu criei um arquivo de autorização AuthZ, acrescentou nossos desenvolvedores a grupos no arquivo, e concederam-lhes acesso de gravação para a raiz. Eu também concederam usuários anônimos acesso somente leitura à raiz.
Eu então bloqueado o / svn / diretório com: Exigir-grupo "CORP \ CKAN0BlahBlah"
Isso limita efetivamente novos desenvolvedores no grupo de segurança para acesso somente leitura até que eles têm acesso através do arquivo aAuthZ configuração.
Agora, eu tenho um par de perguntas:
-
O que é a maneira correta (excepto o sistema de honra) para impedir que usuários de cometer alterações a qualquer um dos "Tags" diretórios?
-
É possível usar SSPI passar os membros dos grupos para, AuthZ em vez de listar os membros individualmente na configuração arquivo?
Solução 2
Para Pergunta # 1 , eu desenvolvi para isso:
@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
Agarrou a ferramenta grep de http://sourceforge.net/projects/unxutils
Para Pergunta nº 2 , a resposta é não, você não pode verificar contra grupos de segurança AD no arquivo AuthZ configuração.
Obrigado por sua ajuda, todos.
Outras dicas
1 - Você pode usar o gancho pre-commit para prevenir commits, veja SVN pre-commit gancho para evitar alterações às tags subdiretórios .
Editar: Para fazer isso no Windows, tente o seguinte:
Salvar isso como um arquivo chamado pré-commit.bat nos ganchos pasta de sua repo:
@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
Note, isso vai impedir de cometer a qualquer caminho no repositório que contém o substring marcas . Modificar de acordo com suas necessidades.
Não há nenhuma maneira "adequada". Tags são uma convenção e os desenvolvedores devem aprender e segui-lo. Exceto que, uma falha de segurança pode ser implementado usando ganchos Subversion. Consulte desta página para um tutorial bom.
Isto parece-me ser uma questão de educação e processo. Se seus desenvolvedores a entender o propósito de suas tags SVN, parece muito menos provável que você vai ter pessoas (intencionalmente) fazendo commits a um tag. O que eu encontrei para ser indispensável para comunicar esses processos de forma eficaz é até à data, a documentação escrita. Minha equipe usa um wiki para armazenar documentação sobre os nossos processos (especificamente, usamos MediaWiki ). A abordagem wiki parece tornar as coisas muito mais acessível e mais fácil de manter-se atualizado do que algo como o armazenamento de versões de documentos do MS Office no SharePoint.
Que tal usar o arquivo svn-auth para definir isso? isso ficaria assim:
[groups]
ADMINS=<your ID>
<rest of groups>=<all other IDs>
[/]
* = r
<rest of groups> = rw
@ADMINS = rw
[/tags]
<rest of groups> = r
Isso permitirá que os administradores de leitura e escrita acesso ao diretório tags, mas ninguém mais. Eu não sei o SSPI auth plugin, então talvez o meu exemplo fornecido não funciona em seu contexto.