Servidor Couchbase

Cofre de chaves do Azure para credenciais

O Azure Key Vault pode armazenar nome de usuário e senha e gerenciar informações confidenciais no Azure. Depois que o Azure Key Vaults armazena as informações, os serviços do Azure que você especificar (e SOMENTE os serviços do Azure que você especificar) podem acessá-las

Nesta postagem do blog, mostrarei como usar o Azure Key Vault para armazenar as credenciais do Couchbase Server e acessá-las a partir de uma Função do Azure.

Esta postagem do blog sobre como armazenar credenciais e senhas de banco de dados no Azure Key Vault será baseada em postagens anteriores do blog sobre o Couchbase no Azure, portanto, revise-as antes de prosseguir:

Como sempre, se quiser acompanhar, você pode encontrar o fonte completa no GitHub.

Instalação e configuração do Couchbase Server

O restante desta postagem pressupõe que você tenha uma configuração do Couchbase Server no Azure. Você pode seguir os links acima para saber mais sobre esse processo (é fácil!).

Em minha configuração para esta postagem do blog, criei um cluster (que exigiu a criação de credenciais de administrador) e um único bucket chamado "mybucket".

Estou usando o Couchbase Enterprise Edition 5.5.2, pois é o mais fácil de configurar no Azure. A edição Community e as versões anteriores do Couchbase também devem funcionar bem.

Criação de um cofre de chaves do Azure

Um Azure Key Vault pode ser criado com a UI do Portal do Azure ou você pode criá-lo com a linha de comando. Em uma postagem anterior sobre o uso do Operador de Kubernetes do Couchbase com o AzureTambém usei a linha de comando. Talvez você queira revisar isso se não tiver usado o Linha de comando do Azure utilidade antes.

A primeira etapa só precisa ser executada uma vez por assinatura do Azure. Supondo que sua linha de comando esteja definida para a assinatura desejada, registre o Azure Key Vault nessa assinatura com este comando:

A próxima etapa é criar um vault. Com esse comando, você precisa especificar um grupo de recursos. Criei um grupo de recursos antecipadamente chamado "KeyVaultDemo". Também decidi usar a região Centro-Norte dos EUA do Azure.

O Azure levará alguns instantes para ser concluído (mas o processo é assíncrono, portanto, o prompt da linha de comando será exibido imediatamente). A linha de comando lhe dirá como verificar o progresso.

Agora que você criou o nome de usuário e a senha do armazenamento no Azure Key Vault, pode começar a colocar seus segredos nele. Vou armazenar 4 informações em meu cofre com esses 4 comandos:

(Observação: eu editei algumas das informações secretas usando Xs)

Você pode navegar pelos seus segredos no Portal do Azure.

Azure Portal UI showing the Azure Key Vault

Benefícios do Azure Key Vault

Antes de prosseguirmos, vamos falar sobre por que você deve usar o Azure Key Vault.

Nas postagens anteriores do blog, armazenei as credenciais do Couchbase como configurações do aplicativo. Em comparação com as configurações do aplicativo, o Azure Key Vault oferece os seguintes recursos de credenciais:

  • O App Settings armazena valores como texto simples. O Azure Key Vault os armazena criptografados.
  • Cada aplicativo tem suas próprias configurações de aplicativo. Com o Azure Key Vault, cada um de seus aplicativos pode compartilhar um único cofre de chaves.
  • O Azure Key Vault armazena um histórico de versões de valores, e cada segredo tem uma data de ativação (opcional) e uma data de expiração.

O Azure Key Vault não substituir configurações do aplicativo. O uso do Azure Key Vault é melhor quando você deseja armazenar com segurança informações confidenciais (como credenciais/senhas/chaves de API) e/ou usá-las em vários serviços.

Preparando o Azure Functions para o Azure Key Vault

Em um postagem anterior do blog sobre o Azure FunctionsNo exemplo anterior, armazenei as credenciais do Couchbase nas configurações do aplicativo. Agora que tenho essas credenciais em um Azure Key Vault, vou alterar meu código do Azure Functions para usar o Azure Key Vault.

Primeiro, criei um serviço do Azure Functions. Você pode criar isso a partir da interface do usuário do Portal do Azure ou diretamente do Visual Studio ou do Visual Studio Code. Desta vez, usei o Visual Studio Code (para obter mais informações, consulte a seção Extensão do Azure Functions). Aconteceu de eu nomear meu serviço do Azure Functions como cbkeyvaultdemo.

Em seguida, anotei os URIs de cada um dos segredos que criei. Tenho 4 segredos, portanto, preciso de 4 URIs ("Identificador de segredo", como nesta captura de tela):

Azure Key Vault URIs

Criei quatro constantes e colei esses valores em meu código. (Talvez você queira armazená-los nas configurações do aplicativo).

A próxima etapa é instalar alguns pacotes com o NuGet: Microsoft.Azure.Services.AppAuthentication e Microsoft.Azure.KeyVault. Aqui está um exemplo de instalação desses pacotes com a linha de comando:

Obtenção de segredos do Azure Key Vault

A próxima etapa é escrever algum código para buscar os valores secretos do Azure Key Vault. Criei uma pequena função auxiliar que poderia reutilizar:

Como antes, usarei Inicialização preguiçosa nessa função do Azure. Esta é a aparência ao usar as configurações do aplicativo (antes):

E aqui está como ele fica quando eu o mudo para usar o GetBucket método auxiliar (depois):

Um aspecto importante a ser observado sobre essa função auxiliar. Obter segredos do Azure Key Vault é uma operação assíncrona. No entanto, Preguiçoso espera um lambda síncrono. Uma opção é usar o AsyncLazy. Outra opção (que foi o que eu fiz) é chamar um método assíncrono de forma síncrona usando Resultado.

Onde foi que cliente de onde vem? Fácil, eu adicionei cliente HttpClient estático privado = novo HttpClient(); para a classe. Você pode Confira o código-fonte completo no GitHub.

Segui principalmente esta excelente postagem do blog de Jeff Hollan chamada Obtendo segredos do cofre de chaves no Azure Functions (exceto que ele armazenou uma string de conexão do EventHub e eu estou armazenando credenciais do Couchbase).

Autorização

Você pode estar se perguntando: Matt, por que você publicou os URIs reais em seu código de exemplo?

Isso ocorre porque os URIs em si não são segredos confidenciais. Somente os serviços autorizados pelo Azure podem realmente obter informações úteis desses URIs.

Para autorizar esse serviço do Azure Function, você precisa fazer duas coisas:

  1. Habilitar uma identidade de serviço gerenciado para o serviço do Azure Functions. Para isso, basta clicar em "Managed service identity" (Identidade do serviço gerenciado) no portal do Azure e alterar a opção "off" (desligado) para "on" (ligado).

Managed Service Identity

  1. Adicionar uma política de acesso ao Azure Key Vault. Basta localizar o Azure Key Vault na interface de usuário do portal do Azure, clicar em "Políticas de acesso" em configurações e adicionar uma nova política de acesso. Você pode definir permissões refinadas para acessar a chave, o segredo e os certificados (que o Azure Key Vault também pode armazenar, a propósito). Eu só precisava de permissões "Get", portanto, minha política de acesso era muito simples:

Access policy

É isso aí. Mas sem essa etapa importante, o cofre de chaves não permitirá que nenhuma pessoa ou aplicativo obtenha uma chave.

Resumo e próximas etapas

Em vez de implantar o Azure Functions (ou outros serviços de aplicativos) com as credenciais do Couchbase armazenadas nas configurações do aplicativo, agora podemos colocar essas credenciais (e quaisquer outras informações confidenciais) em um Azure Key Vault.

Damos permissão ao(s) aplicativo(s) para acessar os segredos no cofre, e o Azure impedirá que qualquer outra pessoa obtenha esses segredos.

Os aplicativos extraem os segredos do Azure Key Vault.

Se você tiver alguma dúvida sobre esta postagem do blog, fique à vontade para deixar um comentário abaixo ou me encontrar em Twitter @mgroves.

Se você estiver usando o Couchbase com o Azure, todo o Comunidade Couchbase adoraríamos saber de sua experiência. Ou, se estiver apenas começando a usar o Couchbase com o Azure, você também pode encontrar e perguntar a outros membros da comunidade para obter seus conselhos ou recomendações de alto nível.

Se você tiver uma pergunta técnica específica sobre o Couchbase, consulte a seção Fóruns do Couchbase.

Compartilhe este artigo
Receba atualizações do blog do Couchbase em sua caixa de entrada
Esse campo é obrigatório.

Autor

Postado por Matthew Groves

Matthew D. Groves é um cara que adora programar. Não importa se é C#, jQuery ou PHP: ele enviará solicitações de pull para qualquer coisa. Ele tem programado profissionalmente desde que escreveu um aplicativo de ponto de venda QuickBASIC para a pizzaria de seus pais nos anos 90. Atualmente, ele trabalha como gerente sênior de marketing de produtos da Couchbase. Seu tempo livre é passado com a família, assistindo aos Reds e participando da comunidade de desenvolvedores. Ele é autor de AOP in .NET, Pro Microservices in .NET, autor da Pluralsight e Microsoft MVP.

Deixe um comentário

Pronto para começar a usar o Couchbase Capella?

Iniciar a construção

Confira nosso portal do desenvolvedor para explorar o NoSQL, procurar recursos e começar a usar os tutoriais.

Use o Capella gratuitamente

Comece a trabalhar com o Couchbase em apenas alguns cliques. O Capella DBaaS é a maneira mais fácil e rápida de começar.

Entre em contato

Deseja saber mais sobre as ofertas do Couchbase? Deixe-nos ajudar.