{"id":5877,"date":"2018-10-10T06:31:20","date_gmt":"2018-10-10T13:31:20","guid":{"rendered":"http:\/\/www.couchbase.com\/blog\/?p=5877"},"modified":"2025-06-13T19:27:58","modified_gmt":"2025-06-14T02:27:58","slug":"azure-key-vault-credentials","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/pt\/azure-key-vault-credentials\/","title":{"rendered":"Cofre de chaves do Azure para credenciais"},"content":{"rendered":"<div class=\"paragraph\">\n<p><span style=\"font-weight: 400\">O Azure Key Vault pode armazenar nome de usu\u00e1rio e senha e gerenciar informa\u00e7\u00f5es confidenciais no Azure. Depois que o Azure Key Vaults armazena as informa\u00e7\u00f5es, os servi\u00e7os do Azure que voc\u00ea especificar (e SOMENTE os servi\u00e7os do Azure que voc\u00ea especificar) podem acess\u00e1-las<\/span><\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Nesta postagem do blog, mostrarei como usar o Azure Key Vault para armazenar as credenciais do Couchbase Server e acess\u00e1-las a partir de uma Fun\u00e7\u00e3o do Azure.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Esta postagem do blog sobre como armazenar credenciais e senhas de banco de dados no Azure Key Vault ser\u00e1 baseada em postagens anteriores do blog sobre o Couchbase no Azure, portanto, revise-as antes de prosseguir:<\/p>\n<\/div>\n<div class=\"ulist\">\n<ul>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/azure-getting-started-easy-free\/\">Azure: Come\u00e7ar a usar \u00e9 f\u00e1cil e gratuito<\/a><\/li>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/azure-functions-lazy-initialization-couchbase-server\/\">Azure Functions e Lazy Initialization com o Couchbase Server<\/a><\/li>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/azure-functions-couchbase-server-video\/\">Azure Functions com o Couchbase Server (v\u00eddeo)<\/a><\/li>\n<li>Essas informa\u00e7\u00f5es devem ser suficientes para que voc\u00ea se familiarize com o assunto, mas h\u00e1 muitas outras <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/tag\/azure\/\">postagens de blog envolvendo o Azure<\/a><\/li>\n<\/ul>\n<\/div>\n<div class=\"paragraph\">\n<p>Como sempre, se quiser acompanhar, voc\u00ea pode encontrar o <a href=\"https:\/\/github.com\/couchbaselabs\/blog-source-code\/tree\/master\/Groves\/114AzureKeyVault\/src\">fonte completa no GitHub<\/a>.<\/p>\n<\/div>\n<div class=\"sect1\">\n<h2 id=\"_installation_and_setup_of_couchbase_server\">Instala\u00e7\u00e3o e configura\u00e7\u00e3o do Couchbase Server<\/h2>\n<div class=\"sectionbody\">\n<div class=\"paragraph\">\n<p>O restante desta postagem pressup\u00f5e que voc\u00ea tenha uma configura\u00e7\u00e3o do Couchbase Server no Azure. Voc\u00ea pode seguir os links acima para saber mais sobre esse processo (\u00e9 f\u00e1cil!).<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Em minha configura\u00e7\u00e3o para esta postagem do blog, criei um cluster (que exigiu a cria\u00e7\u00e3o de credenciais de administrador) e um \u00fanico bucket chamado \"mybucket\".<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Estou usando o Couchbase Enterprise Edition 5.5.2, pois \u00e9 o mais f\u00e1cil de configurar no Azure. A edi\u00e7\u00e3o Community e as vers\u00f5es anteriores do Couchbase tamb\u00e9m devem funcionar bem.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"sect1\">\n<h2 id=\"_creating_an_azure_key_vault\">Cria\u00e7\u00e3o de um cofre de chaves do Azure<\/h2>\n<div class=\"sectionbody\">\n<div class=\"paragraph\">\n<p>Um Azure Key Vault pode ser criado com a UI do Portal do Azure ou voc\u00ea pode cri\u00e1-lo <a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/key-vault\/key-vault-manage-with-cli2\">com a linha de comando<\/a>. Em uma postagem anterior sobre o uso do <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/aks-couchbase-kubernetes-operator\/\">Operador de Kubernetes do Couchbase com o Azure<\/a>Tamb\u00e9m usei a linha de comando. Talvez voc\u00ea queira revisar isso se n\u00e3o tiver usado o <a href=\"https:\/\/docs.microsoft.com\/en-us\/cli\/azure\/get-started-with-azure-cli\">Linha de comando do Azure<\/a> utilidade antes.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>A primeira etapa s\u00f3 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:<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre class=\"highlight decode:true\"><code class=\"language-PowerShell\">PS C:\\&gt; az provider register -n Microsoft.KeyVault<\/code><\/pre>\n<\/div>\n<\/div>\n<div class=\"paragraph\">\n<p>A pr\u00f3xima etapa \u00e9 criar um vault. Com esse comando, voc\u00ea precisa especificar um grupo de recursos. Criei um grupo de recursos antecipadamente chamado \"KeyVaultDemo\". Tamb\u00e9m decidi usar a regi\u00e3o Centro-Norte dos EUA do Azure.<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre class=\"highlight decode:true\"><code class=\"language-PowerShell\">PS C:\\&gt; az keyvault create --name 'MyCouchbaseKeyVault' --resource-group KeyVaultDemo --location 'North Central US'<\/code><\/pre>\n<\/div>\n<\/div>\n<div class=\"paragraph\">\n<p>O Azure levar\u00e1 alguns instantes para ser conclu\u00eddo (mas o processo \u00e9 ass\u00edncrono, portanto, o prompt da linha de comando ser\u00e1 exibido imediatamente). A linha de comando lhe dir\u00e1 como verificar o progresso.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Agora que voc\u00ea criou o nome de usu\u00e1rio e a senha do armazenamento no Azure Key Vault, pode come\u00e7ar a colocar seus segredos nele. Vou armazenar 4 informa\u00e7\u00f5es em meu cofre com esses 4 comandos:<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre class=\"highlight decode:true\"><code class=\"language-PowerShell\">PS C:\\&gt; az keyvault secret set --vault-name 'MyCouchbaseKeyVault' --name 'cbUsername' --value 'cbAdminUsername'\r\nPS C:\\&gt; az keyvault secret set --vault-name 'MyCouchbaseKeyVault' --name 'cbPassword' --value 'r6#Y%2^XXXXX'\r\nPS C:\\&gt; az keyvault secret set --vault-name 'MyCouchbaseKeyVault' --name 'cbBucketName' --value 'mybucket'\r\nPS C:\\&gt; az keyvault secret set --vault-name 'MyCouchbaseKeyVault' --name 'cbClusterUri' --value 'https:\/\/52.162.XXX.XXX:8091'<\/code><\/pre>\n<\/div>\n<\/div>\n<div class=\"paragraph\">\n<p><em>(Observa\u00e7\u00e3o: eu editei algumas das informa\u00e7\u00f5es secretas usando Xs)<\/em><\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Voc\u00ea pode navegar pelos seus segredos no Portal do Azure.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p><span class=\"image\"><img decoding=\"async\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/10\/11401-azure-key-vault-ui.png\" alt=\"Azure Portal UI showing the Azure Key Vault\" \/><\/span><\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"sect1\">\n<h2 id=\"_benefits_of_azure_key_vault\">Benef\u00edcios do Azure Key Vault<\/h2>\n<div class=\"sectionbody\">\n<div class=\"paragraph\">\n<p>Antes de prosseguirmos, vamos falar sobre <em>por que<\/em> voc\u00ea deve usar o Azure Key Vault.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Nas postagens anteriores do blog, armazenei as credenciais do Couchbase como configura\u00e7\u00f5es do aplicativo. Em compara\u00e7\u00e3o com as configura\u00e7\u00f5es do aplicativo, o Azure Key Vault oferece os seguintes recursos de credenciais:<\/p>\n<\/div>\n<div class=\"ulist\">\n<ul>\n<li>O App Settings armazena valores como texto simples. O Azure Key Vault os armazena criptografados.<\/li>\n<li>Cada aplicativo tem suas pr\u00f3prias configura\u00e7\u00f5es de aplicativo. Com o Azure Key Vault, cada um de seus aplicativos pode compartilhar um \u00fanico cofre de chaves.<\/li>\n<li>O Azure Key Vault armazena um hist\u00f3rico de vers\u00f5es de valores, e cada segredo tem uma data de ativa\u00e7\u00e3o (opcional) e uma data de expira\u00e7\u00e3o.<\/li>\n<\/ul>\n<\/div>\n<div class=\"paragraph\">\n<p>O Azure Key Vault n\u00e3o <em>substituir<\/em> configura\u00e7\u00f5es do aplicativo. O uso do Azure Key Vault \u00e9 melhor quando voc\u00ea deseja armazenar com seguran\u00e7a informa\u00e7\u00f5es confidenciais (como credenciais\/senhas\/chaves de API) e\/ou us\u00e1-las em v\u00e1rios servi\u00e7os.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"sect1\">\n<h2 id=\"_getting_azure_functions_ready_for_azure_key_vault\">Preparando o Azure Functions para o Azure Key Vault<\/h2>\n<div class=\"sectionbody\">\n<div class=\"paragraph\">\n<p>Em um <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/azure-functions-lazy-initialization-couchbase-server\/\">postagem anterior do blog sobre o Azure Functions<\/a>No exemplo anterior, armazenei as credenciais do Couchbase nas configura\u00e7\u00f5es do aplicativo. Agora que tenho essas credenciais em um Azure Key Vault, vou alterar meu c\u00f3digo do Azure Functions para usar o Azure Key Vault.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Primeiro, criei um servi\u00e7o do Azure Functions. Voc\u00ea pode criar isso a partir da interface do usu\u00e1rio 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\u00e7\u00f5es, consulte a se\u00e7\u00e3o <a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=ms-azuretools.vscode-azurefunctions\">Extens\u00e3o do Azure Functions<\/a>). Aconteceu de eu nomear meu servi\u00e7o do Azure Functions como <strong>cbkeyvaultdemo<\/strong>.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>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):<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p><span class=\"image\"><img decoding=\"async\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/10\/11402-azure-key-vault-uris.png\" alt=\"Azure Key Vault URIs\" \/><\/span><\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Criei quatro constantes e colei esses valores em meu c\u00f3digo. (Talvez voc\u00ea queira armazen\u00e1-los nas configura\u00e7\u00f5es do aplicativo).<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre class=\"highlight decode:true\"><code class=\"language-C#\">const string Vault_Bucketname_Uri = \"https:\/\/mycouchbasekeyvault.vault.azure.net\/secrets\/cbBucketName\/1bda709e1372465a8f03b6e8c3fb6014\";\r\nconst string Vault_Clusteruri_Uri = \"https:\/\/mycouchbasekeyvault.vault.azure.net\/secrets\/cbClusterUri\/48605e696b3645a6a7c396a15d636dc2\";\r\nconst string Vault_Username_Uri = \"https:\/\/mycouchbasekeyvault.vault.azure.net\/secrets\/cbUsername\/7d73ef5fa2174e5491d4a50a42bb0800\";\r\nconst string Vault_Password_Uri = \"https:\/\/mycouchbasekeyvault.vault.azure.net\/secrets\/cbPassword\/d6f61ff7e41a4fdcbe17de0b1fe1f115\";<\/code><\/pre>\n<\/div>\n<\/div>\n<div class=\"paragraph\">\n<p>A pr\u00f3xima etapa \u00e9 instalar alguns pacotes com o NuGet: <a href=\"https:\/\/www.nuget.org\/packages\/Microsoft.Azure.Services.AppAuthentication\">Microsoft.Azure.Services.AppAuthentication<\/a> e <a href=\"https:\/\/www.nuget.org\/packages\/Microsoft.Azure.KeyVault\/\">Microsoft.Azure.KeyVault<\/a>. Aqui est\u00e1 um exemplo de instala\u00e7\u00e3o desses pacotes com a linha de comando:<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre class=\"highlight decode:true\"><code class=\"language-PowerShell\">C:\\&gt; dotnet add package Microsoft.Azure.Services.AppAuthentication\r\nC:\\&gt; dotnet add package Microsoft.Azure.KeyVault<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"sect1\">\n<h2 id=\"_getting_secrets_from_azure_key_vault\">Obten\u00e7\u00e3o de segredos do Azure Key Vault<\/h2>\n<div class=\"sectionbody\">\n<div class=\"paragraph\">\n<p>A pr\u00f3xima etapa \u00e9 escrever algum c\u00f3digo para buscar os valores secretos do Azure Key Vault. Criei uma pequena fun\u00e7\u00e3o auxiliar que poderia reutilizar:<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre class=\"highlight decode:true\"><code class=\"language-C#\">private static string GetSecret(string url)\r\n{\r\n    var azureServiceTokenProvider = new AzureServiceTokenProvider();\r\n    var kvClient = new KeyVaultClient(\r\n        new KeyVaultClient.AuthenticationCallback(\r\n            azureServiceTokenProvider.KeyVaultTokenCallback), client);\r\n    var secret = kvClient.GetSecretAsync(url).Result.Value;\r\n    return secret;\r\n}<\/code><\/pre>\n<\/div>\n<\/div>\n<div class=\"paragraph\">\n<p>Como antes, usarei <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/azure-functions-lazy-initialization-couchbase-server\/\">Inicializa\u00e7\u00e3o pregui\u00e7osa<\/a> nessa fun\u00e7\u00e3o do Azure. Esta \u00e9 a apar\u00eancia ao usar as configura\u00e7\u00f5es do aplicativo (antes):<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre class=\"highlight decode:true\"><code class=\"language-C#\">private static readonly Lazy&lt;IBucket&gt; Bucket = new Lazy&lt;IBucket&gt;(() =&gt;\r\n{\r\n\tvar uri = Environment.GetEnvironmentVariable(\"couchbaseUri\");\r\n\tvar bucketName = Environment.GetEnvironmentVariable(\"couchbaseBucketName\");\r\n\tvar username = Environment.GetEnvironmentVariable(\"couchbaseUsername\");\r\n\tvar password = Environment.GetEnvironmentVariable(\"couchbasePassword\");\r\n\r\n\tvar cluster = new Cluster(new ClientConfiguration\r\n\t{\r\n\t\tServers = new List&lt;Uri&gt; { new Uri(uri) }\r\n\t});\r\n\tcluster.Authenticate(username, password);\r\n\treturn cluster.OpenBucket(bucketName);\r\n});<\/code><\/pre>\n<\/div>\n<\/div>\n<div class=\"paragraph\">\n<p>E aqui est\u00e1 como ele fica quando eu o mudo para usar o <code>GetBucket<\/code> m\u00e9todo auxiliar (depois):<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre class=\"highlight decode:true\"><code class=\"language-C#\">private static readonly Lazy&lt;IBucket&gt; Bucket = new Lazy&lt;IBucket&gt;(() =&gt;\r\n{\r\n    var uri = GetSecret(Vault_Clusteruri_Uri);\r\n    var bucketName = GetSecret(Vault_Bucketname_Uri);\r\n    var username = GetSecret(Vault_Username_Uri);\r\n    var password = GetSecret(Vault_Password_Uri);\r\n    var cluster = new Cluster(new ClientConfiguration\r\n    {\r\n        Servers = new List&lt;Uri&gt; { new Uri(uri) }\r\n    });\r\n    cluster.Authenticate(username, password);\r\n    return cluster.OpenBucket(bucketName);\r\n});<\/code><\/pre>\n<\/div>\n<\/div>\n<div class=\"paragraph\">\n<p>Um aspecto importante a ser observado sobre essa fun\u00e7\u00e3o auxiliar. Obter segredos do Azure Key Vault \u00e9 uma opera\u00e7\u00e3o ass\u00edncrona. No entanto, <code>Pregui\u00e7oso<\/code> espera um lambda s\u00edncrono. Uma op\u00e7\u00e3o \u00e9 usar o <a href=\"https:\/\/github.com\/StephenCleary\/AsyncEx\/wiki\/AsyncLazy\">AsyncLazy<\/a>. Outra op\u00e7\u00e3o (que foi o que eu fiz) \u00e9 chamar um m\u00e9todo ass\u00edncrono de forma s\u00edncrona usando <code>Resultado<\/code>.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p><strong>Onde foi que <code>cliente<\/code> de onde vem?<\/strong> F\u00e1cil, eu adicionei <code>cliente HttpClient est\u00e1tico privado = novo HttpClient();<\/code> para a classe. Voc\u00ea pode <a href=\"https:\/\/github.com\/couchbaselabs\/blog-source-code\/tree\/master\/Groves\/114AzureKeyVault\/src\">Confira o c\u00f3digo-fonte completo no GitHub<\/a>.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Segui principalmente esta excelente postagem do blog de Jeff Hollan chamada <a href=\"https:\/\/medium.com\/statuscode\/getting-key-vault-secrets-in-azure-functions-37620fd20a0b\">Obtendo segredos do cofre de chaves no Azure Functions<\/a> (exceto que ele armazenou uma string de conex\u00e3o do EventHub e eu estou armazenando credenciais do Couchbase).<\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"sect1\">\n<h2 id=\"_authorization\">Autoriza\u00e7\u00e3o<\/h2>\n<div class=\"sectionbody\">\n<div class=\"paragraph\">\n<p>Voc\u00ea pode estar se perguntando: Matt, por que voc\u00ea publicou os URIs reais em seu c\u00f3digo de exemplo?<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Isso ocorre porque os URIs em si n\u00e3o s\u00e3o segredos confidenciais. Somente os servi\u00e7os autorizados pelo Azure podem realmente obter informa\u00e7\u00f5es \u00fateis desses URIs.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Para autorizar esse servi\u00e7o do Azure Function, voc\u00ea precisa fazer duas coisas:<\/p>\n<\/div>\n<div class=\"olist arabic\">\n<ol class=\"arabic\">\n<li><strong>Habilitar uma identidade de servi\u00e7o gerenciado<\/strong> para o servi\u00e7o do Azure Functions. Para isso, basta clicar em \"Managed service identity\" (Identidade do servi\u00e7o gerenciado) no portal do Azure e alterar a op\u00e7\u00e3o \"off\" (desligado) para \"on\" (ligado).<\/li>\n<\/ol>\n<\/div>\n<div class=\"paragraph\">\n<p><span class=\"image\"><img decoding=\"async\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/10\/11403-managed-service-identity.png\" alt=\"Managed Service Identity\" \/><\/span><\/p>\n<\/div>\n<div class=\"olist arabic\">\n<ol class=\"arabic\" start=\"2\">\n<li><strong>Adicionar uma pol\u00edtica de acesso ao Azure Key Vault<\/strong>. Basta localizar o Azure Key Vault na interface de usu\u00e1rio do portal do Azure, clicar em \"Pol\u00edticas de acesso\" em configura\u00e7\u00f5es e adicionar uma nova pol\u00edtica de acesso. Voc\u00ea pode definir permiss\u00f5es refinadas para acessar a chave, o segredo e os certificados (que o Azure Key Vault tamb\u00e9m pode armazenar, a prop\u00f3sito). Eu s\u00f3 precisava de permiss\u00f5es \"Get\", portanto, minha pol\u00edtica de acesso era muito simples:<\/li>\n<\/ol>\n<\/div>\n<div class=\"paragraph\">\n<p><span class=\"image\"><img decoding=\"async\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/10\/11404-access-policy.png\" alt=\"Access policy\" \/><\/span><\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>\u00c9 isso a\u00ed. Mas sem essa etapa importante, o cofre de chaves n\u00e3o permitir\u00e1 que nenhuma pessoa ou aplicativo obtenha uma chave.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"sect1\">\n<h2 id=\"_summary_and_next_steps\">Resumo e pr\u00f3ximas etapas<\/h2>\n<div class=\"sectionbody\">\n<div class=\"paragraph\">\n<p>Em vez de implantar o Azure Functions (ou outros servi\u00e7os de aplicativos) com as credenciais do Couchbase armazenadas nas configura\u00e7\u00f5es do aplicativo, agora podemos colocar essas credenciais (e quaisquer outras informa\u00e7\u00f5es confidenciais) em um Azure Key Vault.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Damos permiss\u00e3o ao(s) aplicativo(s) para acessar os segredos no cofre, e o Azure impedir\u00e1 que qualquer outra pessoa obtenha esses segredos.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Os aplicativos extraem os segredos do Azure Key Vault.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Se voc\u00ea tiver alguma d\u00favida sobre esta postagem do blog, fique \u00e0 vontade para deixar um coment\u00e1rio abaixo ou me encontrar em <a href=\"https:\/\/twitter.com\/mgroves\">Twitter @mgroves<\/a>.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Se voc\u00ea estiver usando o Couchbase com o Azure, todo o <a href=\"https:\/\/community.couchbase.com\/\">Comunidade Couchbase<\/a> adorar\u00edamos saber de sua experi\u00eancia. Ou, se estiver apenas come\u00e7ando a usar o Couchbase com o Azure, voc\u00ea tamb\u00e9m pode <a href=\"https:\/\/community.couchbase.com\/\">encontrar e perguntar a outros membros da comunidade<\/a> para obter seus conselhos ou recomenda\u00e7\u00f5es de alto n\u00edvel.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Se voc\u00ea tiver uma pergunta t\u00e9cnica espec\u00edfica sobre o Couchbase, consulte a se\u00e7\u00e3o <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/forums\/\">F\u00f3runs do Couchbase<\/a>.<\/p>\n<\/div>\n<\/div>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Azure Key Vault can store username and password and manage sensitive information in Azure. Once Azure Key Vaults stores the information, Azure services that you specify (and ONLY Azure services that you specify) can access it In this blog post, [&hellip;]<\/p>\n","protected":false},"author":71,"featured_media":3934,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1811,2225,1816,1813],"tags":[1673],"ppma_author":[8937],"class_list":["post-5877","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dotnet","category-cloud","category-couchbase-server","category-security","tag-microsoft-azure"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.3 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Azure Key Vault for Credentials, Store Username and Password<\/title>\n<meta name=\"description\" content=\"This Couchbase blog post demonstrates how Azure Key Vault can be utilized to store Couchbase Server credentials and access them from an Azure Function.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/pt\/azure-key-vault-credentials\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Azure Key Vault for Credentials\" \/>\n<meta property=\"og:description\" content=\"This Couchbase blog post demonstrates how Azure Key Vault can be utilized to store Couchbase Server credentials and access them from an Azure Function.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/pt\/azure-key-vault-credentials\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2018-10-10T13:31:20+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T02:27:58+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/08\/074-hero-Azure-Clouds.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"922\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Matthew Groves\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@mgroves\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Matthew Groves\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/azure-key-vault-credentials\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/azure-key-vault-credentials\\\/\"},\"author\":{\"name\":\"Matthew Groves\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/person\\\/3929663e372020321b0152dc4fa65a58\"},\"headline\":\"Azure Key Vault for Credentials\",\"datePublished\":\"2018-10-10T13:31:20+00:00\",\"dateModified\":\"2025-06-14T02:27:58+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/azure-key-vault-credentials\\\/\"},\"wordCount\":1280,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/azure-key-vault-credentials\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2017\\\/08\\\/074-hero-Azure-Clouds.jpg\",\"keywords\":[\"Microsoft Azure\"],\"articleSection\":[\".NET\",\"Couchbase Capella\",\"Couchbase Server\",\"Security\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/azure-key-vault-credentials\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/azure-key-vault-credentials\\\/\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/azure-key-vault-credentials\\\/\",\"name\":\"Azure Key Vault for Credentials, Store Username and Password\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/azure-key-vault-credentials\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/azure-key-vault-credentials\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2017\\\/08\\\/074-hero-Azure-Clouds.jpg\",\"datePublished\":\"2018-10-10T13:31:20+00:00\",\"dateModified\":\"2025-06-14T02:27:58+00:00\",\"description\":\"This Couchbase blog post demonstrates how Azure Key Vault can be utilized to store Couchbase Server credentials and access them from an Azure Function.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/azure-key-vault-credentials\\\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/azure-key-vault-credentials\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/azure-key-vault-credentials\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2017\\\/08\\\/074-hero-Azure-Clouds.jpg\",\"contentUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2017\\\/08\\\/074-hero-Azure-Clouds.jpg\",\"width\":1920,\"height\":922,\"caption\":\"National Cloud Database Day\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/azure-key-vault-credentials\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Azure Key Vault for Credentials\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/04\\\/admin-logo.png\",\"contentUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/04\\\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/person\\\/3929663e372020321b0152dc4fa65a58\",\"name\":\"Matthew Groves\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=gba51e6aacc53995c323a634e4502ef54\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g\",\"caption\":\"Matthew Groves\"},\"description\":\"Matthew D. Groves is a guy who loves to code. It doesn't matter if it's C#, jQuery, or PHP: he'll submit pull requests for anything. He has been coding professionally ever since he wrote a QuickBASIC point-of-sale app for his parent's pizza shop back in the 90s. He currently works as a Senior Product Marketing Manager for Couchbase. His free time is spent with his family, watching the Reds, and getting involved in the developer community. He is the author of AOP in .NET, Pro Microservices in .NET, a Pluralsight author, and a Microsoft MVP.\",\"sameAs\":[\"https:\\\/\\\/crosscuttingconcerns.com\",\"https:\\\/\\\/x.com\\\/mgroves\"],\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/pt\\\/author\\\/matthew-groves\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Azure Key Vault for Credentials, Store Username and Password","description":"Esta postagem do blog do Couchbase demonstra como o Azure Key Vault pode ser utilizado para armazenar as credenciais do Couchbase Server e acess\u00e1-las a partir de uma Fun\u00e7\u00e3o do Azure.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.couchbase.com\/blog\/pt\/azure-key-vault-credentials\/","og_locale":"pt_BR","og_type":"article","og_title":"Azure Key Vault for Credentials","og_description":"This Couchbase blog post demonstrates how Azure Key Vault can be utilized to store Couchbase Server credentials and access them from an Azure Function.","og_url":"https:\/\/www.couchbase.com\/blog\/pt\/azure-key-vault-credentials\/","og_site_name":"The Couchbase Blog","article_published_time":"2018-10-10T13:31:20+00:00","article_modified_time":"2025-06-14T02:27:58+00:00","og_image":[{"width":1920,"height":922,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/08\/074-hero-Azure-Clouds.jpg","type":"image\/jpeg"}],"author":"Matthew Groves","twitter_card":"summary_large_image","twitter_creator":"@mgroves","twitter_misc":{"Written by":"Matthew Groves","Est. reading time":"8 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/azure-key-vault-credentials\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/azure-key-vault-credentials\/"},"author":{"name":"Matthew Groves","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/3929663e372020321b0152dc4fa65a58"},"headline":"Azure Key Vault for Credentials","datePublished":"2018-10-10T13:31:20+00:00","dateModified":"2025-06-14T02:27:58+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/azure-key-vault-credentials\/"},"wordCount":1280,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/azure-key-vault-credentials\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/08\/074-hero-Azure-Clouds.jpg","keywords":["Microsoft Azure"],"articleSection":[".NET","Couchbase Capella","Couchbase Server","Security"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/azure-key-vault-credentials\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/azure-key-vault-credentials\/","url":"https:\/\/www.couchbase.com\/blog\/azure-key-vault-credentials\/","name":"Azure Key Vault for Credentials, Store Username and Password","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/azure-key-vault-credentials\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/azure-key-vault-credentials\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/08\/074-hero-Azure-Clouds.jpg","datePublished":"2018-10-10T13:31:20+00:00","dateModified":"2025-06-14T02:27:58+00:00","description":"Esta postagem do blog do Couchbase demonstra como o Azure Key Vault pode ser utilizado para armazenar as credenciais do Couchbase Server e acess\u00e1-las a partir de uma Fun\u00e7\u00e3o do Azure.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/azure-key-vault-credentials\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/azure-key-vault-credentials\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/azure-key-vault-credentials\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/08\/074-hero-Azure-Clouds.jpg","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/08\/074-hero-Azure-Clouds.jpg","width":1920,"height":922,"caption":"National Cloud Database Day"},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/azure-key-vault-credentials\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Azure Key Vault for Credentials"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"Blog do Couchbase","description":"Couchbase, o banco de dados NoSQL","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"Blog do Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/3929663e372020321b0152dc4fa65a58","name":"Matthew Groves","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=gba51e6aacc53995c323a634e4502ef54","url":"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g","caption":"Matthew Groves"},"description":"Matthew D. Groves \u00e9 um cara que adora programar. N\u00e3o importa se \u00e9 C#, jQuery ou PHP: ele enviar\u00e1 solicita\u00e7\u00f5es 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\u00eanior de marketing de produtos da Couchbase. Seu tempo livre \u00e9 passado com a fam\u00edlia, assistindo aos Reds e participando da comunidade de desenvolvedores. Ele \u00e9 autor de AOP in .NET, Pro Microservices in .NET, autor da Pluralsight e Microsoft MVP.","sameAs":["https:\/\/crosscuttingconcerns.com","https:\/\/x.com\/mgroves"],"url":"https:\/\/www.couchbase.com\/blog\/pt\/author\/matthew-groves\/"}]}},"acf":[],"authors":[{"term_id":8937,"user_id":71,"is_guest":0,"slug":"matthew-groves","display_name":"Matthew Groves","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/5877","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/users\/71"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=5877"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/5877\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media\/3934"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media?parent=5877"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=5877"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=5877"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=5877"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}