Funktionsweise von Policys

Hier sammeln Sie Grundkenntnisse, bevor Sie Ihre eigenen Policys schreiben, und erhalten einen Überblick über Policys, deren Komponenten sowie grundlegende Features.

In diesem Thema wird beschrieben, wie Policys funktionieren, welche Features sich auf ihre Verwendung auswirken und wie diese Features mit einigen anderen grundlegenden Features und Ressourcen von Oracle Cloud Infrastructure integriert sind.

Überblick über Policys

Eine Policy ist ein Dokument, in dem angegeben ist, welche Personen wie auf welche Oracle Cloud Infrastructure-Ressourcen in Ihrem Unternehmen zugreifen können. Mit einer Policy kann eine Gruppe  auf bestimmte Weise mit bestimmten Typen von Ressourcen  in einem bestimmten Compartment  arbeiten. Wenn Sie mit Benutzern, Gruppen oder Compartments nicht vertraut sind, finden Sie weitere Informationen unter Überblick über IAM.

Im Allgemeinen muss ein IAM-Administrator in Ihrer Organisation den folgenden Prozess ausführen:

  1. Benutzer, Gruppen und ein oder mehrere Compartments für die Cloud-Ressourcen Ihrer Organisation definieren.
  2. Eine oder mehrere Policys erstellen, die jeweils in der Policy-Sprache geschrieben sind. Siehe Allgemeine Policys.
  3. Benutzer in die entsprechenden Gruppen einfügen, je nachdem, mit welchen Compartments und Ressourcen sie arbeiten müssen.
  4. Benutzern die Einmalkennwörter bereitstellen, die sie benötigen, um auf die Konsole zuzugreifen und mit den Compartments zu arbeiten. Weitere Informationen finden Sie unter Benutzerzugangsdaten.

Nachdem der Administrator diese Schritte ausgeführt hat, können die Benutzer auf die Konsole zugreifen, ihre Einmalkennwörter ändern und mit bestimmten Cloud-Ressourcen arbeiten, wie in den Policys angegeben.

Policy-Basisdaten

Um den Zugriff auf Ihre Ressourcen zu kontrollieren, verfügt Ihr Unternehmen über mindestens eine Policy. Jede Policy besteht aus mindestens einer Policy-Anweisung, die gemäß folgender Basissyntax aufgebaut ist:

Allow group <identity_domain_name>/<group_name> to <verb> <resource-type> in compartment <compartment_name>
Hinweis

Wenn Sie <identity_domain_name> nicht vor <group_name> aufnehmen, wird die Policy-Anweisung ausgewertet, als ob die Gruppe zur Standardidentitätsdomain gehört.

Beachten Sie, dass die Anweisungen immer mit dem Wort Allow beginnen. Policys ermöglichen nur Zugriff. Sie können ihn nicht verweigern. Stattdessen gibt es eine implizite Verweigerung. Das bedeutet, dass Benutzer standardmäßig keine Aktionen ausführen können und über Policys Zugriff erhalten müssen. (Für diese Regel gibt es eine Ausnahme. Weitere Informationen dazu finden Sie unter Können Benutzer keine Aktionen ausführen, ohne dass ein Administrator eine Policy für sie schreibt?)

Ein Administrator in Ihrer Organisation definiert die Gruppen und Compartments in Ihrem Mandanten. Oracle definiert die möglichen Verben und Ressourcentypen, die Sie in Policys verwenden können (siehe Verben und Ressourcentypen).

In bestimmten Fällen möchten Sie die Policy vielleicht auf den Mandanten und nicht auf ein Compartment innerhalb des Mandanten anwenden. Ändern Sie in diesem Fall das Ende der Policy-Anweisung wie folgt:

Allow group <identity_domain_name>/<group_name> to <verb> <resource-type> in tenancy

Weitere Informationen zur Syntax finden Sie unter Policy-Syntax.

Informationen dazu, wie viele Policys Sie haben können, finden Sie unter Servicelimits.

Beispiele

Angenommen, der Administrator erstellt eine Gruppe mit dem Namen HelpDesk (in der Standardidentitätsdomain), deren Aufgabe es ist, Benutzer und deren Zugangsdaten zu verwalten. Mit der folgenden Policy kann das ermöglicht werden:

Allow group default/HelpDesk to manage users in tenancy

Da sich Benutzer im Mandanten (das Root-Compartment) befinden, enthält die Policy nur das Wort tenancy, ohne das Wort compartment davor.

Als Nächstes nehmen wir an, Sie haben ein Compartment mit dem Namen Project-A und eine Gruppe (in der Standardidentitätsdomain) mit dem Namen A-Admins, deren Aufgabe es ist, alle Oracle Cloud Infrastructure-Ressourcen im Compartment zu verwalten. Mit der folgenden Beispiel-Policy kann das ermöglicht werden:

Allow group default/A-Admins to manage all-resources in compartment Project-A

Beachten Sie, dass die Policy direkt oben die Möglichkeit beinhaltet, Policys für dieses Compartment zu schreiben, d.h. die Gruppe "A-Admins" kann den Zugriff auf die Ressourcen des Compartments kontrollieren. Weitere Informationen finden Sie unter Policy-Zuordnung.

Wenn Sie den Zugriff der Gruppe "A-Admins" nur auf das Starten und Verwalten von Compute-Instanzen und Blockspeicher-Volumes (sowohl die Volumes als auch die zugehörigen Backups) im Compartment "Project-A" begrenzen möchten, sich das Netzwerk selbst jedoch im Compartment "Networks" befindet, könnte die Policy stattdessen wie folgt aussehen:

Allow group default/A-Admins to manage instance-family in compartment Project-A

Allow group default/A-Admins to manage volume-family in compartment Project-A

Allow group default/A-Admins to use virtual-network-family in compartment Networks

Die dritte Anweisung mit dem Ressourcentyp virtual-network-family ermöglicht den Instanzstartprozess, da das Cloud-Netzwerk beteiligt ist. Der Startprozess erstellt insbesondere eine neue VNIC und hängt sie an das Subnetz an, in dem sich die Instanz befindet.

Weitere Beispiele finden Sie unter Allgemeine Policys.

Details über die Angabe von Gruppen und Compartments

Im Allgemeinen geben Sie eine Gruppe oder ein Compartment mit dem jeweiligen Namen in der Policy an. Sie können stattdessen auch die OCID verwenden. Achten Sie darauf, "id" vor der OCID einzufügen. Beispiel:

Allow group

 id ocid1.group.oc1..aaaaaaaaqjihfhvxmumrl3isyrjw3n6c4rzwskaawuc7i5xwe6s7qmnsbc6a

 to manage instance-family in compartment Project-A

Sie können mehrere Gruppen angeben, die durch IAM-Komma getrennt sind:

Allow group default/A-Admins, default/B-Admins to manage instance-family in compartment Projects-A-and-B
Hinweis

Wenn Sie den Namen einer Gruppe, dynamischen Gruppe oder eines Compartments in einer Policy verwenden, wird die Policy der OCID der Gruppe, dynamischen Gruppe oder des Compartments beim Erstellen der Policy zugeordnet. Wenn sich die OCID der Gruppe, der dynamischen Gruppe oder des Compartments ändert, müssen Sie eine der Policys neu kompilieren, die für die Gruppe oder das Compartment gilt, um die OCID in allen Policys zu aktualisieren.

Um die Policy neu zu kompilieren, öffnen Sie eine Policy, und nehmen Sie eine kleine Bearbeitung vor. Speichern Sie die Policy.

Verben

Oracle definiert die möglichen Verben, die Sie in Ihren Policys verwenden können. Die folgende Tabelle enthält eine Zusammenfassung der Verben, von der geringsten Zugriffsberechtigung bis zur höchsten:

Verb Abgedeckte Zugriffstypen Zielbenutzer
inspect Möglichkeit, Ressourcen aufzulisten, ohne auf vertrauliche Informationen oder benutzerdefinierte Metadaten zuzugreifen, die Bestandteil dieser Ressource sein könnten. Wichtig: Der Vorgang zum Auflisten von Policys umfasst den Inhalt der Policys selbst, und die Auflistvorgänge für die Networking-Ressourcentypen geben alle Informationen zurück (z.B. den Inhalt von Sicherheitslisten und Routentabellen). Unabhängige Auditoren
read Umfasst inspect sowie die Möglichkeit, benutzerdefinierte Metadaten und die Ressource selbst abzurufen. Interne Auditoren
use Umfasst read sowie die Möglichkeit, mit vorhandenen Ressourcen zu arbeiten (die Aktionen sind je nach Ressourcentyp unterschiedlich). Umfasst die Möglichkeit, die Ressource mit Ausnahme von Ressourcentypen zu aktualisieren, bei denen der "update"-Vorgang dieselbe Auswirkung wie der "create"-Vorgang hat (Beispiel: UpdatePolicy, UpdateSecurityList usw.). In diesem Fall ist die "update"-Möglichkeit nur mit dem Verb manage verfügbar. Im Allgemeinen beinhaltet dieses Verb nicht das Erstellen oder Löschen dieses Ressourcentyp. Alltägliche Endbenutzer von Ressourcen
manage Umfasst alle Berechtigungen für die Ressource. Administratoren

Das Verb erteilt einen bestimmten allgemeinen Zugriffstyp (Beispiel: Mit inspect können Sie Ressourcen auflisten und abrufen). Wenn Sie dann diesen Zugriffstyp mit einem bestimmten Ressourcentyp in einer Policy verknüpfen (z.B. Allow group XYZ to inspect compartments in the tenancy), erteilen Sie dieser Gruppe Zugriff auf bestimmte Berechtigungen und API-Vorgänge (z.B. ListCompartments, GetCompartment). Weitere Beispiele finden Sie unter Details für Kombinationen aus Verb + Ressourcentyp. Die Policy-Referenz enthält eine ähnliche Tabelle für jeden Service, in der genau angegeben ist, welche API-Vorgänge für jede Kombination aus Verb und Ressourcentyp abgedeckt sind.

Für bestimmte Ressourcentypen gibt es einige spezielle Ausnahmen oder Nuancen.

Benutzer: Mit Zugriff auf manage users und manage groups können Sie alle Aktionen für Benutzer und Gruppen ausführen, einschließlich Erstellen und Löschen von Benutzern und Gruppen sowie Hinzufügen/Entfernen von Benutzern zu/aus Gruppen. Um Benutzer ohne Zugriff auf das Erstellen und Löschen von Benutzern und Gruppen zu Gruppen hinzuzufügen bzw. daraus zu entfernen, sind nur use users und use groups erforderlich. Siehe Allgemeine Policys.

Policys: Die Möglichkeit, eine Policy zu aktualisieren, ist nur mit manage policies und nicht mit use policies verfügbar, da das Aktualisieren einer Policy ähnliche Auswirkungen wie das Erstellen einer neuen Policy hat (Sie können die vorhandenen Policy-Anweisungen überschreiben). Außerdem können Sie mit inspect policies den vollständigen Inhalt der Policys abrufen.

Object Storage-Objekte: Mit inspect objects können Sie alle Objekte in einem Bucket auflisten und für ein bestimmtes Objekt einen HEAD-Vorgang ausführen. Mit read objects können Sie hingegen das Objekt selbst herunterladen.

Load Balancer-Ressourcen: Beachten Sie, dass Sie mit inspect load-balancers alle Informationen zu Load Balancer und den zugehörigen Komponenten (Backend-Sets usw.) abrufen können.

Networking-Ressourcen:

Beachten Sie, dass das Verb inspect nicht nur allgemeine Informationen zu den Komponenten des Cloud-Netzwerks zurückgibt (Beispiel: Name und OCID einer Sicherheitsliste oder einer Routentabelle). Es ruft auch den Inhalt der Komponente (z.B. die eigentlichen Regeln in der Sicherheitsliste, die Routen in der Routentabelle usw.) ab.

Außerdem sind die folgenden Möglichkeiten nur mit dem Verb manage und nicht mit dem Verb use verfügbar:

  • Aktualisieren (aktivieren/deaktivieren) von internet-gateways
  • security-lists aktualisieren
  • route-tables aktualisieren
  • dhcp-options aktualisieren
  • Ein dynamisches Routinggateway (DRG) an ein virtuelles Cloud-Netzwerk (VCN) anhängen
  • Eine IPSec-Verbindung zwischen einem DRG und Customer Premises Equipment (CPE) erstellen
  • Peer-VCNs
Wichtig

Jedes VCN verfügt über verschiedene Komponenten, die sich direkt auf das Verhalten des Netzwerks auswirken (Routentabellen, Sicherheitslisten, DHCP-Optionen, Internetgateway usw.). Wenn Sie eine dieser Komponenten erstellen, richten Sie eine Beziehung zwischen dieser Komponente und dem VCN ein. Das heißt, Sie müssen in einer Policy sowohl die Komponente erstellen als auch das VCN selbst verwalten dürfen. Die Möglichkeit, diese Komponente zu aktualisieren (um die Routingregeln, Sicherheitslistenregeln usw. zu ändern) erfordert jedoch NICHT die Berechtigung zur Verwaltung des VCN selbst, auch wenn sich die Änderung dieser Komponente direkt auf das Verhalten des Netzwerks auswirkt. Diese Diskrepanz bietet Ihnen die Flexibilität, Benutzern die geringste Berechtigungsstufe zu erteilen, und Sie müssen dem VCN keinen übermäßigen Zugriff gewähren, damit der Benutzer andere Komponenten des Netzwerks verwalten kann. Wenn Sie jemandem die Möglichkeit geben, einen bestimmten Komponententyp zu aktualisieren, vertrauen Sie ihm implizit die Kontrolle über das Verhalten des Netzwerks an.

Ressourcentypen

Oracle definiert auch die Ressourcentypen, die Sie in den Policys verwenden können. Zunächst gibt es individuelle Typen. Jeder individuelle Typ stellt einen bestimmten Ressourcentyp dar. Beispiel: Der Ressourcentyp vcns gilt speziell für virtuelle Cloud-Netzwerke (VCNs).

Um das Schreiben von Policys zu vereinfachen, gibt es sogenannte Familientypen, die mehrere individuelle Ressourcentypen umfassen, die häufig zusammen verwaltet werden. Zum Typ virtual-network-family gehört beispielsweise eine Vielzahl von Typen, die sich auf die Verwaltung von VCNs beziehen (z.B. vcns, subnets, route-tables, security-lists usw.). Sie können eine granularere Policy schreiben, die nur Zugriff auf einen individuellen Ressourcentyp erteilt. Sie können jedoch auch ganz einfach eine Policy schreiben, um den Zugriff auf eine größere Anzahl verschiedener Ressourcen zu ermöglichen.

Weiteres Beispiel: Block Volume umfasst volumes, volume-attachments und volume-backups. Wenn Sie nur den Zugriff auf das Erstellen von Backups der Volumes erteilen müssen, können Sie den Ressourcentyp volume-backups in der Policy angeben. Wenn Sie jedoch einen breiten Zugriff auf alle Block Volume-Ressourcen erteilen müssen, können Sie den Familientyp volume-family angeben. Eine vollständige Liste der Familienressourcentypen finden Sie unter Ressourcentypen.

Wichtig

Wenn ein Service neue individuelle Ressourcentypen einführt, sind diese in der Regel im Familientyp für diesen Service enthalten. Beispiel: Wenn Networking einen neuen individuellen Ressourcentyp einführt, wird er automatisch in die Definition des Ressourcentyps virtual-network-family aufgenommen. Weitere Informationen zu zukünftigen Änderungen an den Definitionen von Ressourcentypen finden Sie unter Policys und Serviceaktualisierungen.

Beachten Sie, dass es weitere Möglichkeiten gibt, Policys mehr Granularität zu verleihen, z.B. die Möglichkeit, Bedingungen anzugeben, unter denen der Zugriff erteilt wird. Weitere Informationen finden Sie unter Erweiterte Policy-Features.

Wichtig

Wenn ein Service neue Berechtigungen für einen vorhandenen Ressourcentyp einführt, müssen Sie die Policy-Anweisung für den vorhandenen Ressourcentyp aktualisieren, damit die neuen Berechtigungen in Kraft treten. Weitere Informationen finden Sie unter Neue Berechtigungen in Ressourcentypen werden nicht propagiert.

Zugriff, der mehrere Ressourcentypen erfordert

Einige API-Vorgänge erfordern Zugriff auf mehrere Ressourcentypen. Beispiel: LaunchInstance erfordert die Möglichkeit, Instanzen zu erstellen und mit einem Cloud-Netzwerk zu arbeiten. Für den Vorgang CreateVolumeBackup ist der Zugriff auf das Volume und das Volume-Backup erforderlich. Das heißt, Sie haben separate Anweisungen für den Zugriff auf jeden Ressourcentyp (ein Beispiel finden Sie unter Nur das Verwalten von Backups durch Volume-Backupadministratoren zulassen). Diese einzelnen Anweisungen müssen sich nicht in derselben Policy befinden. Und ein Benutzer kann den erforderlichen Zugriff aus unterschiedlichen Gruppen erhalten. Beispiel: George könnte einer Gruppe angehören, die die erforderliche Zugriffsebene für den Ressourcentyp volumes erteilt, und einer anderen Gruppe angehören, die den erforderlichen Zugriff auf den Ressourcentyp volume-backups erteilt. Die Summe der einzelnen Anweisungen, unabhängig vom jeweiligen Speicherort in der Gesamtheit aller Policys, ermöglicht George den Zugriff auf CreateVolumeBackup.

Policy-Vererbung

Eine grundlegendes Feature von Policys ist das Konzept der Vererbung: Compartments erben alle Policys aus dem übergeordneten Compartment. Das einfachste Beispiel ist die Administratorengruppe, die automatisch im Mandanten erstellt wird (siehe Administratorengruppe, Policy und Administratorrollen). Es gibt eine integrierte Policy, mit der die Administratorengruppe (in der Standardidentitätsdomain) alle Aktionen im Mandanten ausführen kann:

Allow group Administrators to manage all-resources in tenancy

Dank der Policy-Vererbung kann die Administratorengruppe auch alle Aktionen in allen Compartments im Mandanten ausführen.

Zur weiteren Verdeutlichung stellen Sie sich einen Mandanten mit drei Compartment-Ebenen vor: "CompartmentA", "CompartmentB" und "CompartmentC", wie hier dargestellt:

Das Bild zeigt "CompartmentA". "CompartmentB", "CompartmentC" Hierarchie

Policys, die für Ressourcen in "CompartmentA" gelten, gelten auch für Ressourcen in "CompartmentB" und "CompartmentC". Deshalb ermöglicht diese Policy:

Allow group default/NetworkAdmins to manage virtual-network-family in compartment CompartmentA

der Gruppe NetworkAdmins (in der Standardidentitätsdomain) die Verwaltung von VCNs in CompartmentA, CompartmentB und CompartmentC.

Policy-Zuordnung

Ein weiteres grundlegendes Feature von Policys ist das Konzept der Zuordnung. Wenn Sie eine Policy erstellen, müssen Sie sie einem Compartment (oder dem Mandanten, d.h. dem Root-Compartment) zuordnen. Wo Sie Kontrollen anhängen, wer sie dann ändern oder löschen kann. Wenn Sie sie dem Mandanten zuordnen (z.B. wenn sich die Policy im Root-Compartment befindet), können alle Personen mit einer Berechtigung zur Verwaltung von Policys im Mandanten die Policy ändern oder löschen. Hierbei handelt es sich in der Regel um die Administratorengruppe oder eine ähnliche Gruppe, die Sie erstellen und der Sie umfangreichen Zugriff erteilen. Alle Benutzer, die nur Zugriff auf ein untergeordnetes Compartment haben, können diese Policy nicht ändern oder löschen.

Wenn Sie die Policy stattdessen einem untergeordneten Compartment zuordnen, können alle Benutzer mit einer Berechtigung zur Verwaltung der Policys in diesem Compartment die Policy ändern oder löschen. Praktisch gesehen können Sie Compartment-Administratoren (z.B. einer Gruppe mit Zugriff auf manage all-resources im Compartment) dadurch ganz einfach die Berechtigung zur Verwaltung der Policys in ihrem eigenen Compartment erteilen, ohne dass sie mehr Berechtigungen für das Verwalten von Policys im jeweiligen Mandanten erhalten. Ein Beispiel für ein solches Setup für Compartment-Administratoren finden Sie unter Beispielszenario. (Dank der Policy-Vererbung können Benutzer mit Zugriff auf die Verwaltung von Policys im Mandanten automatisch Policys in Compartments innerhalb des Mandanten verwalten.)

Das Anhängen der Policy ist einfach (bei Anhängen an ein Compartment oder den Mandanten): Wenn Sie die Konsole verwenden und die Policy zu IAM hinzufügen, vergewissern Sie sich, dass Sie beim Erstellen der Policy das richtige Compartment ausgewählt haben. Wenn Sie die API verwenden, geben Sie die OCID des richtigen Compartments (des Mandanten oder eines anderen Compartments) als Bestandteil der Anforderung zum Erstellen der Policy an.

Policys und Compartment-Hierarchien

Wie im vorherigen Abschnitt beschrieben, muss in einer Policy-Anweisung das Compartment angegeben werden, für das der Zugriff erteilt wird (oder den Mandanten). Wer die Policy aktualisieren kann, hängt davon ab, wo Sie die Policy erstellen. Wenn Sie die Policy dem Compartment oder dem jeweils übergeordneten Element zuordnen, können Sie einfach den Compartment-Namen angeben. Wenn Sie die Policy einem Element weiter oben in der Hierarchie zuordnen, müssen Sie den Pfad angeben. Das Format des Pfads besteht aus dem Namen der einzelnen Compartments (oder der OCID) im Pfad, durch einen Doppelpunkt getrennt:

<compartment_level_1>:<compartment_level_2>: . . . <compartment_level_n>

Beispiel: Angenommen, Sie haben eine Compartment-Hierarchie mit drei Ebenen, wie hier dargestellt:

Das Bild zeigt "CompartmentA". "CompartmentB", "CompartmentC" Hierarchie

Sie möchten eine Policy erstellen, mit der "NetworkAdmins" (in der Standardidentitätsdomain) VCNs in "CompartmentC" verwalten kann. Wenn Sie diese Policy "CompartmentC" oder dem übergeordneten Element "CompartmentB" zuordnen möchten, schreiben Sie diese Policy-Anweisung:

Allow group default/NetworkAdmins to manage virtual-network-family in compartment CompartmentC

Wenn Sie diese Policy jedoch "CompartmentA" zuordnen möchten (sodass nur Administratoren von "CompartmentA" sie ändern können), schreiben Sie diese Policy-Anweisung mit Pfadangabe:

Allow group default/NetworkAdmins to manage virtual-network-family in compartment CompartmentB:CompartmentC

Um diese Policy dem Mandanten zuzuordnen, schreiben Sie diese Policy-Anweisung, die den Pfad von "CompartmentA" zu "CompartmentC" angibt:

Allow group default/NetworkAdmins to manage virtual-network-family in compartment CompartmentA:CompartmentB:CompartmentC

Policys und Serviceaktualisierungen

Die Definition eines Verbs oder Ressourcentyps kann sich in Zukunft ändern. Beispiel: Der Ressourcentyp virtual-network-family wird geändert und enthält eine neue Art von Ressource, die zu Networking hinzugefügt wurde. Standardmäßig werden Policys bei Änderungen an der Servicedefinition automatisch aktualisiert, sodass alle Policys, die Zugriff auf virtual-network-family erteilen, automatisch den Zugriff auf die neu hinzugefügte Ressource umfassen.

Wichtig

Wenn ein Service neue Berechtigungen für einen vorhandenen Ressourcentyp einführt, müssen Sie die Policy-Anweisung für den vorhandenen Ressourcentyp aktualisieren, damit die neuen Berechtigungen in Kraft treten. Weitere Informationen finden Sie unter Neue Berechtigungen in Ressourcentypen werden nicht propagiert.

Policys für jeden Service schreiben

Die Policy-Referenz enthält Details zu den spezifischen Ressourcentypen für jeden Service und gibt an, welche Kombination aus Verb + Ressourcentyp den Zugriff auf welche API-Vorgänge ermöglicht.