Partilhar via


Proteja os recursos do Azure Cosmos DB com bloqueios

APLICA-SE A: NoSQL MongoDB Cassandra Gremlin Tabela

Como administrador, talvez seja necessário bloquear uma conta, banco de dados ou contêiner do Azure Cosmos DB. Os bloqueios impedem que outros usuários em sua organização excluam ou modifiquem acidentalmente recursos críticos. Pode definir o nível de bloqueio como CanNotDelete ou ReadOnly.

Level Description
CanNotDelete Os usuários autorizados ainda podem ler e modificar um recurso, mas não podem excluí-lo.
ReadOnly Os usuários autorizados podem ler um recurso, mas não podem excluí-lo ou atualizá-lo. A aplicação desse bloqueio é semelhante a restringir todos os usuários autorizados às permissões concedidas pela função Leitor .

Pré-requisitos

Como os bloqueios são aplicados

Quando você aplica um bloqueio em um escopo pai, todos os recursos dentro desse escopo herdam o mesmo bloqueio. Mesmo os recursos que você adicionar posteriormente herdam o bloqueio do pai. O bloqueio mais restritivo na herança tem precedência.

Ao contrário do controle de acesso baseado em função do Azure, você usa bloqueios de gerenciamento para aplicar uma restrição em todos os usuários e 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.

Os bloqueios do Resource Manager aplicam-se apenas a operações que ocorrem no painel de gestão, o que consiste em operações enviadas para https://management.azure.com. Os bloqueios não restringem a forma como os recursos desempenham as suas próprias funções. As alterações dos recursos são restritas, mas as operações dos recursos não são restritas. Por exemplo, um bloqueio ReadOnly em um contêiner do Azure Cosmos DB impede que você exclua ou modifique o contêiner. Isso não impede que você crie, atualize ou exclua dados no contêiner. As transações de dados são permitidas 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 pela primeira vez habilitando a disableKeyBasedMetadataWriteAccess propriedade. Certifique-se de que essa propriedade não interrompa aplicativos existentes que fazem alterações em recursos usando qualquer SDK, portal do Azure ou ferramentas de terceiros. A ativação dessa propriedade interrompe os 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, a atualização de políticas de índice, etc. Para saber mais e passar por uma lista de verificação para garantir que seus aplicativos continuem funcionando, consulte Impedindo 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 alterações por qualquer coisa que se conecte 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 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

Template

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

{
  "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óximos passos