Como proteger a implantação do TeamCity através do serviço Web Deploy?

7

Minha equipe usa o TeamCity para integração contínua. Ele construirá, testará e implementará aplicativos da web por meio do Web Deploy para servidores web dev e qa. A parte complicada é a implantação em um servidor da Web de produção - nossa política determina que os desenvolvedores não possam implantar em produção, apenas um administrador do sistema pode.

Nossa abordagem atual é fazer com que o TeamCity construa um pacote de implantação web, que o administrador pode baixar e instalar no servidor web de produção. No entanto, gostaríamos de permitir que eles simplesmente cliquem em "Executar" em uma configuração de compilação, mas não temos certeza de como proteger esse botão.

Poderíamos criar um projeto TeamCity que somente os administradores tenham acesso, mas também teremos que abordar a segurança do Web Deploy. O serviço Web Deploy precisa ser autenticado com uma conta de administrador local no servidor de produção. Não queremos que os desenvolvedores tenham acesso ao nome de usuário / senha em um script de construção, nem queremos que todos os agentes de compilação sejam executados como essa conta, pois os desenvolvedores podem criar uma compilação que a use para implantar na produção.

Eu não tive muita sorte em encontrar recursos nas práticas recomendadas de segurança / implantação do TeamCity, mas não consigo imaginar que somos a única empresa nessa situação. Como os outros gerenciam a segurança de implantação automatizada?

    
por jrummell 19.10.2011 / 22:49

2 respostas

5

Usando as funções e permissões no Teamcity, você pode ter um projeto que somente sua implantação equipe tem acesso a. Ele pode ter uma dependência de artefato na compilação principal, e você pode até tê-lo usado "última compilação marcada "para que os desenvolvedores possam controlar o que está disponível.

Eu instalaria um agente de compilação capaz de implantar no (s) sistema (s) de destino e, em seguida, usar o " builds compatíveis " característica desse agente na UI do TeamCity para torná-lo compatível apenas com sua compilação de implantação de produção. (Claro que você também vai querer garantir que seus desenvolvedores não tenham permissões para modificar a configuração do agente.)

Esta é uma desvantagem do Teamcity usando as opções de configuração compatíveis com o Agent: se você deixar o (s) outro (s) agente (s) de compilação compatível com todas as compilações, a implementação de produção poderá ser tentada a partir de uma delas. livre. A única solução que conheço é configurá-los para executar apenas "compilações especificadas" e adicionar todas as outras compilações ao (s) outro (s) agente (s). O problema é que se você adicionar uma nova compilação, ela não poderá ser executada em lugar algum até que você a adicione especificamente como compatível.

Existem outras maneiras de restringir a compilação a ser executada somente em agentes específicos que usam os Requisitos do agente na configuração de compilação.

Um é adicionar um requisito de que teamcity.agent.name seja igual ao nome do agente no qual deseja que ele seja executado. (ou, inversamente, não é igual ao que você não quer que ele seja executado).

Outra é adicionar um requisito para uma variável de ambiente (existe ou com um valor específico) e, em seguida, definir apenas essa variável de ambiente no (s) agente (s) que você deseja executar essa compilação.

Outra possível solução é ter duas instalações do Teamcity, já que você tem dois conjuntos diferentes de usuários. Você obviamente não pode usar uma dependência de artefato, mas você sempre pode obter os artefatos mais recentes de uma determinada construção usando uma URL como:  * http://teamcity.server/repository/download/bt41/latest.lastSuccessful/setupfile.exe

onde:

  • bt41 é o ID de construção no Teamcity (você pode encontrá-lo no URL quando navega para qualquer construção)
  • latest.lastSuccessful também pode ser lastest.lastPinned , 'latest.lastFinished ou o número de compilação exato
  • setupfile.exe é o arquivo que você deseja extrair da saída de artefatos (isso também pode ser um caminho, se não for publicado no nível superior)
por 20.10.2011 / 02:48
2

Para proteger o processo de implantação da Web, se você estiver em um domínio, configure a implantação da Web para aceitar a autenticação do Windows e execute o agente de compilação teamcity como o usuário do domínio que tem permissão para implantar no IIS. Eu tenho coisas configuradas dessa maneira e você não precisa de nenhum tipo de senha no script de implantação da Web.

Configurando a autenticação do Windows para implantação na Web: link

    
por 26.05.2012 / 13:44