Menu Docs
Página inicial do Docs
/ /

Gerencie Chaves de consumidor com Azure Key Vault (Autenticação sem segredo)

Observação

Este recurso não está disponível para nenhuma das seguintes implantações:

  • M0 Clusters gratuitos

  • Clusters flexíveis

Para saber mais,consulte Limites.

O Atlas oferece suporte à autenticação sem segredo para usar o Azure Key Vault (AKV) com Encryption at Rest (EAR). Com esse modelo, você não precisa fornecer ao Atlas credenciais estáticas de longa duração (ID do locatário, ID do cliente e segredo do cliente). Em vez disso, você autoriza um Azure Service Principal gerenciado pelo Atlas em seu locatário do Azure e o Atlas autentica no AKV usando 2 0 tokens de acesso OAuth. de curta duração que o Azure Active Directory (Azure AD) emite.

Essa abordagem:

  • Elimina a necessidade de criar, armazenar e girar segredos de cliente no Atlas.

  • Centraliza o controle de acesso inteiramente no Azure usando as políticas de acesso do Azure RBAC ou do Key Vault.

  • Preserva o comportamento do EAR existente para seus clusters e aplicativos. Somente o mecanismo de autenticação muda

O Secretless EAR depende do Azure AD e do Azure Key Vault como limite de segurança. O Atlas não armazena segredos reutilizáveis gerenciados pelo cliente e, em vez disso, usa tokens emitidos pelo Azure no tempo de execução. O acesso é imposto usando permissões de privilégio mínimo e você pode remover as permissões do Azure para revogá-las imediatamente.

O Atlas usa a atribuição direta de função a um Service Principal gerenciado pelo Atlas para um modelo de autenticação mais simples e seguro.

Para habilitar chaves gerenciadas pelo cliente com AKV para um projeto MongoDB , você deve ter:

  • Um cluster M10 ou superior.

  • A conta do Azure e a chave de criptografia em seu AKV.

    Para saber como configurar estes componentes do Azure, consulte a Documentação do Azure.

    O Atlas utiliza estes recursos ao habilitar encryption at rest para um cluster no projeto Atlas.

  • Permissões no Azure para:

    • Registre um Enterprise Service Principal em seu locatário. Esse pré-requisito requer permissões do Microsoft Entra ID para adicionar ou gerenciar aplicativos corporativos, como administrador de aplicativos, administrador de aplicativos de nuvem ou administrador global.

      Para saber mais, consulte Início rápido: adicionar um aplicação empresarial .

    • Acesse a chave do Key Vault usando uma das seguintes opções:

  • Acesso de proprietário do projeto no Atlas para o projeto para o qual você deseja habilitar a encryption at rest.

Para usar uma chave gerenciada pelo cliente armazenada no AKV for EAR, o Service Principal gerenciado pelo Atlas deve ter permissão para realizar operações criptográficas na chave específica do Key Vault.

As permissões de chave necessárias incluem:

  • get

  • encrypt

  • decrypt

Você deve ter o escopo das permissões o mais restritivo possível e concedê-las usando uma das seguintes opções:

Para saber mais, consulte Início rápido: adicionar um aplicação empresarial .

Para configurar a Encryption at Rest (EAR) com autenticação sem segredo, você deve:

  1. Crie um Azure Service Principal gerenciado pelo Atlas.

  2. Conceda ao Service Principal acesso à sua chave do Key Vault.

  3. Configure o EAR para usar o Service Principal.

Crie um Azure Service Principal em seu locatário para o aplicação Azure de propriedade do Atlas e registre-o no Atlas usando a API Cloud Provider Access. O Atlas retorna um roleId que você usa quando habilita o EAR.

O Atlas utiliza a seguinte identidade de aplicação Azure:

atlasAzureAppId: 9efedfcc-2eca-4b27-a613-0cad1e114cb7
1

Execute o seguinte comando para recuperar a ID do locatário do recurso no qual o Service Principal existirá:

az account show --query tenantId -o tsv
2

Se já existir um Service Principal para o aplicação Atlas , execute o seguinte comando para localizá-lo:

az ad sp list --filter "appId eq '9efedfcc-2eca-4b27-a613-0cad1e114cb7'"

Se não existir, execute o seguinte comando para criá-lo:

az ad sp create --id 9efedfcc-2eca-4b27-a613-0cad1e114cb7

Na saída, copie o campo id , que é o ID do objeto principal de serviço que o Atlas exige.

3

Use a API de acesso ao fornecedor de nuvem:

Endpoint:

POST /api/atlas/v2/groups/{groupId}/cloudProviderAccess

exemplo de corpo da solicitação :

{
"providerName": "AZURE",
"tenantId": "<azure-tenant-id>",
"servicePrincipalId": "<service-principal-object-id>",
"atlasAzureAppId": "9efedfcc-2eca-4b27-a613-0cad1e114cb7"
}

O Atlas provisiona e gerencia o Service Principal e retorna um id valor de, que é o roleId necessário quando você configura o EAR.

Autorize o Service Principal de Serviços gerenciado pelo Atlas a executar operações criptográficas na chave do Key Vault usada para EAR.

Você pode conceder acesso usando as políticas de acesso do Azure RBAC ou do Key Vault.

Para conceder acesso usando o Azure RBAC:

1

Execute o seguinte comando:

az role assignment create \
--assignee-object-id "$SERVICE_PRINCIPAL_OBJECT_ID" \
--assignee-principal-type ServicePrincipal \
--role "Reader" \
--scope "/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.KeyVault/vaults/$KEY_VAULT_NAME"
2

Execute o seguinte comando:

az role assignment create \
--assignee-object-id "$SERVICE_PRINCIPAL_OBJECT_ID" \
--assignee-principal-type ServicePrincipal \
--role "Key Vault Crypto User" \
--scope "/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.KeyVault/vaults/$KEY_VAULT_NAME"

Observação

Você também pode usar um função personalizada, desde que ele conceda permissões de chave equivalentes.

Se o seu Key Vault usar políticas de acesso, execute o seguinte comando para conceder permissões de chave diretamente:

az keyvault set-policy \
--subscription "$SUBSCRIPTION_ID" \
--resource-group "$RESOURCE_GROUP" \
--name "$KEY_VAULT_NAME" \
--object-id "$SERVICE_PRINCIPAL_OBJECT_ID" \
--key-permissions get encrypt decrypt wrapKey unwrapKey

Depois de registrar e autorizar o Service Principal no Azure, atualize sua configuração do EAR com o roleId que a API do Cloud Provider Access retornou.

1
  1. Se ainda não tiver sido exibido, selecione a organização que contém seu projeto no menu Organizations na barra de navegação.

  2. Se ainda não estiver exibido, selecione seu projeto no menu Projects na barra de navegação.

  3. Na barra lateral, clique em Database & Network Access sob o título Security.

  4. Na barra lateral, clique em Advanced.

    A página Avançado é exibida.

2
3
4

O Atlas suporta dois métodos de autenticação para AKV:

5

ID de Inscrição

Insira o Subscription ID do Key Vault.

Nome do Grupo de Recursos

Insira o nome Resource Group de um Azure Resource Group contendo o Key Vault.

Nome do Key Vault

Insira o nome do Key Vault. Certifique-se de que o Key Vault tenha as políticas de acesso necessárias. Para saber mais, consulte Acesso necessário.

Observação

Você não pode modificar a configuração do AKV aqui depois de habilitar e configurar conexões de endpoints privados para o AKV.

6

Identificador de chave

Insira a URL completa da chave criada no Key Vault.

IMPORTANTE: o identificador de chave deve ser fornecido no formato geral do Azure:

https://{keyvault-name}.vault.azure.net/{object-type}/{object-name}/{object-version}
7

Para saber mais, consulte Habilitar e configurar conexões de endpoint privado para um projeto

8

Se você configurou o Atlas utilizando a API de Administração do Atlas para se comunicar com AKV utilizando o Azure Private Link para garantir que todo o tráfego entre o Atlas e o Key Vault ocorra através das interfaces de rede privada do Azure, o Atlas definirá o status do Require Private Networking como Active. Se o status for Inactive, você poderá, opcionalmente, concluir as etapas para Habilitar e configurar conexões de endpoint privado para um projeto se quiser que o Atlas use conexões de endpoint privado para seu AKV.

9

O Atlas exibe um banner no console do Atlas durante o processo de criptografia.

Endpoint:

PATCH /api/atlas/v2/groups/{groupId}/encryptionAtRest

exemplo de corpo da solicitação :

{
"azureKeyVault": {
"enabled": true,
"roleId": "<atlas-managed-roleId>",
"subscriptionID": "<subscription-id>",
"resourceGroupName": "<resource-group>",
"keyVaultName": "<key-vault-name>",
"keyIdentifier": "https://<vault>.vault.azure.net/keys/<key>/<version>",
"azureEnvironment": "AZURE"
}
}

Após esta atualização, o Atlas autentica no AKV utilizando tokens de curta duração do Azure AD em vez de credenciais estáticas.

Se o seu projeto já utilizar credenciais estáticas (tenantId, clientId, secret), você poderá migrar sem tempo de inatividade do cluster.

  1. Crie um Service Principal gerenciado pelo Atlas.

  2. Conceda permissões ao Key Vault.

  3. Corrija a configuração do EAR com o novo roleId.

Se a validação falhar, o Atlas continuará usando credenciais estáticas.

Se a validação for bem-sucedida, o Atlas removerá as credenciais estáticas armazenadas e o roleId se tornará a fonte da verdade para a autenticação.

Se o cluster usar rede privada, o Atlas validará o acesso ao Key Vault de forma assíncrona a partir dos nós de dados.

  • A validação não é concluída imediatamente quando a solicitação PATCH é aceita.

  • Os nós de dados validam o acesso ao Key Vault depois que a configuração é aplicada.

Antes de corrigir o EAR com roleId, certifique-se de que todas as permissões do Key Vault estejam configuradas corretamente. O acesso mal configurado pode resultar em falhas de validação nos nós de dados, o que pode eventualmente interromper as operações do EAR e levar ao desligamento do cluster.

Antes de corrigir o EAR, verifique se o Service Principal tem as permissões necessárias do Key Vault.

Execute o seguinte comando:

az role assignment list \
--assignee "$SERVICE_PRINCIPAL_OBJECT_ID" \
--scope "/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.KeyVault/vaults/$KEY_VAULT_NAME"

Confirme que a função atribuída concede permissões de chave, como get, encrypt e decrypt.

Execute o seguinte comando:

az keyvault show \
--name "$KEY_VAULT_NAME" \
--resource-group "$RESOURCE_GROUP" \
--query "properties.accessPolicies"

Confirme se o Service Principal está listado e inclui as permissões de chave necessárias.

Voltar

Configurar acesso a endpoints privados

Nesta página