Controlo de acesso baseado em funções do Azure no Azure Cosmos DB

APLICA-SE A: NoSQL MongoDB Cassandra Gremlin Tabela

Nota

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

Para saber mais sobre o controle de acesso baseado em função aplicado a operações de plano de dados na API para NoSQL, consulte Acesso seguro a dados e artigos RBAC do Azure Cosmos DB. Para a API do Azure Cosmos DB para MongoDB, consulte Data Plane RBAC na API para MongoDB.

O Azure Cosmos DB fornece um controlo de acesso baseado em funções (RBAC do Azure) para cenários de gestão comuns no Azure Cosmos DB. Um indivíduo que tenha 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 apenas o acesso do plano de controle, que inclui acesso a contas, bancos de dados, contêineres e ofertas (taxa de transferência) do Azure Cosmos DB.

Funções incorporadas

A seguir estão as funções internas suportadas pelo Azure Cosmos DB:

Função incorporada Descrição
Colaborador da Conta do Banco de Dados de Documentos Pode gerenciar contas do Azure Cosmos DB.
Função de leitor de conta do Cosmos DB Pode ler os dados da conta do Azure Cosmos DB.
CosmosBackupOperator Pode enviar uma solicitação de restauração no portal do Azure para um banco de dados habilitado para backup periódico ou um contêiner. Pode modificar o intervalo de backup e a retenção no portal do Azure. Não é possível aceder a quaisquer dados ou utilizar o Explorador de Dados.
CosmosRestoreOperator Pode executar uma ação de restauração para uma conta do Azure Cosmos DB com o modo de backup contínuo.
Operador do Cosmos DB Pode provisionar contas, bancos de dados e contêineres do Azure Cosmos DB. Não é possível aceder a quaisquer dados ou utilizar o Explorador de Dados.

Gestão de identidades e acessos (IAM)

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 Ative Directory. Você pode usar funções internas ou funções personalizadas para indivíduos e grupos. A captura de tela a seguir mostra a integração do Ative Directory (Azure RBAC) 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 em seu locatário do Ative 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 do provedor de recursos. Para saber quais operações estão disponíveis para criar funções personalizadas para o Azure Cosmos DB, consulte Operações do provedor de recursos do Azure Cosmos DB

Gorjeta

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

Nota

As atribuições de função personalizadas 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 as alterações do RBAC de gerenciamento. Essas chaves dão acesso às operações do plano de dados. Ao remover o acesso às chaves de um usuário, recomenda-se girar as chaves também. Para o Plano de Dados RBAC, o back-end do Cosmos DB rejeitará solicitações quando as funções/declarações não corresponderem mais. Se um usuário precisar de acesso temporário às operações do plano de dados, é recomendável usar o Plano de Dados RBAC do Azure Cosmos DB.

Impedindo alterações dos SDKs do Azure Cosmos DB

O provedor de recursos do Azure Cosmos DB pode ser bloqueado para impedir quaisquer 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 desejam maiores graus de controle e governança para ambientes de produção. A prevenção de alterações do SDK também permite recursos como bloqueios de recursos e logs de diagnóstico para operações do plano de controle. Os clientes que se conectam a partir do SDK do Azure Cosmos DB serão impedidos de alterar qualquer propriedade para as contas, bancos de dados, contêineres e taxa de transferência do Azure Cosmos DB. As operações que envolvem leitura e gravação de dados nos próprios contêineres do Azure Cosmos DB não são afetadas.

Quando esse recurso está habilitado, as alterações em qualquer recurso só podem ser feitas a partir de 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 pode ter impacto em seu aplicativo. Certifique-se de que compreende o impacto antes de o ativar.

Lista de verificação antes de ativar

Essa configuração impedirá quaisquer alterações em qualquer recurso do Azure Cosmos DB de qualquer cliente que se conecte usando chaves de conta, incluindo qualquer SDK do Azure Cosmos DB, quaisquer ferramentas que se conectem 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.

  • Leitura ou atualização da taxa de transferência em recursos de nível de banco de dados ou contêiner.

  • Modificar propriedades de contêiner, incluindo política de índice, TTL e chaves exclusivas.

  • Modificar procedimentos armazenados, gatilhos ou funções definidas pelo usuário.

Se seus aplicativos (ou usuários por meio do portal do Azure) executarem qualquer uma dessas ações, eles precisarão ser migrados para serem executados por meio de Modelos 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 via modelo ARM

Para definir essa propriedade usando um modelo ARM, atualize seu modelo existente ou exporte um novo modelo para sua implantação atual e, em seguida, inclua o "disableKeyBasedMetadataWriteAccess": true para as propriedades dos databaseAccounts recursos. Abaixo está 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 sua conta e recursos filho ao reimplantar com essa propriedade. Não implante este modelo como está ou ele redefinirá todas as propriedades da sua conta.

Definir via CLI do Azure

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

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 comando abaixo:

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

Próximos passos