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
- Ein vorhandenes Azure Cosmos DB-Konto
- Falls Sie bereits über ein Azure-Abonnement verfügen, erstellen Sie ein neues Konto.
- Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.
- Alternativ können Sie Azure Cosmos DB kostenlos testen, bevor Sie sich festlegen.
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.
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.
$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:
- API für Cassandra-Keyspace und Tabelle Azure CLI | Azure PowerShell
- API für Gremlin-Datenbank und -Graph Azure CLI | Azure PowerShell
- API für MongoDB-Datenbank und -Sammlung Azure CLI| Azure PowerShell
- API für NoSQL-Datenbank und -Container Azure CLI | Azure PowerShell
- API für Table-Tabelle Azure CLI | Azure PowerShell