Todo aplicativo de software tem segredos. Senha, chave de API, tokens seguros, todos se enquadram na categoria de segredos. Haverá consequências terríveis se suas chaves secretas de produção caírem em mãos erradas. Você deve controlar rigorosamente como e quando suas chaves secretas podem ser acessadas.
O Couchbase adicionou mais serviços à sua infraestrutura e esses serviços têm credenciais internas e externas, e o armazenamento de credenciais desses serviços é um desafio. Outro desafio é a rotação de segredos para todos os serviços internos e externos.
O Couchbase 4.6 introduz o gerenciamento de segredos, em que todos os segredos compartilhados são criptografados quando armazenados e transmitidos corretamente para nós e serviços, além da facilidade de rotação de segredos. Não haverá impacto em nenhum cliente SDK ou UI e no desempenho.
O Couchbase mantém dois níveis de hierarquia de chaves para facilitar a rotação da senha mestra sem recodificar os dados, oferecer suporte a várias senhas mestras e também facilitar a integração com o servidor KMIP. Na inicialização do nó, a senha mestra é criada ou fornecida pelo usuário, a partir da qual uma chave mestra é criada usando uma função de derivação de chave forte. O Couchbase usa PBKDF2 para gerar a chave.
Uma data_key aleatória também é criada na inicialização do servidor, que é então criptografada com a chave mestra. Todos os segredos são criptografados usando data_key no disco. O Couchbase usa um algoritmo AES de 256 bits no modo GCM para criptografar segredos.
Para inicializar o sistema, a chave mestra é usada para abrir a chave de dados criptografados. A chave de dados descriptografada é então usada para abrir os segredos criptografados, e os segredos são usados para iniciar o Couchbase Server. O Couchbase recomenda o uso de uma senha mestra forte.
Com o Secret Management no 4.6, você pode alternar seus segredos em diferentes níveis da hierarquia de chaves periodicamente ou no caso de uma violação.
A rotação da senha mestra/primeiro nível de rotação e a redefinição da senha podem ser feitas usando a API REST ou o cli. O Couchbase permite a flexibilidade de definir uma senha mestra por nó. Se a senha mestra for perdida e o servidor for interrompido, o nó será perdido. Os dados do nó podem ser recuperados usando outras ferramentas com o servidor.
O segundo nível de rotação pode ser feito alterando a chave de dados usando a API REST ou o cli.
Toda a rotação e a configuração da senha mestra são auditadas pelo aplicativo.
Um exemplo de configuração do servidor para a senha mestra usando o cli no ubuntu 14.
- Instalar e configurar o servidor couchbase.
- Configure a senha mestra usando o cli, execute o comando abaixo e passe a senha no prompt.
/opt/couchbase/bin/couchbase-cli master-password -c 192.168.0.1:8091 -u Administrator -p password -new-password
- Parar o servidor - /etc/init.d/couchbase-server stop
- Configurar uma variável de ambiente
export CB_MASTER_PASSWORD=
- Iniciar o servidor - /etc/init.d/couchbase-server start
Observação: se estiver usando o sudo para iniciar o servidor, use a opção -E no sudo para iniciar o servidor.
- Gire a chave de dados usando o cli e execute o comando abaixo:
/opt/couchbase/bin/couchbase-cli master-password -c 192.168.0.1:8091 -u Administrator -p password -rotate-data-key
- Para alterar a senha mestra, execute o comando abaixo. Passe a senha no prompt
/opt/couchbase/bin/couchbase-cli master-password -c 192.168.0.1:8091 -u Administrator -p password -new-password
Detalhes de registro:
| Alteração da senha de logon da babá | [ns_server:info,2017-01-20T13:12:30.079Z,babysitter_of_ns_1@127.0.0.1:encryption_service:encryption_service:call_gosecrets_and_store_data_key:227]A alteração da senha mestra foi bem-sucedida |
| A babá faz logon com a senha mestre incorreta durante a inicialização do servidor ou a variável env. está definida incorretamente | [ns_server:error,2017-01-20T13:13:07.066Z,babysitter_of_ns_1@127.0.0.1:encryption_service:encryption_service:init:174]Senha mestra incorreta. Erro: {error, "cipher: falha na autenticação da mensagem"} |
| Registro da babá quando a senha mestra é definida corretamente para o servidor CB | =========================PROGRESS REPORT=========================
supervisor: {local,ns_babysitter_sup} iniciado: [{pid,}, {name,encryption_service}, {mfargs,{encryption_service,start_link,[]}}, {restart_type,permanent}, {shutdown,1000} {child_type,worker}] [ns_server:debug,2017-01-22T12:08:46.432Z,babysitter_of_ns_1@127.0.0.1::supervisor_cushion:init:39]iniciando ns_port_server com atraso de 5000 |