Sicherheits-Glossar für Azure Cosmos DB for NoSQL
GILT FÜR: NoSQL
Abbildung: Sequenz des Bereitstellungsleitfadens, einschließlich dieser Phasen (in ihrer Reihenfolge): Übersicht, Konzepte, Vorbereiten, Rollenbasierte Zugriffssteuerung, Netzwerk und Verweis. Die Phase „Konzepte“ ist zurzeit hervorgehoben.
Dieser Artikel enthält ein Glossar allgemeiner Terminologie, die in diesem Sicherheitshandbuch für Azure Cosmos DB for NoSQL verwendet wird.
Rollenbasierte Zugriffssteuerung
Die rollenbasierte Zugriffssteuerung bezieht sich auf eine Methode zur Verwaltung des Zugriffs auf Ressourcen in Azure. Diese Methode basiert auf bestimmten Identitäten, denen Rollen zugewiesen werden, die verwalten, welche Zugriffsebene sie auf eine oder mehrere Ressourcen haben. Die rollenbasierte Zugriffssteuerung bietet ein flexibles System der feinkörnigen Zugriffsverwaltung, das sicherstellt, dass Identitäten nur über die geringste Berechtigungsstufe verfügen, die sie für die Ausführung ihrer Aufgabe benötigen.
Weitere Informationen finden Sie unter Übersicht rollenbasierte Zugriffssteuerung mit Microsoft Intune.
Identität/Prinzipal
Identitäten beziehen sich auf Objekte in Microsoft Entra, die eine Entität darstellen, die möglicherweise eine Zugriffsebene auf Ihr System benötigt. Im Kontext von Azure und Microsoft Entra können Identitäten auf einen der folgenden Entitätstypen verweisen:
Beschreibung | |
---|---|
Workloadidentitäten | Eine Workloadidentität stellt eine Softwareworkload dar, die auf andere Dienste oder Ressourcen zugreifen muss. |
Menschliche Identitäten | Eine menschliche Identität stellt einen Benutzer dar, der entweder nativ zu Ihrem Mandanten oder als Gast hinzugefügt werden kann. |
Verwaltete Identitäten | Verwaltete Identitäten sind unterschiedliche Ressourcen in Azure, die die Identität eines Azure-Diensts darstellen |
Dienstprinzipale | Ein Dienstprinzipal ist ein Dienstkonto, das in einer flexiblen Anzahl von Authentifizierungsszenarien verwendet werden kann. |
Geräteidentitäten | Eine Geräteidentität ist ein Objekt in Microsoft Entra, das einem Gerät zugeordnet ist. |
Gruppen | Gruppen sind Objekte, die zum Verwalten des Zugriffs auf eine oder mehrere Identitäten als einzelner Vorgang verwendet werden. |
Weitere Informationen finden Sie unter Identitätsgrundlagen.
Role
Rollen sind die primären Einheiten der Erzwingung von Zugriff und Berechtigungen. Sie weisen einer Identität eine Rolle zu, und die Definition der Rolle bestimmt, über welche Zugriffsebene diese Identität verfügen kann. Der Umfang der Zuweisung bestimmt, worauf genau die Identität Zugriff hat.
Azure verfügt über eine große Gruppe integrierter Rollen, die Sie verwenden können, um Zugriff auf verschiedene Ressourcen zu gewähren. Betrachten Sie das folgende Beispiel:
Wert | |
---|---|
Rolle | CosmosBackupOperator |
Definition | Microsoft.DocumentDB/databaseAccounts/backup/action & Microsoft.DocumentDB/databaseAccounts/restore/action |
Umfang | Eine Ressourcengruppe |
In diesem Beispiel wird ihnen die CosmosBackupOperator
Rolle für eine bestimmte Ressourcengruppe zugewiesen. Mit dieser Zuordnung können Sie entweder die backup
Aktionen oder restore
Aktionen für ein beliebiges Azure Cosmos DB-Konto innerhalb dieser Ressourcengruppe ausführen.
Wichtig
Einige Azure-Dienste, z. B. Azure Cosmos DB, verfügen über eine systemeigene rollenbasierte Zugriffssteuerungsimplementierung, die verschiedene Azure Resource Manager-Eigenschaften, Azure CLI-Befehle und Azure PowerShell-CmdLets verwendet. Die Befehle, die Sie in der Regel zum Verwalten der rollenbasierten Zugriffssteuerung verwenden, funktionieren nicht mit Azure Cosmos DB-Datenebenenzugriff. Einige der Befehle für die rollenbasierte Zugriffssteuerung von Azure funktionieren möglicherweise mit Azure Cosmos DB-Steuerungsebenenzugriff.
Weitere Informationen finden Sie unter Integrierte Azure-Rollen.
Rollendefinition
Eine Rollendefinition ist ein JSON-Objekt, das die Liste der zulässigen Und nicht zulässigen Aktionen der Steuerebene und der Datenebene enthält. Betrachten Sie dieses abgeschnittene Beispiel aus der CosmosRestoreOperator
integrierten Rolle:
{
"roleName": "CosmosRestoreOperator",
"type": "Microsoft.Authorization/roleDefinitions",
...
"permissions": [
{
"actions": [
"Microsoft.DocumentDB/locations/restorableDatabaseAccounts/restore/action",
"Microsoft.DocumentDB/locations/restorableDatabaseAccounts/*/read",
"Microsoft.DocumentDB/locations/restorableDatabaseAccounts/read"
],
"notActions": [],
"dataActions": [],
"notDataActions": []
}
],
...
}
In dieser Definition kann eine dieser Rolle zugewiesene Identität eine restore
Aktion ausführen. Nach Abschluss des Wiederherstellungsvorgangs kann die Identität verschiedene Ressourcen lesen, um zu überprüfen, ob die Wiederherstellung erfolgreich war. Wir können feststellen, dass diese Ressourcen aufgrund des *
(Wildcard) Operators für read
gelesen werden können.
Weitere Informationen finden Sie unter Konzepte zur Rollendefinition.
Rollenzuweisung
Eine Rollenzuweisung gewährt einem Identitätszugriff auf eine bestimmte Azure-Ressource. Rollenzuweisungen bestehen aus den folgenden Komponenten:
Beschreibung | |
---|---|
Prinzipal | Welche Identität wird dieser Rolle zugewiesen? |
Rolle | Die Rolle, die der Identität zugewiesen ist. |
Umfang | Die Azure-Zielressource oder -Gruppe der Zuordnung |
Name/Beschreibung | Metadaten, die das Verwalten von Aufgaben im großen Maßstab vereinfachen |
Tipp
Bei der rollenbasierten Zugriffssteuerung werden möglicherweise die Begriffe Identität und Prinzipal interveränderlich verwendet.
Weitere Informationen finden Sie unter Konzepte zur Rollenzuweisung.
Aktionen
Aktionen definieren, welche spezifischen Berechtigungen eine Rolle für eine Zielressource hat. Aktionen sind Zeichenfolgen, die in der Regel den Ressourcentyp und einen beschreibenden Namen enthalten, der angibt, welche Berechtigungen die Aktion gewährt. Im Folgenden finden Sie einige allgemeine Beispiele hierfür:
Beschreibung | Plane | |
---|---|---|
Microsoft.DocumentDB/databaseAccounts/listKeys/action |
Nur Kontoschlüssel lesen | Steuerungsebene |
Microsoft.DocumentDB/databaseAccounts/backup/action |
Durchführen von Sicherungen | Steuerungsebene |
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/replace |
Ein vorhandenes Element vollständig ersetzen | Datenebene |
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/executeQuery |
Ausführen einer NoSQL-Abfrage | Datenebene |
Aktionen können auch *
Zeichen (Wildcardzeichen) enthalten, sodass Sie nicht manuell jede bestimmte Unterpermission detailliert ausführen müssen. Hier sind einige Beispiele für Aktionen mit Wildcards:
Beschreibung | |
---|---|
Microsoft.DocumentDb/databaseAccounts/* |
Kann Azure Cosmos DB-Konten erstellen und verwalten |
Microsoft.DocumentDB/*/read |
Lesen eines beliebigen Containers oder einer beliebigen Datenbank |
Aktionen werden in Steuerebene und Datenebene getrennt. Sie müssen Aktionen für Steuerungsebenenressourcen und -aktionen separat definieren, die Daten beeinflussen können. In einer Rollendefinition verwenden Steuerelementebenenaktionen die actions
Eigenschaften- und Datenebenenaktionen innerhalb der dataActions
Eigenschaft. Sie können auch Aktionen definieren, die eine Identität nicht mit den jeweiligen notActions
und notDataActions
Eigenschaften ausführen kann.
Hinweis
Die Trennung von Aktionen in die Steuerungs- und Datenebene ist eine Sicherheitsmaßnahme, um zu verhindern, dass Wildcardaktionen aus älteren Rollendefinitionen uneingeschränkten und unbeabsichtigten Zugriff auf Daten haben.
Weitere Informationen finden Sie unter Kontroll- und Datenaktionen.
Regel der geringsten Rechte
Das Konzept der "geringsten Rechte" bezieht sich auf eine bewährte Methode, um sicherzustellen, dass alle Benutzer nur über die minimale Zugriffsebene verfügen, die sie für die Ausführung ihrer Aufgabe oder Ihres Auftrags benötigen. Beispielsweise würde eine Anwendung, die Daten aus einer Datenbank liest, nur Lesezugriff auf den Datenspeicher benötigen. Wenn diese Anwendung Lese- und Schreibzugriff auf den Datenspeicher hatte, können einige Dinge passieren, darunter, aber nicht beschränkt auf:
- Die Anwendung könnte Daten versehentlich zerstören.
- Ein nicht autorisierter Benutzer konnte Zugriff auf die Anmeldeinformationen der Anwendung erhalten und Daten ändern.
Im Anschluss an die Praxis der geringsten Rechte wird sichergestellt, dass potenzielle Datenschutzverletzungen im Umfang eingeschränkt sind. Diese Praxis maximiert die Betriebssicherheit und ermöglicht es Benutzern, effektiv zu bleiben.
Weitere Informationen finden Sie unter empfohlene Rolle mit den geringsten Rechten nach Aufgabe.
Steuerungsebene
Der Zugriff auf die Steuerungsebene bezieht sich auf die Möglichkeit, Ressourcen für einen Azure-Dienst zu verwalten, ohne Daten zu verwalten. Beispielsweise könnte der Zugriff auf die Azure Cosmos DB-Steuerungsebene folgende Möglichkeiten umfassen:
- Alle Konto- und Ressourcenmetadaten lesen
- Kontenschlüssel und Verbindungszeichenfolgen lesen und neu generieren
- Ausführen von Kontosicherungen und Wiederherstellung
- Starten und Nachverfolgen von Datenübertragungsaufträgen
- Verwalten von Datenbanken und Containern
- Ändern von Kontoeigenschaften
Wichtig
In Azure Cosmos DB benötigen Sie Steuerebenenzugriffe, um systemeigene rollenbasierte Zugriffssteuerungsdefinitionen und Zuordnungen zu verwalten. Da der rollenbasierte Zugriffssteuerungsmechanismus für die Datenebene von Azure Cosmos DB systemintern ist, benötigen Sie den Zugriff auf die Steuerungsebene, um Definitionen und Zuordnungen zu erstellen und als Ressourcen in einem Azure Cosmos DB-Konto zu speichern.
Datenebene
Der Zugriff auf Datenebene bezieht sich auf die Möglichkeit, Daten in einem Azure-Dienst zu lesen und zu schreiben, ohne dass Ressourcen im Konto verwaltet werden können. Für Exmaple könnte der Zugriff auf Azure Cosmos DB-Datenebenen folgende Möglichkeiten umfassen:
- Lesen einiger Konto- und Ressourcenmetadaten
- Erstellen, Lesen, Aktualisieren, Patchen und Löschen von Elementen
- Ausführen von NoSQL-Abfragen
- Lesen aus einem Änderungsfeed des Containers.
- Ausführen von gespeicherten Prozeduren
- Verwalten von Konflikten im Konfliktfeed
Portable Authentifizierung
In der Entwicklung ist es üblich, zwei Sätze unterschiedlicher Authentifizierungslogik für lokale Entwicklungs- und Produktionsinstanzen zu schreiben. Mit dem Azure SDK können Sie Ihre Logik mit einer einzigen Technik schreiben und erwarten, dass der Authentifizierungscode nahtlos in der Entwicklung und Produktion funktioniert.
Die Azure Identity-Clientbibliothek ist in mehreren Programmiersprachen als Teil des Azure SDK verfügbar. Mithilfe dieser Bibliothek können Sie ein DefaultAzureCredential
Objekt erstellen, das intelligent durch mehrere Optionen führt, um die richtigen Anmeldeinformationen basierend auf Ihrer Umgebung zu finden. Zu diesen Authentifizierungsoptionen gehören (in der Reihenfolge):
- Geheimer Clientschlüssel oder Zertifikat, der als Umgebungsvariable gespeichert ist
- Microsoft Entra Workload ID
- Eine benutzer- oder systemseitig zugewiesene verwaltete Identität
- Von den Einstellungen von Visual Studio abgeleitete Azure-Anmeldeinformationen
- Anmeldeinformationen, die in der Azure-Kontoerweiterung von Visual Studio Code verwendet werden
- Aktuelle Anmeldeinformationen von Azure CLI
- Aktuelle Anmeldeinformationen aus Azure PowerShell
- Aktuelle Anmeldeinformationen von Azure Developer CLI
- Eine interaktive Sitzung, die den Browser des Systems für die Anmeldung startet
Jede moderne Azure SDK-Bibliothek unterstützt einen Konstruktor für ihre jeweiligen Clientobjekte oder Klassen, die eine DefaultAzureCredential
Instanz oder ihren Basistyp akzeptieren.
Tipp
Damit Ihr Produktionscode einfacher zu debuggen und vorhersehbarer wird, können Sie die Verwendung DefaultAzureCredential
in der Entwicklung und den Austausch mit spezifischeren Anmeldeinformationen wie WorkloadIdentityCredential
oder ManagedIdentityCredential
nach der Bereitstellung der Anwendung vornehmen. Alle diese Klassen basieren auf der TokenCredential
Klasse, die viele Azure-SDKs als Teil ihrer Clientinitialisierungslogik erwarten, wodurch es einfach ist, hin und her zu tauschen.
Eindeutiger Bezeichner
Jede Identität in Microsoft Entra weist einen eindeutigen Bezeichner auf. Manchmal sehen Sie diesen eindeutigen Bezeichner, der als id
, objectId
oder principalId
bezeichnet wird. Beim Erstellen von Rollenzuweisungen benötigen Sie den eindeutigen Bezeichner für die Identität, mit der Sie die Zuordnung verwenden möchten.
`Scope`
Wenn Sie eine Rolle zuweisen, müssen Sie entscheiden, auf welche Azure-Ressourcen oder -Gruppen der Zugriff gewährt werden soll. Der Umfang einer Rollenzuweisung definiert die Ebene, auf der eine Zuordnung erfolgt.
Zum Beispiel:
- Ein einzelner Ressourcenbereich wendet Berechtigungen nur auf diese Singularressource an.
- Ein Bereich auf Ressourcengruppenebene wendet die Berechtigungen auf alle relevanten Ressourcen innerhalb der Gruppe an.
- Bereiche auf Verwaltungsgruppen- oder Abonnementebenen gelten für alle untergeordneten Gruppen und Ressourcen.
Wenn Sie eine Rolle in der rollenbasierten Zugriffssteuerung in Azure zuweisen, ist es ideal, den Umfang dieser Zuordnung so festzulegen, dass sie so wenig Ressourcen wie nötig für Ihre Workload umfasst. Sie können den Bereich einer Zuordnung beispielsweise auf eine Ressourcengruppe festlegen. Dieser Ressourcengruppenbereich umfasst alle Azure Cosmos DB-Ressourcen innerhalb der Ressourcengruppe:
/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>
Alternativ können Sie den Bereich auf eine einzelne Azure-Ressource festlegen und Ihre Zuweisung von Berechtigungen präziser und eingeschränkter gestalten. In diesem Beispiel werden der Anbieter und der Name der Azure Cosmos DB-Ressource verwendet, um den Bereich einzugrenzen:
/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.DocumentDB/databaseAccounts/<account-name>
Weitere Informationen finden Sie unter Grundlegendes zum Bereich von Azure RBAC.
Bereich (nativ in Azure Cosmos DB)
In der nativen Implementierung der rollenbasierten Zugriffssteuerung von Azure Cosmos DB bezieht sich Bereich auf die Granularität von Ressourcen innerhalb eines Kontos, für das Sie Berechtigung anwenden möchten.
Auf der höchsten Ebene können Sie mithilfe des größten Bereichs die Zuweisung einer rollenbasierten Zugriffssteuerung auf Datenebene auf das gesamte Konto festlegen. Dieser Bereich umfasst alle Datenbanken und Container innerhalb des Kontos:
/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.DocumentDB/databaseAccounts/<account-name>/
Sie können auch die Rollenzuweisung auf Datenebene auf eine bestimmte Datenbank beschränken:
/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.DocumentDB/databaseAccounts/<account-name>/dbs/<database-name>
Schließlich können Sie die Zuweisung auf einen einzelnen Container beschränken. Dies ist der differenzierteste Bereich:
/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.DocumentDB/databaseAccounts/<account-name>/dbs/<database-name>/colls/<container-name>