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:

Access control (IAM) in the Azure portal - demonstrating database security.

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

Nächste Schritte