No mundo acelerado de hoje, a segurança dos dados é de extrema importância, especialmente quando se lida com informações confidenciais. Um componente fundamental da segurança de dados é a autenticação, que protege os dados contra roubo. O HashiCorp Vault é uma das tecnologias que podem ajudar as empresas a proteger ainda mais o acesso ao seu banco de dados Couchbase.
Como a HashiCorp pode me ajudar a aumentar ainda mais a segurança do meu banco de dados?
O HashiCorp Vault pode armazenar e gerenciar com segurança credenciais de banco de dados, como nomes de usuário e senhas, e gerar dinamicamente novas credenciais quando elas forem necessárias. Isso reduz o risco de exposição acidental ou intencional de credenciais e facilita a revogação ou a rotação de credenciais quando elas não são mais necessárias.
O Vault também pode fornecer logs de auditoria detalhados de todo o acesso ao banco de dados e uso de credenciais, o que pode ajudar as organizações a cumprir vários requisitos regulamentares e monitorar atividades suspeitas.
Nesta postagem do blog com tutorial, veremos como integrar o Couchbase Server ao HashiCorp Vault.
Etapa 1: Configuração do Vault
A primeira etapa é configurar uma instância do HashiCorp Vault. Você pode fazer o download do binário do Vault no site oficial, usar um gerenciador de pacotes como o Homebrew ou o Chocolatey ou executar o Vault usando o Docker. Nesta postagem do blog, usaremos o Docker para configurar o ambiente.
-
- Configurar a rede do Docker
1 |
doca rede criar dev_couchbase |
-
- Inicie o Vault em um contêiner do Docker. Para iniciar o Vault no modo de desenvolvedor com uma senha raiz de senhabasta usar o comando abaixo.
1 2 3 4 5 6 7 |
doca executar --tampa-adicionar=IPC_LOCK --nome="couchbase_vault" --rm \ --rede dev_couchbase \ -e VAULT_DEV_ROOT_TOKEN_ID=senha \ -e VAULT_DEV_LISTEN_ADDRESS=0.0.0.0:8200 \ -e VAULT_ADDR=http://0.0.0.0:8200 \ -p 8200:8200 \ cofre servidor -dev |
O comando Docker acima inicia o servidor do Vault no modo de desenvolvimento, o que não é recomendado para uso em produção. Ele cria um armazenamento de dados na memória que é apagado quando o servidor é desligado. No entanto, ele é perfeito para fins de teste.
A interface do usuário do vault está sendo executada em http://localhost:8200.
Você pode usar uma "senha" como token para fazer login na interface do usuário do Vault, pois especificamos que esse é o token raiz.
Etapa 2: Verificar a configuração do Vault
Quando o servidor do Vault estiver em funcionamento, você precisará se certificar de que o plug-in do banco de dados do Couchbase esteja instalado.
Execute o seguinte comando para verificar se o plug-in está instalado:
1 |
doca executar -ele "couchbase_vault" /caixa/cinza -c "senha de login do cofre && lista de plugins do cofre" | grep couchbase |
Observação: no comando anterior, nomeamos o contêiner abóbada de sofáSe você usar o comando acima, executará os comandos do vault dentro do contêiner que executa o HashiCorp Vault.
A saída desse comando deve listar o plug-in do couchbase:
1 |
couchbase-banco de dados-plug-in banco de dados v0.9.0+incorporado |
Se quiser experimentar o Vault, você pode usar o comando abaixo para abrir um shell dentro do contêiner que está executando o Vault:
1 |
doca executar -ele "couchbase_vault" /caixa/cinza |
Você pode se autenticar com o token raiz que configuramos anteriormente:
1 |
cofre login senha |
Se você não estiver familiarizado com o Vault, não deixe de conferir o Documentação de comandos.
Etapa 3: iniciar um servidor Couchbase de demonstração
Abra uma nova janela de terminal e execute o seguinte comando para iniciar o Couchbase:
1 2 3 4 5 6 7 8 9 10 11 |
doca executar -ele --rm \ --rede dev_couchbase \ --nome="couchbase_main" \ -e NOME DE USUÁRIO DO COUCHBASE=Administrador \ -e COUCHBASE_PASSWORD=senha \ -w /optar/couchbase \ -p 8091-8094:8091-8094 \ -p 11210:11210 \ -p 18091-18094:18091-18094 \ --saúde-cmd "curl --fail http://localhost:8091/ui/index.html || exit 1" --saúde-intervalo=5s --saúde-tempo limite=3s --saúde-tentativas=10 --saúde-iniciar-período=5s \ couchbase/servidor:7.1.3 |
Etapa 4: Configurar o servidor Couchbase
Abra um terceiro terminal. Usaremos esse terminal para executar comandos do Docker para configurar o Vault e o Couchbase nas próximas etapas.
-
- Inicializar nosso cluster do Couchbase
1 2 3 4 5 6 7 8 9 10 11 |
doca executar -ele couchbase_principal \ ./caixa/couchbase-cli agrupamento-inicial \ -c couchbase://127.0.0.1 \ --agrupamento-nome couchbase-playground \ --agrupamento-nome de usuário Administrador \ --agrupamento-senha senha \ --serviços dados,índice,consulta,fts \ --agrupamento-tamanho de rams 2048 \ --agrupamento-índice-tamanho de rams 512 \ --índice-armazenamento-configuração padrão \ --nó-para-nó-criptografia desligado |
-
- Importar alguns dados de amostra
1 2 3 4 |
doca executar -ele couchbase_principal \ enrolar -v http://localhost:8091/sampleBuckets/install \ -u Administrador:senha \ -d '["gamesim-sample", "travel-sample", "beer-sample"]' |
É hora de inspecionar nosso cluster usando a interface do usuário. Você pode abrir o console em http://localhost:8091 e usar Administrador como nome de usuário e senha como senha para fazer login.
Etapa 5: Criar um usuário do Couchbase Server
Agora que o Vault está configurado e o Couchbase Server está em execução, precisamos criar um usuário do Couchbase. Esse usuário será usado pelo plug-in do Couchbase Vault para acessar o Couchbase Server e criar usuários sob demanda.
1 2 3 4 5 6 7 8 9 10 |
doca executar -ele couchbase_principal \ ./caixa/couchbase-cli usuário-gerenciar \ --agrupamento http://127.0.0.1 \ --nome de usuário Administrador \ --senha senha \ --definir \ --rbac-nome de usuário couchbase-cofre-usuário \ --rbac-senha senha \ --funções administrador \ --autenticação-domínio local |
Depois que o usuário for criado, ele também aparecerá como um usuário na interface do usuário:
Etapa 6: Integração do Vault e do Couchbase Server
Agora que o Vault e o Couchbase Server estão configurados, precisamos integrá-los. Siga estas etapas:
-
- Ativar o mecanismo de banco de dados do Vault
1 |
doca executar -ele "couchbase_vault" /caixa/cinza -c "senha de login do cofre && segredos do cofre ativam o banco de dados" |
-
- Inicializar o plug-in do servidor Couchbase
1 |
doca executar -ele "couchbase_vault" /caixa/cinza -c 'PEM=$(wget -O - http://Administrator:password@couchbase_main:8091/pools/default/certificate|base64 -w0) && vault login password && vault write database/config/demo-db plugin_name="couchbase-database-plugin" hosts="couchbases://couchbase_main" username=couchbase-vault-user password=password tls=true insecure_tls=true base64pem=${PEM} allowed_roles=*' |
Deixe-me explicar o comando acima com um pouco mais de detalhes.
- Usando wget baixamos o certificado do Couchbase Server, pois precisaremos dele mais tarde.
- Faça login no Vault com login no cofre.
- Criar um banco de dados de demonstração usando a configuração plug-in de banco de dados do couchbase. Precisamos especificar nosso servidor Couchbase e um usuário (couchbase-vault-user) para se conectar a ele.
Observe: especificamos allowed_roles para ser * o que não é recomendado na produção, pois permitirá a criação de um usuário do Couchbase com quaisquer funções disponíveis.
-
- Gire a senha do usuário do couchbase
Como usamos uma senha muito insegura para configurar a conexão entre o Couchbase Server e o Vault, é importante alterar a senha executando o comando abaixo:
1 |
doca executar -ele "couchbase_vault" /caixa/cinza -c "senha de login do vault && vault write -f database/rotate-root/demo-db" |
Vamos validar se a senha foi de fato alterada. Podemos fazer isso tentando fazer login como couchbase-vault-user usando a interface do usuário do Couchbase.
Você deverá ver uma mensagem de erro Falha no login. Isso confirma que o Vault foi capaz de girar a senha do usuário que o Vault usa para se comunicar com o Couchbase Server:
Etapa 7: criar uma política de demonstração do Vault
Por fim, precisamos criar uma política do Vault. Use o comando vault policy. Essa política será usada para criar novos usuários no Couchbase
O comando abaixo criará uma função HashiCorp Vault que pode criar usuários com funções ro_admin no Couchbase.
1 |
doca executar -ele "couchbase_vault" /caixa/cinza -c 'vault login password && vault write database/roles/couchbase-ro-admin-role db_name=demo-db default_ttl="5m" max_ttl="1h" creation_statements='\''{"roles":[{"role":"ro_admin"}]}'\''' |
Etapa 8: Testar a integração
Agora que a integração está concluída, podemos testá-la. Siga estas etapas:
-
- Criar um usuário
1 |
doca executar -ele "couchbase_vault" /caixa/cinza -c "vault login password && vault read database/creds/couchbase-ro-admin-role" |
Se tudo estiver configurado corretamente, você verá a criação de um novo usuário como o mostrado abaixo:
1 2 3 4 5 6 7 |
Chave Valor --- ----- arrendamento_id banco de dados/créditos/couchbase-ro-administrador-função/8EeLw4eerXDMeMZuG37wgBxA arrendamento_duração 5m arrendamento_renováveis verdadeiro senha ujkm5Da-BrG-WcOJLEdQ nome de usuário V_TOKEN_COUCHBASE-RO-ADMIN-ROLE_ZAIDHM1UCOED9XDSTECN_1686320194 |
Agora você pode usar esse usuário para fazer login no Couchbase ou usar a interface do usuário para ver se o usuário realmente existe:
Observação: este usuário tem um contrato de locação de cinco minutos. Se você esperar cinco minutos, o usuário será desprovisionado automaticamente pelo Vault. Você pode usar o Vault para estender o contrato de locação ou para criar um novo usuário. Para obter mais informações, consulte Documentação do Vault.
Conclusão
A integração do Couchbase Server com o HashiCorp Vault é uma ótima maneira de proteger o acesso aos seus dados. Nesta postagem do blog, vimos como fazer exatamente isso. Seguindo as etapas descritas acima, você pode integrar facilmente o Couchbase Server ao HashiCorp Vault.
Tendo em mente que as etapas que descrevemos destinam-se apenas a testes e demonstrações, é fundamental entender que, quando se trata de implantações de produção seguras, é fundamental aderir às práticas recomendadas do setor. Para garantir que o servidor do Vault e do Couchbase estejam configurados e fortalecidos adequadamente, o que vai além do escopo deste artigo, recomendamos enfaticamente que você siga estas práticas recomendadas.
Há alguns aspectos a serem considerados ao criar contas de usuário no Couchbase. A criação de usuários é assíncrona no ns_server. Ele só estará disponível no nó em que a solicitação foi feita e, em seguida, será criado nos outros nós de forma assíncrona. Como exemplo, se você criasse um usuário a cada minuto e o excluísse, chegaria a 525600 usuários excluídos em um ano, o que ainda é seguro por muitos anos. Lembre-se de que a criação de milhões de usuários pode afetar o desempenho de criação de usuários do seu cluster e a criação de muitos milhões de usuários está além do que testamos até agora.