Compartilhar via


Proteger os recursos do Azure Cosmos DB com bloqueios

APLICA-SE AO: NoSQL MongoDB Cassandra Gremlin Table

Como administrador, pode ser necessário bloquear uma conta, um banco de dados ou um contêiner do Azure Cosmos DB. Bloqueios impedem que outros usuários na organização excluam ou modifiquem acidentalmente recursos fundamentais. Você pode definir o nível de bloqueio para CanNotDelete ou ReadOnly.

Nível Descrição
CanNotDelete Usuários autorizados ainda poderão ler e modificar um recurso, mas não poderão excluí-lo.
ReadOnly Usuários autorizados poderão ler um recurso, mas não poderão excluir ou atualizar o recurso. Aplicar esse bloqueio é semelhante ao restringir todos os usuários autorizados para as permissões concedidas pela função Leitor.

Pré-requisitos

Como os bloqueios são aplicados

Quando você aplica um bloqueio a um escopo pai, todos os recursos filho herdam o mesmo bloqueio. Até mesmo os recursos que você adiciona posteriormente herdam o bloqueio do pai. O bloqueio mais restritivo na herança terá precedência.

Ao contrário do controle de acesso baseado em função do Azure, é possível usar bloqueios de gerenciamento para aplicar uma restrição a todos os usuários e a todas as funções. Para saber mais sobre o controle de acesso baseado em função para o Azure Cosmos DB, consulte Controle de acesso baseado em função do Azure no Azure Cosmos DB.

Bloqueios do Resource Manager se aplicam apenas às operações que ocorrem no plano de gerenciamento, que consistem em operações enviadas para https://management.azure.com. Os bloqueios não restringem a maneira como os recursos executam suas próprias funções. Alterações de recursos são restritas, mas as operações de recursos não são. Por exemplo, um bloqueio ReadOnly em um contêiner do Azure Cosmos DB impede que você exclua ou modifique o contêiner. Ele não impede você de criar, atualizar ou excluir dados no contêiner. As transações de dados são autorizadas porque essas operações não são enviadas para https://management.azure.com.

Gerenciar bloqueios

Os bloqueios de recursos não funcionam para alterações feitas por usuários que acessam o Azure Cosmos DB usando chaves de conta, a menos que a conta do Azure Cosmos DB seja bloqueada primeiro habilitando a propriedade disableKeyBasedMetadataWriteAccess. Verifique se essa propriedade não interrompe os aplicativos existentes que fazem alterações nos recursos usando SDK, portal do Azure ou ferramentas de terceiros. Habilitar essa propriedade interrompe o funcionamento de aplicativos que se conectam por meio de chaves de conta para modificar recursos. Essas modificações podem incluir a alteração da taxa de transferência, atualização das políticas de índice etc. Para saber mais e percorrer uma lista de verificação para garantir que seus aplicativos continuem funcionando, confira como impedir alterações dos SDKs do Azure Cosmos DB

$RESOURCE_GROUP_NAME = "<resource-group>"
$ACCOUNT_NAME = "<account-name>"
$LOCK_NAME = "$ACCOUNT_NAME-lock"

Primeiro, atualize a conta para evitar que alterações sejam feitas devido a conexões por meio de chaves de conta.

$parameters = @{
    Name = $ACCOUNT_NAME
    ResourceGroupName = $RESOURCE_GROUP_NAME
    DisableKeyBasedMetadataWriteAccess = true
}
Update-AzCosmosDBAccount @parameters

Crie um bloqueio de exclusão em um recurso de conta do Azure Cosmos DB e em todos os recursos filho.

$parameters = @{
    ResourceGroupName = $RESOURCE_GROUP_NAME
    ResourceName = $ACCOUNT_NAME
    LockName = $LOCK_NAME
    ApiVersion = "2020-04-01"
    ResourceType = "Microsoft.DocumentDB/databaseAccounts"
    LockLevel = "CanNotDelete"
}
New-AzResourceLock @parameters

Modelo

Ao aplicar um bloqueio a um recurso do Azure Cosmos DB, use o recurso Microsoft.Authorization/locks do ARM (Azure Resource Manager).

{
  "type": "Microsoft.Authorization/locks",
  "apiVersion": "2017-04-01",
  "name": "cosmoslock",
  "dependsOn": [
    "[resourceId('Microsoft.DocumentDB/databaseAccounts', parameters('accountName'))]"
  ],
  "properties": {
    "level": "CanNotDelete",
    "notes": "Do not delete Azure Cosmos DB account."
  },
  "scope": "[resourceId('Microsoft.DocumentDB/databaseAccounts', parameters('accountName'))]"
}

Exemplos

Gerenciar bloqueios de recursos para o Azure Cosmos DB:

Próximas etapas