Proteger recursos do Azure Cosmos DB com bloqueios

APLICA-SE A: NoSQL MongoDB Cassandra Gremlin Tabela

Como administrador, poderá ter de bloquear uma conta, base de dados ou contentor do Azure Cosmos DB. Os bloqueios impedem que outros utilizadores na sua organização eliminem ou modifiquem acidentalmente recursos críticos. Pode definir o nível de bloqueio como CanNotDelete ou ReadOnly.

Level Descrição
CanNotDelete Os utilizadores autorizados ainda podem ler e modificar um recurso, mas não podem eliminar o recurso.
ReadOnly Os utilizadores autorizados podem ler um recurso, mas não podem eliminar ou atualizar o recurso. Aplicar este bloqueio é semelhante a restringir todos os utilizadores autorizados às permissões concedidas pela função Leitor .

Pré-requisitos

Como os bloqueios são aplicados

Quando aplica um bloqueio num âmbito principal, todos os recursos dentro desse âmbito herdam o mesmo bloqueio. Até os recursos que adicionar mais tarde herdam o bloqueio do elemento principal. O bloqueio mais restritivo na herança tem precedência.

Ao contrário do controlo de acesso baseado em funções do Azure, utiliza bloqueios de gestão para aplicar uma restrição a todos os utilizadores e funções. Para saber mais sobre o controlo de acesso baseado em funções para o Azure Cosmos DB, veja Controlo de acesso baseado em funções 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 o são. Por exemplo, um bloqueio ReadOnly num contentor do Azure Cosmos DB impede-o de eliminar ou modificar o contentor. Não o impede de criar, atualizar ou eliminar dados no contentor. As transações de dados são permitidas porque essas operações não são enviadas para https://management.azure.com.

Gerir bloqueios

Os bloqueios de recursos não funcionam para as alterações efetuadas pelos utilizadores que acedem ao Azure Cosmos DB com chaves de conta, a menos que a conta do Azure Cosmos DB esteja bloqueada pela primeira vez ao ativar a disableKeyBasedMetadataWriteAccess propriedade. Certifique-se de que esta propriedade não interrompe as aplicações existentes que efetuam alterações aos recursos através de qualquer SDK, portal do Azure ou ferramentas de terceiros. Ativar esta propriedade interrompe as aplicações que se ligam através de chaves de conta para modificar recursos. Estas modificações podem incluir a alteração do débito, a atualização de políticas de índice, etc. Para saber mais e percorrer uma lista de verificação para garantir que as aplicações continuam a funcionar, veja Impedir alterações dos SDKs do Azure Cosmos DB

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

Em primeiro lugar, atualize a conta para impedir alterações por qualquer coisa que se ligue através de chaves de conta.

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

Crie um Bloqueio de Eliminação num recurso de conta do Azure Cosmos DB e em todos os recursos subordinados.

$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, utilize o Microsoft.Authorization/locks recurso do 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'))]"
}

Amostras

Gerir bloqueios de recursos para o Azure Cosmos DB:

Passos seguintes