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
- Uma conta existente do Azure Cosmos DB.
- Se tiver uma subscrição do Azure, crie uma nova conta.
- Se não tiver uma subscrição do Azure, crie uma conta gratuita antes de começar.
- Em alternativa, pode experimentar o Azure Cosmos DB gratuitamente antes de se consolidar.
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:
- API para o espaço de chaves do Cassandra e a tabela da CLI | do Azure Azure PowerShell
- API para base de dados do Gremlin e grafo da CLI | do AzureAzure PowerShell
- API para a base de dados do MongoDB e a CLI | do Azure da coleção Azure PowerShell
- API para base de dados NoSQL e CLI | do Azure de contentor Azure PowerShell
- API para tabela de Tabelas da CLI | do AzureAzure PowerShell