Azure Cosmos DB-resources beveiligen met vergrendelingen
VAN TOEPASSING OP: NoSQL MongoDB Cassandra Gremlin Tafel
Als beheerder moet u mogelijk een Azure Cosmos DB-account, -database of -container vergrendelen. Vergrendelingen voorkomen dat andere gebruikers in uw organisatie per ongeluk kritieke resources verwijderen of wijzigen. U kunt het vergrendelingsniveau instellen op CanNotDelete
of ReadOnly
.
Niveau | Beschrijving |
---|---|
CanNotDelete |
Geautoriseerde gebruikers kunnen een resource nog steeds lezen en wijzigen, maar ze kunnen de resource niet verwijderen. |
ReadOnly |
Geautoriseerde gebruikers kunnen een resource lezen, maar ze kunnen de resource niet verwijderen of bijwerken. Het toepassen van deze vergrendeling is vergelijkbaar met het beperken van alle geautoriseerde gebruikers tot de machtigingen die zijn verleend door de rol Lezer . |
Vereisten
- Een bestaand Azure Cosmos DB-account.
- Als u een Azure-abonnement hebt, maakt u een nieuw account.
- Als u geen Azure-abonnement hebt, maakt u een gratis account voordat u begint.
- U kunt azure Cosmos DB ook gratis proberen voordat u zich doorvoert.
Hoe vergrendelingen worden toegepast
Wanneer u een vergrendeling toepast op een bovenliggend bereik, nemen alle resources binnen dat bereik dezelfde vergrendeling over. Zelfs resources die u later toevoegt, nemen de vergrendeling van het bovenliggende item over. De meest beperkende vergrendeling in de overname heeft voorrang.
In tegenstelling tot op rollen gebaseerd toegangsbeheer van Azure, gebruikt u beheervergrendelingen om een beperking toe te passen voor alle gebruikers en rollen.
Vergrendelingen van Resource Manager gelden alleen voor bewerkingen die zich op beheerniveau voordoen, wat bewerkingen zijn die worden verzonden naar https://management.azure.com
. De vergrendelingen hebben geen invloed op hoe resources hun eigen functies uitvoeren. Resourcewijzigingen worden beperkt, maar resourcebewerkingen worden niet beperkt. Een ReadOnly-vergrendeling op een Azure Cosmos DB-container voorkomt bijvoorbeeld dat u de container verwijdert of wijzigt. Het voorkomt niet dat u gegevens in de container maakt, bijwerkt of verwijdert. Gegevenstransacties zijn toegestaan omdat deze bewerkingen niet naar https://management.azure.com
worden verzonden.
Vergrendelingen beheren
Resourcevergrendelingen werken niet voor wijzigingen die zijn aangebracht door gebruikers die toegang hebben tot Azure Cosmos DB met behulp van accountsleutels, tenzij het Azure Cosmos DB-account eerst wordt vergrendeld door de disableKeyBasedMetadataWriteAccess
eigenschap in te schakelen. Zorg ervoor dat deze eigenschap bestaande toepassingen die wijzigingen aanbrengen in resources niet onderbreekt met behulp van SDK, Azure Portal of hulpprogramma's van derden. Als u deze eigenschap inschakelt, worden toepassingen die verbinding maken via accountsleutels verbroken om resources te wijzigen. Deze wijzigingen kunnen bestaan uit het wijzigen van doorvoer, het bijwerken van indexbeleid, enzovoort.
$RESOURCE_GROUP_NAME = "<resource-group>"
$ACCOUNT_NAME = "<account-name>"
$LOCK_NAME = "$ACCOUNT_NAME-lock"
Werk eerst het account bij om wijzigingen te voorkomen door alles wat verbinding maakt via accountsleutels.
$parameters = @{
Name = $ACCOUNT_NAME
ResourceGroupName = $RESOURCE_GROUP_NAME
DisableKeyBasedMetadataWriteAccess = true
}
Update-AzCosmosDBAccount @parameters
Maak een verwijderingsvergrendeling voor een Azure Cosmos DB-accountresource en alle onderliggende resources.
$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
Wanneer u een vergrendeling toepast op een Azure Cosmos DB-resource, gebruikt u de Microsoft.Authorization/locks
ARM-resource (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'))]"
}
Voorbeelden
Resourcevergrendelingen voor Azure Cosmos DB beheren:
- API voor Cassandra-keyspace en -tabel Azure CLI | Azure PowerShell
- API voor Gremlin-database en -grafiek Azure CLI | Azure PowerShell
- API voor MongoDB-database en -verzameling Azure CLI| Azure PowerShell
- API voor NoSQL-database en -container Azure CLI | Azure PowerShell
- API voor tabeltabel Azure CLI | Azure PowerShell