Share via


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

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. Zie voor meer informatie over op rollen gebaseerd toegangsbeheer voor Azure Cosmos DB, op rollen gebaseerd toegangsbeheer in Azure Cosmos DB.

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. Voor meer informatie en het doorlopen van een controlelijst om ervoor te zorgen dat uw toepassingen blijven functioneren, raadpleegt u voorkomen dat wijzigingen van de Azure Cosmos DB SDK's worden gewijzigd

$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:

Volgende stappen