Freigeben über


Sicherheits-Glossar für Azure Cosmos DB for NoSQL

GILT FÜR: NoSQL

Abbildung: Aktuelle Phase („Konzepte“) in der Sequenz des Bereitstellungsleitfadens

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):

  1. Geheimer Clientschlüssel oder Zertifikat, der als Umgebungsvariable gespeichert ist
  2. Microsoft Entra Workload ID
  3. Eine benutzer- oder systemseitig zugewiesene verwaltete Identität
  4. Von den Einstellungen von Visual Studio abgeleitete Azure-Anmeldeinformationen
  5. Anmeldeinformationen, die in der Azure-Kontoerweiterung von Visual Studio Code verwendet werden
  6. Aktuelle Anmeldeinformationen von Azure CLI
  7. Aktuelle Anmeldeinformationen aus Azure PowerShell
  8. Aktuelle Anmeldeinformationen von Azure Developer CLI
  9. 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>

Nächster Schritt