Controle de acesso baseado em função do Azure no Azure Cosmos DB

APLICA-SE AO: NoSQL MongoDB Cassandra Gremlin Table

Observação

Este artigo trata do controle de acesso baseado em função para operações do plano de gerenciamento no Azure Cosmos DB. Se você estiver usando operações do plano de dados, os dados serão protegidos usando chaves primárias, tokens de recurso ou o RBAC do Azure Cosmos DB.

Para saber mais sobre o controle de acesso baseado em função aplicado às operações de plano de dados na API para NoSQL, confira os artigos Proteger o acesso aos dados e RBAC do Azure Cosmos DB. Para a API do Azure Cosmos DB para o MongoDB, confira RBAC do Plano de Dados na API para MongoDB.

O Azure Cosmos DB fornece o RBAC do Azure (controle de acesso baseado em função do Azure) interno para cenários comuns de gerenciamento no Azure Cosmos DB. Um indivíduo que tem um perfil no Microsoft Entra ID pode atribuir essas funções do Azure a usuários, grupos, entidades de serviço ou identidades gerenciadas para conceder ou negar acesso a recursos e operações nos recursos do Azure Cosmos DB. As atribuições de função têm como escopo somente o acesso ao painel de controle, que inclui acesso a contas, bancos de dados, contêineres e ofertas (taxa de transferência) do Azure Cosmos DB.

Funções internas

As seguintes funções internas têm suporte do Azure Cosmos DB:

Função interna Descrição
Colaborador de Conta do DocumentDB Pode gerenciar contas do Azure Cosmos DB.
Função de leitor de conta do Cosmos DB Pode ler dados de contas do Azure Cosmos DB.
CosmosBackupOperator Pode enviar uma solicitação de restauração ao portal do Azure para um contêiner ou um banco de dados habilitado para backup periódico. Pode modificar o intervalo de backup e a retenção no portal do Azure. Não consegue acessar dados ou usar o Data Explorer.
CosmosRestoreOperator Pode executar uma ação de restauração para uma conta do Azure Cosmos DB com modo de backup contínuo.
Operador de Cosmos DB Pode provisionar contas, bancos de dados e contêineres do Azure Cosmos DB. Não consegue acessar dados ou usar o Data Explorer.

IAM (gerenciamento de identidade e acesso)

O painel Controle de acesso (IAM) no portal do Azure é usado para configurar o controle de acesso baseado em função do Azure nos recursos do Azure Cosmos DB. As funções são aplicadas a usuários, grupos, entidades de serviço e identidades gerenciadas no Active Directory. Você pode usar funções internas ou personalizadas para indivíduos e grupos. A seguinte captura de tela mostra a integração com o Active Directory (RBAC do Azure) usando o controle de acesso (IAM) no portal do Azure:

Access control (IAM) in the Azure portal - demonstrating database security.

Funções personalizadas

Além das funções internas, os usuários também podem criar funções personalizadas no Azure e aplicá-las a entidades de serviço em todas as assinaturas no locatário do Active Directory. As funções personalizadas fornecem aos usuários uma maneira de criar definições de função do Azure com um conjunto personalizado de operações de provedor de recursos. Para saber quais operações estão disponíveis para a criação de funções personalizadas para o Azure Cosmos DB, confira Operações de provedor de recursos do Azure Cosmos DB

Dica

As funções personalizadas que precisam acessar dados armazenados no Azure Cosmos DB ou usar o Data Explorer no portal do Azure devem ter uma ação Microsoft.DocumentDB/databaseAccounts/listKeys/*.

Observação

As atribuições de função personalizada nem sempre podem estar visíveis no portal do Azure.

Aviso

As chaves de conta não são automaticamente giradas ou revogadas após alterações no RBAC de gerenciamento. Essas chaves fornecem acesso a operações de plano de dados. Ao remover o acesso às chaves de um usuário, é recomendado também girar as chaves. Para o Plano de Dados do RBAC, o back-end do Cosmos DB rejeitará as solicitações uma vez que as funções/reivindicações não correspondam mais. Se um usuário requerer acesso temporário às operações de dados, recomenda-se usar o Plano de Dados do RBAC do Azure Cosmos DB.

Impedir alterações dos SDKs do Azure Cosmos DB

O provedor de recursos do Azure Cosmos DB pode ser bloqueado para evitar alterações nos recursos de um cliente que se conecta usando as chaves de conta (ou seja, aplicativos que se conectam por meio do SDK do Azure Cosmos DB). Esse recurso pode ser desejável para usuários que querem maior controle e governança para ambientes de produção. Impedir alterações do SDK também habilita recursos como bloqueios de recursos e logs de diagnóstico para operações de painel de controle. Os clientes que se conectam pelo SDK do Azure Cosmos DB serão impedidos de alterar qualquer propriedade para as contas, os bancos de dados, os contêineres e a taxa de transferência do Azure Cosmos DB. As operações que envolvem a leitura e gravação de dados em contêineres do Azure Cosmos DB não são afetadas.

Quando esse recurso é habilitado, as alterações em qualquer recurso só podem ser feitas por um usuário com a função correta do Azure e credenciais do Microsoft Entra, incluindo identidades de serviço gerenciado.

Aviso

Habilitar esse recurso afetar o seu aplicativo. Certifique-se de entender o impacto antes de habilitá-lo.

Lista de verificação antes de habilitar

Essa configuração impedirá alterações em recursos do Azure Cosmos DB de clientes que se conectam usando chaves de conta, incluindo o SDK do Azure Cosmos DB ou ferramentas que se conectam por meio de chaves de conta. Para evitar problemas ou erros de aplicativos depois de habilitar esse recurso, verifique se os aplicativos executam alguma das seguintes ações antes de habilitar esse recurso, incluindo:

  • Criação, exclusão de recursos filho, como bancos de dados e contêineres. Isso inclui recursos para outras APIs, como Cassandra, MongoDB, Gremlin e recursos de tabela.

  • Ler ou atualizar a taxa de transferência em recursos no nível do banco de dados ou do contêiner.

  • Modificação de propriedades de contêiner, incluindo política de índice, TTL e chaves exclusivas.

  • Modificação de procedimentos armazenados, gatilhos e funções definidas pelo usuário.

Se os aplicativos (ou usuários via portal do Azure) executarem qualquer uma dessas ações, eles precisarão ser migrados para execução por meio de modelos do ARM, PowerShell, CLI do Azure, REST ou biblioteca de gerenciamento do Azure. Observe que o gerenciamento do Azure está disponível em vários idiomas.

Definir por meio do modelo do ARM

Para definir essa propriedade usando um modelo do ARM, atualize o modelo existente ou exporte um novo modelo para a implantação atual e inclua o "disableKeyBasedMetadataWriteAccess": true nas propriedades dos recursos de databaseAccounts. Veja abaixo um exemplo básico de um modelo do Azure Resource Manager com essa configuração de propriedade.

{
    {
      "type": "Microsoft.DocumentDB/databaseAccounts",
      "name": "[variables('accountName')]",
      "apiVersion": "2020-04-01",
      "location": "[parameters('location')]",
      "kind": "GlobalDocumentDB",
      "properties": {
        "consistencyPolicy": "[variables('consistencyPolicy')[parameters('defaultConsistencyLevel')]]",
        "locations": "[variables('locations')]",
        "databaseAccountOfferType": "Standard",
        "disableKeyBasedMetadataWriteAccess": true
        }
    }
}

Importante

Certifique-se de incluir as outras propriedades para a conta e os recursos filho ao reimplantar com essa propriedade. Não implante este modelo como está ou ele redefinirá todas as suas propriedades de conta.

Definir via CLI do Azure

Para habilitar o uso da CLI do Azure, use o seguinte comando:

az cosmosdb update  --name [CosmosDBAccountName] --resource-group [ResourceGroupName]  --disable-key-based-metadata-write-access true

Definir via PowerShell

Para habilitar o uso do Azure PowerShell, use o seguinte comando:

Update-AzCosmosDBAccount -ResourceGroupName [ResourceGroupName] -Name [CosmosDBAccountName] -DisableKeyBasedMetadataWriteAccess true

Próximas etapas