Meus EDBs são separados por:
Enviamos todas as chaves com um sufixo especial para cada nova instância do EC2 à medida que as inicializamos e, em seguida, removemos todas as chaves que não foram usadas por qualquer das receitas na lista de execução no final da primeira vez que estará certo quando a instância começar.)
Todos os arquivos são enviados como proprietário e grupo "root" e com apenas permissões de leitura.
Toda receita que usa um EDB gera o nome do EDB e o nome do arquivo de chave no tempo de execução da receita concatenando 'edb_' + o ambiente dos nós + receita / nome específico do item + '.key' e depois procura a chave por este nome. (Se não existir, isso gera uma exceção por padrão).
Assim, para o nosso servidor couchdb, executando uma função chamada 'couch', para obter as credenciais que estamos usando para o (s) usuário (s) admins no ambiente de desenvolvimento, a receita procura por uma chave chamada 'edb_dev_couch. chave '
Em seguida, pesquise um pacote de dados chamado 'edb_dev' para um item chamado 'couch_credentials'.
Para gerenciar chaves, atualmente estou usando a abordagem simples de:
- faça o upload de todas as chaves EDB por meio do script de bootstrap e anexe '_x' aos nomes das chaves
- Ter cada receita que usa uma aparência EDB no diretório de chaves para a chave que precisa.
- se a chave existir com um sufixo "_x", renomeie a chave para remover o sufixo "_x".
- adicione uma receita no final de cada run_list que exclua todas as chaves com um sufixo '_x'
Com sorte, isso limita o tempo em que as chaves fora do escopo de um único nó são suscetíveis até que a máquina seja inicializada e tenha a primeira execução de chef_client.
Esta é a nossa primeira rodada de testes de como proteger as chaves, mas até o momento atende às nossas necessidades atuais, pois impede que um servidor de desenvolvimento possa acessar imediatamente quaisquer outras credenciais de servidores armazenadas em um EDB.
Para manter uma receita no final de cada lista de execução, eu uso um trabalho exec de faca que garante que essa receita delete_keys seja exatamente a última receita em todos os nós.