Rollenbasierte Azure-Zugriffssteuerung in Azure Cosmos DB
GILT FÜR: NoSQL MongoDB Cassandra Gremlin Tabelle
Hinweis
In diesem Artikel geht es um die rollenbasierte Zugriffssteuerung für Vorgänge auf Verwaltungsebene in Azure Cosmos DB. Wenn Sie Vorgänge auf Datenebene verwenden, werden Daten über Primärschlüssel, Ressourcentoken oder die RBAC von Azure Cosmos DB geschützt.
Weitere Informationen zur Anwendung der rollenbasierten Zugriffssteuerung auf Vorgänge der Datenebene in der API für NoSQL finden Sie in den Artikeln Sicherer Zugriff auf Daten und Rollenbasierte Zugriffssteuerung in Azure Cosmos DB. Informationen zur Azure Cosmos DB-API für MongoDB finden Sie unter Konfigurieren von rollenbasierter Zugriffssteuerung für die Azure Cosmos DB-API für MongoDB (Vorschau).
Azure Cosmos DB bietet für gängige Verwaltungsszenarien eine integrierte rollenbasierte Azure-Zugriffssteuerung (Azure RBAC). Eine Person mit einem Profil in Microsoft Entra ID kann diese Azure-Rollen Benutzern, Gruppen, Dienstprinzipalen oder verwalteten Identitäten zuweisen, um den Zugriff auf Ressourcen und Vorgänge für Azure Cosmos DB-Ressourcen zu gewähren oder zu verweigern. Rollenzuweisungen sind auf den Zugriff auf Steuerungsebene beschränkt, was den Zugriff auf Konten, Datenbanken, Container und Angebote (Durchsatz) für Azure Cosmos DB umfasst.
Integrierte Rollen
Die folgenden vordefinierten Rollen werden von Azure Cosmos DB unterstützt:
Integrierte Rolle | Beschreibung |
---|---|
Mitwirkender von DocumentDB-Konto | Kann Azure Cosmos DB-Konten verwalten. |
Cosmos DB-Rolle „Kontoleser“ | Kann Azure Cosmos DB-Kontodaten lesen. |
CosmosBackupOperator | Kann eine Wiederherstellungsanforderung im Azure-Portal für eine periodisch aktivierte Sicherungsdatenbank oder einen Container übermitteln. Kann das Sicherungsintervall und die Datenaufbewahrung im Azure-Portal ändern. Kann nicht auf Daten zugreifen oder Daten-Explorer verwenden. |
CosmosRestoreOperator | Kann eine Wiederherstellungsaktion für ein Azure Cosmos DB-Konto mit fortlaufendem Sicherungsmodus ausführen. |
Cosmos DB-Operator | Kann Azure Cosmos DB-Konten, -Datenbanken und -Container bereitstellen. Kann nicht auf Daten zugreifen oder Daten-Explorer verwenden. |
Identitäts- und Zugriffsverwaltung (IAM)
Der Bereich Zugriffssteuerung (IAM) im Azure-Portal dient zum Konfigurieren der rollenbasierten Azure-Zugriffssteuerung für Azure Cosmos DB-Ressourcen. Die Rollen werden Benutzern, Gruppen, Dienstprinzipalen und verwalteten Identitäten in Active Directory zugewiesen. Sie können für Einzelbenutzer und Gruppen integrierte oder benutzerdefinierte Rollen verwenden. Der folgende Screenshot zeigt die Active Directory-Integration (Azure RBAC) mithilfe der Zugriffssteuerung (IAM) im Azure-Portal:
Benutzerdefinierte Rollen
Zusätzlich zu den integrierten Rollen können Benutzer in Azure auch benutzerdefinierte Rollen erstellen und diese Rollen Dienstprinzipalen in allen Abonnements innerhalb ihres Active Directory-Mandanten zuweisen. Benutzerdefinierte Rollen bieten Benutzern eine Möglichkeit, Azure-Rollendefinitionen mit einem benutzerdefinierten Satz von Ressourcenanbietervorgängen zu erstellen. Um zu erfahren, welche Vorgänge für die Erstellung benutzerdefinierter Rollen für Azure Cosmos DB verfügbar sind, siehe Vorgänge für Azure Resource Manager-Ressourcenanbieter.
Tipp
Benutzerdefinierte Rollen, die in der Lage sein müssen, auf in Azure Cosmos DB gespeicherte Daten zuzugreifen oder Daten-Explorer im Azure-Portal zu verwenden, müssen über die Aktion Microsoft.DocumentDB/databaseAccounts/listKeys/*
verfügen.
Hinweis
Benutzerdefinierte Rollenzuweisungen sind möglicherweise im Azure-Portal nicht immer sichtbar.
Warnung
Kontoschlüssel werden nach Änderungen der RBAC-Verwaltung nicht automatisch gedreht oder widerrufen. Diese Schlüssel ermöglichen den Zugriff auf Vorgänge auf Datenebene. Beim Entfernen des Zugriffs von Benutzer*innen auf die Schlüssel wird empfohlen, die Schlüssel ebenfalls zu drehen. Für die RBAC-Datenebene lehnt das Cosmos DB-Back-End Anforderungen ab, sobald die Rollen/Ansprüche nicht mehr übereinstimmen. Wenn Benutzer*innen temporären Zugriff auf Vorgänge der Datenebenen erfordern, empfiehlt es sich, Azure Cosmos DB RBAC-Datenebene zu verwenden.
Verhindern von Änderungen aus den Azure Cosmos DB SDKs
Der Azure Cosmos DB-Ressourcenanbieter kann gesperrt werden, um Ressourcenänderungen von einem Client zu verhindern, der eine Verbindung unter Verwendung der Kontoschlüssel herstellt (also Anwendungen, die eine Verbindung über das Azure Cosmos DB SDK herstellen). Dieses Feature ist möglicherweise für Benutzer vorteilhaft, die ein höheres Maß an Kontrolle und Governance für Produktionsumgebungen wünschen. Das Verhindern von Änderungen aus dem SDK ermöglicht außerdem Features wie Ressourcensperren und Diagnoseprotokolle für Vorgänge auf der Steuerungsebene. Von Clients, die eine Verbindung aus dem Azure Cosmos DB SDK herstellen, können keine Eigenschaften für Azure Cosmos DB-Konten, Datenbanken, Container und Durchsatz geändert werden. Die Vorgänge, bei denen Daten aus Azure Cosmos DB-Containern gelesen oder in Azure Cosmos DB-Container geschrieben werden, sind davon nicht betroffen.
Wenn dieses Feature aktiviert ist, können Änderungen an Ressourcen nur von einem Benutzer mit der richtigen Azure-Rolle und entsprechenden Microsoft Entra-Anmeldeinformationen vorgenommen werden. Dies schließt auch verwaltete Dienstidentitäten mit ein.
Warnung
Die Aktivierung dieses Features kann Auswirkungen auf Ihre Anwendung haben. Stellen Sie sicher, dass Sie die Auswirkungen verstehen, bevor Sie das Feature aktivieren.
Prüfliste vor der Aktivierung
Durch diese Einstellung werden sämtliche Azure Cosmos DB-Ressourcenänderungen durch Clients, die eine Verbindung unter Verwendung von Kontoschlüsseln herstellen (einschließlich aller Azure Cosmos DB SDKs), durch Tools, die Kontoschlüssel für die Verbindungsherstellung verwenden, verhindert. Überprüfen Sie vor der Aktivierung dieses Features, ob Anwendungen eine der folgenden Aktionen ausführen, um Anwendungsprobleme oder -fehler nach der Aktivierung zu vermeiden:
Erstellen oder Löschen untergeordneter Ressourcen wie Datenbanken und Container. Dies schließt auch Ressourcen für andere APIs wie Cassandra, MongoDB, Gremlin und Tabellenressourcen mit ein.
Lesen oder Aktualisieren des Durchsatzes für Ressourcen auf der Datenbank- oder Containerebene
Ändern von Containereigenschaften wie Indexrichtlinie, Gültigkeitsdauer und eindeutige Schlüssel
Ändern von gespeicherten Prozeduren, Triggern und benutzerdefinierten Funktionen
Wenn Ihre Anwendungen (oder Benutzer über das Azure-Portal) eine dieser Aktionen ausführen, müssen sie für die Ausführung mithilfe von ARM-Vorlagen, per PowerShell, über die Azure CLI, mithilfe von REST oder per Azure-Verwaltungsbibliothek migriert werden. Beachten Sie, dass die Azure-Verwaltung in mehreren Sprachen verfügbar ist.
Festlegen per ARM-Vorlage
Wenn Sie diese Eigenschaft mithilfe einer ARM-Vorlage festlegen möchten, aktualisieren Sie Ihre vorhandene Vorlage, oder exportieren Sie eine neue Vorlage für Ihre aktuelle Bereitstellung, und schließen Sie "disableKeyBasedMetadataWriteAccess": true
in die Eigenschaften für die Ressourcen vom Typ databaseAccounts
ein. Im Anschluss sehen Sie ein einfaches Beispiel für eine Azure Resource Manager-Vorlage mit dieser Eigenschaftseinstellung:
{
{
"type": "Microsoft.DocumentDB/databaseAccounts",
"name": "[variables('accountName')]",
"apiVersion": "2020-04-01",
"location": "[parameters('location')]",
"kind": "GlobalDocumentDB",
"properties": {
"consistencyPolicy": "[variables('consistencyPolicy')[parameters('defaultConsistencyLevel')]]",
"locations": "[variables('locations')]",
"databaseAccountOfferType": "Standard",
"disableKeyBasedMetadataWriteAccess": true
}
}
}
Wichtig
Schließen Sie bei der erneuten Bereitstellung mit dieser Eigenschaft auch die anderen Eigenschaften für Ihr Konto und Ihre untergeordneten Ressourcen mit ein. Wenn Sie diese Vorlage unverändert bereitstellen, werden alle Ihre Kontoeigenschaften zurückgesetzt.
Festlegen über die Azure-Befehlszeilenschnittstelle
Verwenden Sie zur Aktivierung über die Azure CLI den folgenden Befehl:
az cosmosdb update --name [CosmosDBAccountName] --resource-group [ResourceGroupName] --disable-key-based-metadata-write-access true
Festlegen über PowerShell
Verwenden Sie zur Aktivierung über Azure PowerShell den folgenden Befehl:
Update-AzCosmosDBAccount -ResourceGroupName [ResourceGroupName] -Name [CosmosDBAccountName] -DisableKeyBasedMetadataWriteAccess true