Pergunta

Que estratégia você usa para evitar o armazenamento de senhas no controle de versão?

Atualmente, tenho senhas de desenvolvimento / testes / produção salvas em três arquivos diferentes e o arquivo apropriado é usado durante a implantação. Tudo isso está comprometida com o controle de versão, mas eu não estou muito feliz com isso uma vez que nem todos os desenvolvedores precisam saber as senhas (especialmente os terceirizados, que têm acesso apenas enquanto seus projetos passado, o que poderia ser apenas um mês).

Armazenar senhas no banco de dados não é uma ótima opção:

  • Eu preciso a maioria dos dados durante a inicialização do contexto da Primavera (app Java), e eu não quero construir andaimes para se conectar a um único banco de dados, e depois conectar para o resto de bases de dados e inicializar o resto da aplicação
  • algumas das senhas são apenas relacionadas com a implantação; senha para acessar diferentes servidores, keystores, etc .; esses são a aplicação coisas não pode carregar depois de iniciado, uma vez que não carregá-lo em tudo

Estou pensando em mudar de configuração de implantação da máquina do desenvolvedor para computador dedicado que verifica fora código de controle de versão e corre script de construção / implantação, mas eu não sou realmente certo o que seria a melhor maneira de fazê-lo.

Eu também preciso dizer que eu não quero segurança máxima: Eu só quero evitar ter senhas em disco de cada desenvolvedor e tornando muito fácil

.

Então, eu estou pedindo suas experiências / melhores práticas. Como você faz isso?

Foi útil?

Solução

propriedades de configuração ambiente específico-I tendem a colocar em, digamos, um arquivo de propriedades que não está no controle de origem e não é parte do processo de construção. Quando da criação de um novo ambiente, parte dessa configuração é colocar criar esse arquivo de propriedades que inclui coisas como endereços de banco de dados, credenciais e nomes, nomes de hosts remotos relevantes e assim por diante.

Na Primavera de usar o PropertyPlaceholderConfigurer para carregar o arquivo de propriedades. Ela só precisa de ser encontrável por Spring, que geralmente significa apenas colocando-o em um diretório apropriado no servidor de aplicação.

Como alternativa, você pode usar invólucro para executar o servidor de aplicativos e de inicialização JVM opções incluem a adição dessas propriedades arquivos para o classpath de modo Primavera pode encontrá-los.

Outras dicas

Eu vi duas abordagens para isso:

  • Mover as senhas em outra árvore de controle de origem que os desenvolvedores não têm acesso.
  • Não coloque senhas no controle de origem, eo gerente de construção pessoa dedicada precisa digitar as senhas cada vez que um deploy é feito. Isso foi em um banco onde havia um cara em tempo integral trabalhando em processos de construção / fusão / releases.

Isso não funciona em todos os casos, mas é aí que a gloriousness de usar NT AUTHORITY \ NETWORK SERVICE como a identidade de seus serviços vem dentro. Se você usar essa identidade, você não precisa manter uma senha para - você pode apenas usar credenciais AD do computador na forma de DOMAINNAME \ MACHINENAME $ para fazer o seu acesso à rede e banco de dados protegido.

Há, naturalmente, algumas coisas importantes a observar -. Não menos do que é que não há dois aplicativos que compartilham uma fronteira de segurança são hospedados como esta no mesmo servidor

Coloque as senhas em variáveis ??o / s de ambiente do usuário.

Somente esse usuário ou raiz pode ler o valor, mesmo que um arquivo, mas com chance zero de ele ficar verificado no controle de origem.

Eu acho que é bom ter um local_settings fora do repositório.

https://stackoverflow.com/a/21570849/1675586

Em vez de não armazená-los, você pode armazená-los de forma criptografada. Então você não tem a dor de enviar arquivos credenciais via IM ou e-mail o tempo todo inicia uma nova desenvolvedor ... Você só precisa dizer a eles o mestre-senha específica do projeto, uma vez que eles possam criptografar as credenciais.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top