Share via


Schützen von Azure Cosmos DB-Ressourcen durch Sperren

GILT FÜR: NoSQL MongoDB Cassandra Gremlin Tabelle

Als Administrator müssen Sie ggf. ein Azure Cosmos-Konto, eine Azure Cosmos DB-Datenbank oder einen Azure Cosmos-Container sperren. Sperren verhindern, dass andere Benutzer innerhalb der Organisation versehentlich wichtige Ressourcen löschen oder ändern. Sie können die Sperrebene auf CanNotDelete oder ReadOnly festlegen.

Ebene BESCHREIBUNG
CanNotDelete Autorisierte Benutzer können eine Ressource weiterhin lesen und ändern, aber nicht löschen.
ReadOnly Autorisierte Benutzer können eine Ressource zwar lesen, aber nicht löschen oder aktualisieren. Mit dieser Sperre erzielen Sie einen ähnlichen Effekt wie durch die Beschränkung sämtlicher autorisierter Benutzer auf die Berechtigungen der Leserolle.

Voraussetzungen

Anwenden von Sperren

Wenn Sie eine Sperre in einem übergeordneten Bereich anwenden, erben alle Ressourcen in diesem Bereich die entsprechende Sperre. Auch Ressourcen, die Sie später hinzufügen, erben die Sperre aus dem übergeordneten Element. Die restriktivste Sperre in der Vererbung hat Vorrang.

Im Gegensatz zur rollenbasierten Zugriffssteuerung in Azure verwenden Sie Verwaltungssperren, um eine Einschränkung für alle Benutzer und Rollen zu aktivieren. Informationen über die rollenbasierte Zugriffssteuerung für Azure Cosmos DB finden Sie unter Rollenbasierte Azure-Zugriffssteuerung in Azure Cosmos DB.

Resource Manager-Sperren gelten nur für Vorgänge auf der Verwaltungsebene (also für Vorgänge, die an https://management.azure.com gesendet werden). Die Ausführung ressourceneigener Funktionen wird durch die Sperren nicht eingeschränkt. Die Ressourcenänderungen sind eingeschränkt, die Ressourcenvorgänge jedoch nicht. Beispielsweise verhindert eine ReadOnly-Sperre für einen Azure Cosmos DB-Container das Löschen oder Ändern des Containers. Sie verhindert jedoch nicht das Erstellen, Aktualisieren oder Löschen von Daten im Container. Datentransaktionen sind zulässig, da diese Vorgänge nicht an https://management.azure.com gesendet werden.

Verwalten von Sperren

Ressourcensperren funktionieren nicht bei Änderungen, die von Benutzern durchgeführt werden, die mithilfe von Kontoschlüsseln auf Azure Cosmos DB zugreifen, es sei denn, das Azure Cosmos DB-Konto wird zuerst durch Aktivieren der disableKeyBasedMetadataWriteAccess-Eigenschaft gesperrt. Stellen Sie sicher, dass diese Eigenschaft keine vorhandenen Anwendungen unterbricht, die mithilfe von SDK-, Azure-Portal- oder Drittanbietertools Änderungen an Ressourcen vornehmen. Durch Aktivieren dieser Eigenschaft werden Anwendungen unterbrochen, die über Kontoschlüssel eine Verbindung herstellen, um Ressourcen zu ändern. Zu diesen Änderungen können z. B. Durchsatzänderungen, Aktualisieren von Indexrichtlinien usw. zählen. Weitere Informationen und eine Prüfliste, anhand der sie sicherstellen können, dass Ihre Anwendungen weiterhin funktionieren, finden Sie unter Verhindern von Änderungen durch Azure Cosmos DB SDKs.

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

Aktualisieren Sie zunächst das Konto, um Änderungen durch alles zu verhindern, das über Kontoschlüssel verbunden ist.

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

Erstellen Sie eine Löschsperre für eine Azure Cosmos DB-Kontoressource und alle untergeordneten Ressourcen.

$parameters = @{
    ResourceGroupName = $RESOURCE_GROUP_NAME
    ResourceName = $ACCOUNT_NAME
    LockName = $LOCK_NAME
    ApiVersion = "2020-04-01"
    ResourceType = "Microsoft.DocumentDB/databaseAccounts"
    LockLevel = "CanNotDelete"
}
New-AzResourceLock @parameters

Vorlage

Wenn Sie eine Sperre auf eine Azure Cosmos DB-Ressource anwenden, verwenden Sie die Microsoft.Authorization/locks Azure Resource Manager-(ARM-)Ressource.

{
  "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'))]"
}

Beispiele

Verwalten von Ressourcensperren für Azure Cosmos DB:

Nächste Schritte