Hinweis:
- Dieses Tutorial erfordert Zugriff auf Oracle Cloud. Informationen zur Registrierung für einen kostenlosen Account finden Sie unter Erste Schritte mit Oracle Cloud Infrastructure Free Tier.
- Es verwendet Beispielwerte für Oracle Cloud Infrastructure-Zugangsdaten, -Mandanten und -Compartments. Ersetzen Sie diese Werte nach Abschluss der Übung durch Werte, die für Ihre Cloud-Umgebung spezifisch sind.
Ausführliche Informationen zu tagbasierten Oracle Cloud Infrastructure Identity and Access Management-Policys
Einführung
Oracle Cloud Infrastructure Identity and Access Management-(OCI IAM-)Policys sind der Eckpfeiler einer robusten und sicheren Cloud-Umgebung. Sie bieten einen leistungsstarken, flexiblen Mechanismus zur Kontrolle des Zugriffs auf OCI-Ressourcen, mit dem sichergestellt wird, dass nur autorisierte Benutzer und Services bestimmte Aktionen für bestimmte Ressourcen ausführen können.
Im Kern besteht eine OCI-IAM-Policy aus einer Reihe deklarativer Anweisungen, die in einer menschenlesbaren Syntax geschrieben sind, die vorgibt, wer auf was und unter welchen Bedingungen zugreifen kann. Mit diesen Policys können Unternehmen das Prinzip der geringsten Berechtigungen durchsetzen, indem sie Benutzern und Services nur die Berechtigungen erteilen, die sie zur Ausführung ihrer Aufgaben benötigen, und nicht mehr. Dadurch werden Sicherheitsrisiken minimiert und die Betriebseffizienz beibehalten.
OCI-IAM-Policys werden auf verschiedenen Ebenen der OCI-Hierarchie angewendet, einschließlich Compartments, Mandanten und bestimmten Ressourcen, sodass sie sich sehr an komplexe Organisationsstrukturen anpassen lassen. Mit der Policy-Vererbung und Compartmentisierung von OCI können Administratoren granulare Kontrollen einrichten, die auf ihre spezifischen Sicherheits- und Betriebsanforderungen zugeschnitten sind. Weitere Informationen zu OCI-Policys finden Sie unter Erste Schritte mit Policys.
In diesem Tutorial werden wir uns mit der Bedeutung der Richtlinienoptimierung befassen, die Best Practices für die Feinabstimmung von Richtlinien untersuchen, um optimale Ergebnisse zu erzielen, und Szenarien hervorheben, in denen die Richtlinienoptimierung in vollem Umfang genutzt werden kann.
Ziele
-
Policy-Komponenten und -Syntax entmystifizieren
-
Erfahren Sie, warum die Optimierung von OCI-IAM-Policys für Skalierbarkeit und Policy-Limits von entscheidender Bedeutung ist.
-
Bieten Sie umsetzbare Best Practices.
-
Betonen Sie die Rolle des Taggings im Policy-Management.
-
Heben Sie häufige Herausforderungen und Lösungen hervor, indem Sie reale Anwendungsfälle präsentieren.
Voraussetzungen
-
Zugriff auf einen OCI-Mandanten.
-
Grundlegendes Verständnis der OCI-Konzepte.
-
Kenntnisse über OCI IAM.
-
Vertrautheit mit Policy-Syntax.
-
Grundlagen zur Compartmentisierung und Tagging.
-
Das Bewusstsein für das Prinzip der geringsten Privilegien.
-
OCI-Policy begrenzt das Wissen.
-
Erfahrung mit Governance- und Compliancestandards.
Policy-Komponenten und -Syntax entmystifizieren
Um OCI IAM-Policys effektiv zu optimieren, ist es wichtig, ihre Struktur und Schlüsselkomponenten zu verstehen. Policys in OCI definieren Berechtigungen, indem sie angeben, wer (Principal), was (Aktion) was (Ressource) und wo (Geltungsbereich) ist. Im Folgenden wird dies ausführlicher beschrieben:
Schlüsselkomponenten einer OCI-IAM-Policy
-
Principal (Betreff): Die Entität, die Zugriff anfordert. Dabei kann es sich um eine der folgenden Optionen handeln:
-
Benutzer: Ein einzelner Account in OCI, der in der Regel eine Person darstellt. Weitere Informationen finden Sie unter Benutzer verwalten.
-
Gruppe: Eine Sammlung von Benutzern mit gemeinsamen Zugriffsanforderungen. Weitere Informationen finden Sie unter Mit Gruppen arbeiten.
-
Dynamische Gruppe: Ein Set von OCI-Ressourcen (z.B. Compute-Instanzen, Funktionen), die durch bestimmte Regeln identifiziert werden. Ressourcen in einer dynamischen Gruppe werden automatisch basierend auf Kriterien wie Tags oder Metadaten gruppiert. Weitere Informationen finden Sie unter Dynamische Gruppen verwalten.
-
Resource Principal: Ein Service (wie OCI Functions oder Oracle Autonomous Database), der in seinem eigenen Namen handelt. Resource Principals ermöglichen es Services, sich sicher mit OCI und anderen Ressourcen zu authentifizieren, ohne dass explizite Zugangsdaten erforderlich sind. Weitere Informationen finden Sie unter Resource Principal Authentication.
-
Instanz-Principal: Ein für Compute-Instanzen spezifischer Resource Principal-Typ. Damit können Instanzen direkt mit OCI-Services (z.B. OCI Object Storage oder Identity) mit OCI-IAM-Policys interagieren, ohne Zugangsdaten in die auf der Instanz ausgeführte Anwendung einzubetten. Weitere Informationen finden Sie unter Instanz-Principals.
-
-
Aktion (Verb): Gibt Vorgänge an, die der Principal ausführen kann:
inspect
: Zeigen Sie Metadaten zur Ressource an.read
: Zeigen Sie Metadaten und Daten innerhalb der Ressource an.use
: Führen Sie Leseaktionen und eingeschränkte Verwaltungsvorgänge aus.manage
: Führen Sie alle Aktionen aus, einschließlich Erstellen und Löschen von Ressourcen.
Weitere Informationen finden Sie unter Vorgänge.
-
Ressource (Ressourcentyp): Definiert den Typ der OCI-Ressource, für die die Aktion gilt. Beispiel:
- Compute-Instanzen, Speicher-Buckets, VCNs, Datenbanken usw.
- Ressourcen können zur besseren Verwaltung hierarchisch mit Compartments organisiert werden.
Weitere Informationen finden Sie unter Ressourcen.
-
Geltungsbereich (Speicherort): Gibt den Speicherort an, an dem die Policy angewendet wird:
- Compartment: Ein logischer Container für Ressourcen, der eine hierarchische Organisation ermöglicht.
- Mandant: Der gesamte OCI-Account, der in der Regel für globale Berechtigungen verwendet wird.
Weitere Informationen finden Sie unter Standort.
-
Abgleichsregel (Bedingungen): Geben Sie eine oder mehrere Bedingungen an. Verwenden Sie beliebige oder alle mit mehreren Bedingungen für ein logisches ODER bzw. UND.
- Syntax für eine einzelne Bedingung:
variable =|!= value
. - Syntax für mehrere Bedingungen:
any|all {<condition>,<condition>,...}
.
Weitere Informationen finden Sie unter Bedingungen.
- Syntax für eine einzelne Bedingung:
Bonustipp: Sets-Intersect-Konzept in OCI-IAM-Policy verstehen
Mit dem Sets-Intersect in OCI-IAM-Policys wird nur dann Zugriff erteilt, wenn sich zwei Wertesets überschneiden. Dadurch wird sichergestellt, dass Berechtigungen dynamisch basierend auf Gruppenmitgliedschaft, Ressourcentags oder anderen Attributen erteilt werden, anstatt bestimmte Benutzer oder Gruppen in Policys hartcodieren zu müssen.
-
Beispiel für Sets-Intersect in OCI IAM-Policy
Allow any-user to manage database-family-resources in tenancy where sets-intersect(request.groups.name, target.resource.compartment.tag.database.admins)
Abbruch der Policy-Anweisung:
-
Benutzer zulassen: Diese Policy gilt für alle authentifizierten Benutzer in OCI (unabhängig von der jeweiligen Gruppenmitgliedschaft).
-
Datenbank-Familie-Ressourcen verwalten: Erteilt vollständige administrative Kontrolle über alle datenbankbezogenen Ressourcen (autonome Datenbanken, Datenbanksysteme, Backups usw.).
-
im Mandanten: Die Policy gilt für den gesamten Mandanten (alle Compartments).
-
wobei sets-intersect(
request.groups.name
,target.resource.compartment.tag.database.admins
)request.groups.name
: Stellt die Gruppen dar, zu denen der Benutzer gehört.target.resource.compartment.tag.database.admins
: Ein Tag im Compartment, das eine Liste der zulässigen Gruppen enthält, die Datenbankressourcen in diesem Compartment verwalten können.- sets-intersect(...): Stellt sicher, dass der Zugriff nur erteilt wird, wenn der Benutzer zu mindestens einer im Tag aufgeführten Gruppe gehört.
-
OCI-IAM-Policy-Modell für großen Umfang
OCI-IAM-Policys sind eines der grundlegenden Elemente zur Sicherung von Workloads auf OCI. Es ist entscheidend, eine große Arbeitslast für unsere Kunden skalieren und unterstützen zu können. Aus diesem Grund haben wir ein Policy-Modell erstellt, das eine kleine Anzahl von Policys innerhalb der Policy-Limits von OCI erfordert, die für jede Workload-Größe funktionieren. Im Folgenden finden Sie einige Gründe für die Einführung des skalierbaren Policy-Modells. Weitere Informationen finden Sie unter IAM mit Identitätsdomainlimits.
Das Tuning von OCI-IAM-Policys ist eine wichtige Aufgabe für die Aufrechterhaltung einer sicheren, skalierbaren und effizienten Cloud-Umgebung bei gleichzeitiger Einhaltung der Policy-Limits von OCI. Deshalb ist dieser Prozess unerlässlich:
-
Policy-Limits und -Constraints: OCI erzwingt bestimmte Limits für die Anzahl der Policys, die innerhalb eines Mandanten und Compartments erstellt werden können. Diese Grenzwerte können in großen oder komplexen Umgebungen schnell ausgeschöpft werden, wenn Richtlinien nicht optimiert sind.
-
Zu den wichtigsten Gründen gehören:
- Redundanz vermeiden: Das wiederholte Definieren ähnlicher Policys für verschiedene Compartments oder Ressourcen kann zu Policy-Blutungen führen, was die Verwaltung erschwert.
- In OCI-Policy-Limits bleiben: OCI verfügt über eine maximale Anzahl von Policy-Anweisungen pro Policy und pro Mandant. Tuning stellt sicher, dass Sie diese Grenzen nicht vorzeitig erreichen.
-
-
Verbesserte Verwaltbarkeit: Wenn Unternehmen wachsen, kann die Verwaltung von Hunderten von Richtlinien über mehrere Compartments hinweg ohne Optimierung unhandlich werden. Optimierte Policys:
- Vereinfachen Sie die Verwaltung, indem Sie die Gesamtzahl der Richtlinien reduzieren.
- Verbessern Sie die Klarheit, und vermeiden Sie überlappende oder widersprüchliche Regeln, um das Debugging und Auditing zu vereinfachen.
-
Skalierbarkeit über komplexe Umgebungen: Optimierte Policys ermöglichen eine nahtlose Skalierung durch:
- Verwenden Sie Platzhalter und Berechtigungen auf Ressourcenebene, um die Notwendigkeit für Compartment-spezifische oder ressourcenspezifische Regeln zu reduzieren. Weitere Informationen finden Sie unter Bedingungen.
- Policy-Vererbung nutzen, sodass Policys auf höherer Ebene auf untergeordnete Compartments angewendet werden, ohne dass doppelte Anweisungen erforderlich sind. Weitere Informationen finden Sie unter Policy-Vererbung.
- Benutzer und Ressourcen logisch gruppieren, um umfassendere, aber dennoch sichere Berechtigungen anzuwenden
-
Performanceoptimierung: OCI wertet Policys während jeder Zugriffsanforderung aus. Eine große Anzahl redundanter oder zu spezifischer Richtlinien kann die Evaluierungszeit verlängern und möglicherweise zu langsameren Entscheidungen über die Zugriffskontrolle führen. Optimierte Richtlinien reduzieren den Overhead und sorgen für schnellere und effizientere Abläufe.
-
Nach dem Least-Privilege-Prinzip: Während der Optimierung der Skalierbarkeit ist es wichtig, das Least-Privilege-Prinzip beizubehalten. Umfassende, ungeprüfte Richtlinien können die Sicherheit beeinträchtigen. Daher ist es unerlässlich, ein Gleichgewicht zwischen minimalem Zugriff und Skalierbarkeit herzustellen.
Die Rolle von Tagging im Policy-Management
Tagging ist ein leistungsstarkes Feature in OCI, das das Policy-Management erheblich verbessert, indem eine fein granulierte Kontrolle über Ressourcen ermöglicht wird. Tags sind Metadatenlabels, die als Schlüssel/Wert-Paare dargestellt werden und an Ressourcen angehängt werden können. Sie helfen bei der Organisation, Verwaltung und Durchsetzung der Zugriffskontrolle in großem Maßstab, insbesondere in komplexen Cloud-Umgebungen mit mehreren Teams und Projekten. Weitere Informationen finden Sie unter Überblick über Tagging.
So verbessert Tagging das Policy-Management
-
Vereinfacht die Ressourcenidentifizierung: Tags bieten eine einheitliche Möglichkeit, Ressourcen basierend auf Attributen wie Projekten, Umgebungen, Verantwortlichen oder Abteilungen zu kategorisieren. Dadurch wird die Anwendung von Policys auf bestimmte Teilmengen von Ressourcen vereinfacht.
Beispiel: Durch Tagging von Ressourcen mit
Project: ProjectX
werden gezielte Zugriffs-Policys aktiviert.Allow group Developers to manage instances in tenancy where tag.Project = 'ProjectX'
-
Dynamische Policy-Durchsetzung aktivieren: Policys, die auf Tags basieren, passen sich an sich ändernde Ressourcenattribute an. Beispiel: Wenn eine neue Instanz mit
Environment: Production
getaggt ist, erbt sie automatisch Policys, die für Produktionsumgebungen definiert sind.Beispiel-Policy:
Allow group QA to inspect instances in tenancy where tag.Environment = 'Test'
-
Optimierung der Governance für mehrere Projekte und Teams: Mit Tags können Sie den Zugriff isolieren, indem Sie Ressourcen bestimmten Teams oder Projekten zuordnen. Dies reduziert die Komplexität bei der Verwaltung von Berechtigungen über mehrere Gruppen hinweg.
-
Erleichtert die Automatisierung: Tags können automatisierte Workflows für die Erstellung, Überwachung und das Lebenszyklusmanagement von Ressourcen fördern. Beispiel: Kostenverfolgungsskripte können alle Ressourcen abrufen, die mit CostCenter: Marketing getaggt sind, um detaillierte Spesenabrechnungen zu generieren.
-
Verbessert Kostenmanagement und Reporting: Tags ermöglichen eine detaillierte Kostenzuordnung zu bestimmten Projekten, Abteilungen oder Umgebungen. Auf diese Weise können Unternehmen Ausgaben verfolgen und Budgets effektiver optimieren.
Tag-Governance: Tag-Management steuern
Um Konsistenz, Zuverlässigkeit und Sicherheit bei der Policy-Verwaltung zu gewährleisten, sollten die Erstellung und Änderung von Tags streng kontrolliert werden. Governance stellt sicher, dass Tags korrekt angewendet werden und den Organisationsstandards entsprechen. Die Beschränkung der Tagverwaltung auf eine bestimmte Gruppe von Einzelpersonen oder Gruppen ist ein Schlüsselelement für die Aufrechterhaltung der Kontrolle, Konsistenz und Sicherheit in der Cloud-Umgebung eines Unternehmens.
-
Warum Tag-Management einschränken?
Tagging ist ein leistungsstarkes Tool zur Organisation und Kontrolle von Ressourcen. Wenn es jedoch nicht verwaltet wird, kann es zu inkonsistenten oder nicht autorisierten Zugriffskontrollen, Kostenverfolgungsproblemen und Governance-Herausforderungen führen. Durch die Implementierung strenger Richtlinien darüber, wer Tags verwalten kann, können Unternehmen sicherstellen, dass nur autorisierte Mitarbeiter kritische Tags erstellen, ändern oder löschen können, um die Integrität der Umgebung zu wahren.
-
Nicht autorisierte Änderungen verhindern: Tags sind häufig an wichtige Geschäftsprozesse wie Kostenumlage, Ressourcenkategorisierung und Zugriffskontrolle gebunden. Der uneingeschränkte Zugriff zum Ändern von Tags kann zu nicht autorisierten oder versehentlichen Änderungen führen, die den Betrieb unterbrechen oder zu falsch zugewiesenen Ressourcen führen können.
-
Konsistente Taggingstandards sicherstellen: Unternehmen profitieren von standardisierten Taggingschemas, mit denen sie Ressourcen organisieren und eine einfache Verfolgung ermöglichen können. Durch die Beschränkung der Tag-Verwaltung auf eine definierte Gruppe von Administratoren können Unternehmen die Einhaltung dieser Standards sicherstellen und Fragmentierung und Inkonsistenz bei Tagging-Praktiken verhindern.
-
Sicherheit und Compliance verwalten: Tags können verwendet werden, um Sicherheits-Policys und Complianceanforderungen durchzusetzen. Tags können beispielsweise Umgebungen (z.B. Produktion, Entwicklung) oder Klassifizierungen für sensible Daten definieren. Wenn nur autorisierte Benutzer diese Tags ändern können, wird sichergestellt, dass sensible Umgebungen geschützt sind und Zugriffskontrollen korrekt erzwungen werden.
-
Risiko der Policy-Fehlkonfiguration verringern: Tagbasierte Policys in OCI (wie die Ressourcenzugriffskontrolle) hängen von einer konsistenten und genauen Tagnutzung ab. Wenn die falsche Gruppe oder Einzelperson Tags ändern oder löschen kann, kann dies versehentlich zu übermäßig breiten oder restriktiven Zugriffs-Policys führen.
-
-
So beschränken Sie das Tagmanagement in OCI
In OCI kann die Tagverwaltung gesteuert werden, indem OCI-IAM-Policys erstellt und angewendet werden, die definieren, wer Tagvorgänge wie das Erstellen, Aktualisieren oder Löschen von Tags ausführen kann. Diese Policys können angepasst werden, um bestimmten Benutzern, Gruppen oder Compartments Zugriff zu erteilen. So wird sichergestellt, dass nur autorisierte Personen kritische Tags ändern können.
Im Folgenden finden Sie einige Möglichkeiten, das Tag-Management auf bestimmte Personen oder Gruppen zu beschränken:
-
Gruppenbasierte Zugriffskontrolle verwenden: Der erste Schritt zur Kontrolle des Tagmanagements besteht darin, sicherzustellen, dass nur bestimmten Gruppen die erforderlichen Berechtigungen zur Verwaltung von Tags erteilt werden. Beispiel: Einer angegebenen Gruppe wie
TagAdmins
können exklusive Berechtigungen für die Tagerstellung und -aktualisierung erteilt werden.Beispiel für eine OCI-IAM-Policy:
Allow group TagAdmins to manage tag-namespaces in tenancy
Diese Policy stellt sicher, dass nur die Gruppe
TagAdmins
Tags und Tag-Namespaces im gesamten Mandanten erstellen, ändern oder löschen kann. Damit einige Gruppen wie devops-Ingenieure oder Terraform-Runner-Gruppen diese erstellten Tags über die Konsole für Skripte verwenden können, können Sie die folgende Policy definieren.Allow group devopsTeam to use tag-namespaces in tenancy Allow group terraformRunner to use tag-namespaces in tenancy Allow dynamic-group terraformRunner to use tag-namespaces in tenancy
-
Policys auf Compartment-Ebene für granulare Kontrolle verwenden: Tagverwaltungs-Policys können auf Compartment-Ebene angewendet werden, sodass nur bestimmte Compartments Zugriff auf die Tagverwaltung haben. Beispiel: Wenn Sie das Tagmanagement auf ein bestimmtes Projekt oder eine bestimmte Geschäftseinheit beschränken möchten, können Sie Policys anwenden, die den Tagzugriff im relevanten Compartment einschränken.
Beispiel-Policy für die Compartment-spezifische Tagverwaltung:
Allow group TagAdmins to manage tag-namespaces in compartment ProjectA
Dadurch wird sichergestellt, dass nur Benutzer in der Gruppe
TagAdmins
Tags im CompartmentProjectA
verwalten können, wodurch der Zugriff auf andere Compartments eingeschränkt wird. Außerdem können Sie Gruppen erstellen, damit Benutzer die erstellten Tags nur verwenden, aber nicht auf Compartment-Ebene ändern können.Allow group TagUser to use tag-namespaces in compartment ProjectA
-
Taggingkontrolle mit Tag-Namespaces: OCI unterstützt
tag namespaces
, die zugehörige Tags gruppieren. Sie können steuern, wer Tags in einem bestimmten Namespace verwalten kann. Dadurch können Sie genauer steuern, wer Zugriff auf bestimmte Tags hat.Beispiel-Policy für die Namespace-spezifische Tagverwaltung:
Allow group TagAdmins to manage tag-namespaces in tenancy where tag.namespace = 'Billing'
Dadurch wird sichergestellt, dass nur Benutzer mit
TagAdmins
-Berechtigungen Tags innerhalb des Abrechnungs-Namespace verwalten können, was eine engere Governance für Kostenverfolgungstags ermöglicht. -
Tagänderungen auditieren und überwachen: Um sicherzustellen, dass das Tagmanagement sicher bleibt, müssen Unternehmen Auditing- und Monitoring-Policys implementieren, um Änderungen an Tags zu verfolgen. Die Auditlogs von OCI bieten Einblick in Aktionen im Zusammenhang mit Tagerstellung, -löschung und -änderung. Durch die Überwachung dieser Logs können nicht autorisierte Versuche zur Änderung von Tags oder Mustern identifiziert werden, die auf Missmanagement hindeuten.
-
Tagbasierte OCI-IAM-Policys für Anwendungsfälle aus der Praxis
Lassen Sie uns jetzt mit all den oben genannten Informationen an der Optimierung von OCI IAM-Policys für Benutzerprinzipien und Instanzprinzipien in realen Anwendungsfällen arbeiten. Aber bevor wir das tun, gibt es einige allgemeine Richtlinien, die jeder Kunde unabhängig von seinem Anwendungsfall benötigt.
-
Allgemeine OCI-IAM-Policys:
-
OCI-IAM-Policys für Benutzerverwaltung: Die Gruppe
IAMAdmin
ist für die Verwaltung von OCI-IAM-bezogenen Konfigurationen wie OCI-IAM-Domains, -Benutzern und -Gruppen verantwortlich.Allow group IAMAdmin to manage domains in tenancy Allow group IAMAdmin to manage users in tenancy Allow group IAMAdmin to manage groups in tenancy
-
OCI-IAM-Policys für Tagsmanagement: Die Gruppe
InfoSec
ist für die Verwaltung sicherheitsbezogener Konfigurationen wie OCI-IAM-Policys, -Benutzer und Tag-Namespaces verantwortlich.Allow group InfoSec to manage tag-namespaces in tenancy Allow group InfoSec to manage policies in tenancy Allow group InfoSec to use users in tenancy Allow group InfoSec to manage groups in tenancy where all {target.group.name != ‘Administrators’, target.group.name != ‘InfoSec’}
-
OCI-IAM-Policys für (Terraform-Runner): Die Gruppe
terraform-runner
ist für die Ausführung von Terraform-Automatisierungsskripten für das Infrastruktur-Provisioning dediziert.Allow group terraform-runner to use tag-namespaces in tenancy Allow group terraform-runner to manage instance-family in compartment Tenants Allow group terraform-runner to manage virtual-network-family in compartment Tenants Allow group terraform-runner to manage volume-family in compartment Tenants Allow group terraform-runner to manage object-family in compartment Storage Allow group terraform-runner to manage secret-family in compartment Tenants Allow group terraform-runner to manage key-family in compartment Tenants
-
OCI-IAM-Policys für Benutzer-Principals skalieren
OCI IAM-Policy-Modell: In diesem Policy-Modell besteht das Ziel darin, eine kleine Anzahl verwaltbarer Policys zu schreiben, die durch Daten (in unserem Fall Tags) informiert werden und auch als attributbasierte Zugriffskontrolle bezeichnet werden. Wir referenzieren Tags, die der Zielressource oder dem Zielressourcen-Compartment für die Zugriffskontrolle zugewiesen sind, als Berechtigungstags.
Berechtigungstags: Definieren Sie Berechtigungstags für jede Kombination aus Verb (Aktion) und Ressourcentyp im Mandanten. Sie definieren eine eindeutige Berechtigung, die Sie einer Benutzergruppe für Zielressourcen zuweisen müssen. Die Liste ist nicht einmal festgelegt und fertig. Beginnen Sie mit einer kleinen Anzahl von Berechtigungs-Tags. Nachdem Sie ein Handle für das Policy-Modell erhalten haben, können Sie weitere Berechtigungstags hinzufügen. Für dieses Tutorial erstellen wir einen Berechtigungstag-Namespace als mgmt
. Außerdem erstellen wir einen Tag-Namespace (wir nennen diesen infosec
) mit einem Tagschlüssel namens gname
.
-
Für die folgende Compartment-Struktur mit vier Ressourcentypen und zum Zuweisen von Verwaltungs- und Verwendungsberechtigungen für diese Ressourcen erstellen wir Berechtigungstags.
-
Erstellen Sie für jede Berechtigung, die Sie einem Ziel zuweisen müssen (in den meisten Fällen Compartments), eine Gruppe. Den Ressourcen (mit Compartment-Standardtags) und Ressourcen-Compartments weisen wir Berechtigungstags zu. Der Tagwert ist die Gruppe, der die Berechtigung für die Zielressource erteilt werden soll.
-
Nachdem Berechtigungs-Tags definiert wurden, können Sie Policys schreiben. Das Endergebnis ist, dass nur eine Policy pro Berechtigungstag im Mandanten definiert werden muss. Die gleiche Policy für die angegebene Berechtigung wird im gesamten Mandanten ausgeführt.
-
Wenn wir mehr Workloads integrieren, müssen Sie möglicherweise weitere Berechtigungstags und Policys für diese Berechtigungstags hinzufügen, wenn mehr Ressourcentypen verwaltet werden müssen. Andernfalls weisen Sie der neuen Workload nur vorhandene Berechtigungstags mit einer Gruppe von Benutzern zu, die Zugriff haben sollen. Wir müssen keine neuen Richtlinien für die neue Arbeitslast schreiben.
Dieser Ansatz bleibt in allen hier diskutierten Beispielen konsistent und dient als Grundlage für die Definition von OCI IAM-Gruppen und -Policys.
Beispiel 1: Compartment für jede Anwendung
Schritt 1: Verschaffen Sie sich ein umfassendes Verständnis des Geschäftsüberblicks des Kunden
CompanyA ist ein wachsendes Technologieunternehmen, das mehrere Cloud-native Anwendungen für seine Kunden entwickelt und bereitstellt. Jede Anwendung erfüllt ein bestimmtes Kundensegment mit strengen Sicherheits- und Complianceanforderungen. Um Isolation, Skalierbarkeit und effiziente Zugriffskontrolle sicherzustellen, organisiert CompanyA seine OCI-Ressourcen mit einem strukturierten Compartment-Ansatz.
Schritt 2: Compartment-Struktur für die Workload entwerfen
Wie beschrieben, folgt CompanyA dem OCI-IAM-Policy-Modell zur Skalierung ihrer OCI-IAM-Policys. Sie haben separate Compartments für ihre Anwendungen erstellt, um die Ressourcenisolation aufrechtzuerhalten.
Hinweis: Nur Administratoren sollten den Tag-Namespace
mgmt
undinfosec
verwalten können.
Schritt 3: Entwerfen Sie die folgenden Berechtigungstags des Typs Verb+Resource Kombination
Erstellen Sie Gruppen in OCI.
-
Melden Sie sich bei der OCI-IAM-Domain mit einem Admin-Account an, der über die Berechtigung zum Erstellen von Gruppen verfügt.
-
Gehen Sie zu Identität und Sicherheit, und klicken Sie unter Identität auf Domains.
-
Wählen Sie das Compartment aus, und klicken Sie auf die Domain, für die Sie die Gruppen erstellen möchten.
-
Klicken Sie auf Gruppen.
-
Definieren Sie Ihre Gruppen basierend auf den Berechtigungstags. (Optional) Fügen Sie Ihre Benutzer zu diesen Gruppen hinzu.
Hinweis: Sie müssen Gruppen für eine eindeutige Kombination aus Berechtigung und Ziel erstellen. Wenn dieselbe funktionale Benutzergruppe (NetworkAdmin) Zugriff zum Verwalten des Netzwerks über alle Ziele hinweg benötigt, benötigen Sie nur eine Gruppe, um den Zugriff über alle Ziele hinweg zu verwalten.
Im Folgenden sind die Berechtigungstags und OCI-IAM-Gruppen für diese Tags aufgeführt. Führen Sie die oben genannten Schritte aus, um Gruppen für jedes der definierten Berechtigungstags zu erstellen.
-
Root Compartment: Das Root Compartment dient als Managementschicht der obersten Ebene. Hier werden unsere Admin-Gruppen mit Berechtigungs-Tags getaggt. Die folgenden Tags sind:
- Administratoren:
manageall
-Berechtigung zur Verwaltung der gesamten Mandantenverwaltung. - UseAdministrators:
useall
-Berechtigung für den mandantenübergreifenden Zugriff auf Ressourcen. - Auditor:
readall
-Berechtigung mit schreibgeschütztem Zugriff auf Ressourcen für die mandantenübergreifende Überwachung.
- Administratoren:
-
Compartment-Modell pro Anwendung: CompanyA enthält mehrere cloudbasierte Anwendungen. Für jede Anwendung wird ein separates übergeordnetes Compartment erstellt. Sehen wir uns an, wie dieses Modell für Anwendung 1 (App1) und Anwendung 2 (App2) als übergeordnete Compartments gilt.
-
Anwendung 1 (App1): Eine kundenorientierte Anwendung, die auf OCI gehostet wird.
- Netzwerk-Compartment: Compartment für alle netzwerkbezogenen Ressourcen wie VCN, Subnetze usw. Jetzt können Sie die Berechtigungstags und die zugehörigen OCI-IAM-Gruppen erstellen.
- App1NetworkAdmin:
managenetwork
-Ressourcenberechtigungstag für Ingenieure, die Netzwerkressourcen für App1 verwalten. - App1NetworkUser:
usenetwork
-Ressourcenberechtigungstag für Entwickler, die begrenzten Zugriff auf Netzwerkkonfigurationen von App1 benötigen. - App1NetworkReader:
readnetwork
-Ressourcenberechtigungstag für Auditoren, die das Netzwerksetup von App1 prüfen.
- App1NetworkAdmin:
- Compute Compartment: Compartment für Compute-Instanzen. Jetzt können Sie die Berechtigungstags und die zugehörigen OCI-IAM-Gruppen erstellen.
- App1ComputeAdmin:
managecompute
-Ressourcenberechtigungstag für Systemadministratoren, die Compute-Instanzen für das App1-Backend bereitstellen und skalieren. - App1ComputeUser:
usecompute
-Ressourcenberechtigungstag für Entwickler, die Backend-Services von App1 bereitstellen und testen. - App1ComputeReader:
readcompute
-Ressourcenberechtigungstag für Auditoren, die Compute-Ressourcennutzung für App1 überwachen.
- App1ComputeAdmin:
- Daten-Compartment: Compartment für datenbank- und speicherbezogene Ressourcen. Jetzt können Sie die Berechtigungstags und die zugehörigen OCI-IAM-Gruppen erstellen.
- App1DataAdmin:
managedb
-Ressourcenberechtigungstag für Datenbankadministratoren, die autonome Oracle-Datenbanken und OCI Object Storage für App1 verwalten. - App1DataUser:
usedb
-Ressourcenberechtigungs-Tag für Data Scientists, die zur Analyse auf Datasets in Bezug auf App1 zugreifen. - App1DataReader:
readdb
-Ressourcenberechtigungstag für Auditoren, die Datenbankkonfigurationen von App1 prüfen.
- App1DataAdmin:
- Netzwerk-Compartment: Compartment für alle netzwerkbezogenen Ressourcen wie VCN, Subnetze usw. Jetzt können Sie die Berechtigungstags und die zugehörigen OCI-IAM-Gruppen erstellen.
-
Anwendung 2 (App2): Ein internes ERP-System (Enterprise Resource Planning) für die Vorgänge von CompanyA.
Hinweis: Auch hier folgen wir demselben Compartment-Strukturansatz und erstellen Netzwerk-Compartment, Compute Compartment und Daten-Compartment unter dem übergeordneten Compartment App2. Um Redundanz zu vermeiden, notieren wir nur die Berechtigungstags und OCI-IAM-Gruppen für App2.
-
Netzwerk-Compartment:
- App2NetworkAdmin:
managenetwork
-Ressourcenberechtigungstag. - App2NetworkUser:
usenetwork
-Ressourcenberechtigungstag. - App2NetworkReader:
readnetwork
-Ressourcenberechtigungstag.
- App2NetworkAdmin:
-
Compute-Compartment:
- App2ComputeAdmin:
managecompute
-Ressourcenberechtigungstag. - App2ComputeUser:
usecompute
-Ressourcenberechtigungstag. - App2ComputeReader:
readcompute
-Ressourcenberechtigungstag.
- App2ComputeAdmin:
-
Daten-Compartment:
- App2DataAdmin:
managedb
-Ressourcenberechtigungstag. - App2DataUser:
usedb
-Ressourcenberechtigungstag. - App2DataReader:
readdb
-Ressourcenberechtigungstag.
- App2DataAdmin:
-
-
Hinweis: Wenden Sie ein Berechtigungstag auf ein Ziel an (das Ziel kann eine Ressource oder ein Compartment sein), um festzulegen, welche Gruppe diese spezifische Berechtigung für das Ziel für App1 und App2 hat.
Schritt 4: OCI-IAM-Policys für diese Berechtigungstags schreiben
Wir erstellen die Policys für CompanyA mit demselben Ansatz, der hier beschrieben wird: Haben Sie weniger als mehr - OCI-IAM-Policys für Gruppen skalieren. Erstellen Sie dazu einen Tag-Namespace (wir nennen diese infosec
) mit einem Tagschlüssel namens gname
.
-
Melden Sie sich bei der OCI-IAM-Domain mit einem Admin-Account an, der über die Berechtigung zum Erstellen von Policys verfügt.
-
Gehen Sie zu Identität und Sicherheit, und klicken Sie unter Identität auf Policys.
-
Wählen Sie das Root-Compartment, und klicken Sie auf Policy erstellen.
-
Geben Sie Name, Beschreibung zu Ihrer Policy ein, und fügen Sie die Policy-Anweisungen hinzu. Klicken Sie auf Erstellen.
-
Policy für alle Ressourcen:
Allow any-user to manage all-resources in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.manageall) Allow any-user to use all-resources in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.useall) Allow any-user to read all-resources in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.readall)
Hinweis: Führen Sie dasselbe Verfahren aus, um alle folgenden Policys zu definieren und die entsprechenden Policy-Anweisungen hinzuzufügen.
-
Cloudguard-Policy:
Allow any-user to manage cloud-guard-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.managecspm) Allow any-user to use cloud-guard-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.usecspm) Allow any-user to read cloud-guard-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.readcspm)
-
Netzwerkrichtlinie:
Allow any-user to manage virtual-network-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.managenetwork) Allow any-user to use virtual-network-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.useetwork) Allow any-user to read virtual-network-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.readnetwork)
-
Compute-Policy:
Allow any-user to manage instance-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.managecompute) Allow any-user to use instance-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.usecompute) Allow any-user to read instance-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.readcompute)
-
Datenbank-Policy:
Allow any-user to manage database-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.managedb) Allow any-user to use database-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.usedb) Allow any-user to read database-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.readdb)
-
Beispiel 2: Compartment für jeden Kunden/Mandanten
Schritt 1: Verschaffen Sie sich ein umfassendes Verständnis des Geschäftsüberblicks des Kunden
CompanyB Solutions ist ein führender unabhängiger Softwareanbieter (Independent Software Vendor, ISV), der mandantenbasierte SaaS-Anwendungen in den Bereichen Cloud-Infrastruktur, Datenmanagement und Analyse bereitstellt. CompanyB bedient mehrere Kunden branchenübergreifend und bietet nahtlose, sichere und skalierbare Lösungen. Ihr Erfolg hängt davon ab, dass OCI mit einer gut konzipierten Fachstruktur verwendet wird, um Ressourcen effizient zu verwalten und gleichzeitig die Sicherheits- und Complianceanforderungen einzuhalten.
Schritt 2: Compartment-Struktur für die Workload entwerfen
CompanyB hat die Workloads für ihre Kunden isoliert und ein dediziertes Unter-Compartment erstellt. Außerdem verfügen sie über ein Netzwerk-Compartment, einen Shared Storage und ein Datenbank-Compartment. Selbst CompanyB folgt dem OCI-IAM-Policy-Modell zur Skalierung ihrer OCI-IAM-Policys.
Schritt 3: Entwurf nach Berechtigungstags des Typs Verb+Resource Kombination
Informationen zum Erstellen von Gruppen finden Sie in Beispiel 1, Schritt 3. Sie müssen Gruppen für alle unten definierten Berechtigungstags erstellen.
-
Root Compartment - Centralized Governance: Die Root-Komponente fungiert als zentrale Schicht für die Überwachung aller Ressourcen und Aktivitäten im gesamten OCI-Mandanten. Hier werden unsere Admin-Gruppen mit Berechtigungs-Tags getaggt. Die folgenden Tags sind:
- Administratoren:
manageall
-Berechtigung zur Verwaltung der gesamten Mandantenverwaltung. - UseAdministrators:
useall
-Berechtigung für den mandantenübergreifenden Zugriff auf Ressourcen. - Auditor:
readall
-Berechtigung mit schreibgeschütztem Zugriff auf Ressourcen für die mandantenübergreifende Überwachung.
- Administratoren:
-
Netzwerk-Compartment - Backbone of Operations: Das Netzwerk-Compartment unterstützt die Cloud-Netzwerkinfrastruktur von CompanyB und ermöglicht die Konnektivität über alle Ressourcen hinweg. Dazu gehören virtuelle Cloud-Netzwerke (VCNs), Subnetze, Gateways und Load Balancer. Lassen Sie uns die Berechtigungstags und die entsprechenden OCI-IAM-Gruppen dafür definieren.
- NetworkAdmin:
managenetwork
-Ressourcenberechtigungstag für Ingenieure, die Netzwerkressourcen für CompanyB verwalten. - NetworkUser:
usenetwork
-Ressourcenberechtigungstag für Entwickler, die begrenzten Zugriff auf Netzwerkkonfigurationen von CompanyB benötigen. - NetworkReader:
readnetwork
-Ressourcenberechtigungstag für Auditoren, die das Netzwerksetup von CompanyB prüfen.
- NetworkAdmin:
-
Mandanten-Compartment - Isolierte Compartments für verschiedene Kunden-Workloads: Das Mandanten-Compartment ist so strukturiert, dass Ressourcen und Workloads für jeden Client (Mandanten) isoliert werden. Dadurch wird sichergestellt, dass CompanyB sichere und private Services bereitstellt und gleichzeitig die betriebliche Effizienz aufrechterhält.
-
Compartment Mandant 1: Mandant 1 stellt einen wichtigen Enterprise-Client dar, der CompanyB für Anwendungsentwicklungs- und Logging-Services verwendet. Im Folgenden sind die Berechtigungstags und die jeweiligen OCI-IAM-Gruppen aufgeführt:
t1devadmin
: Die Ressourcenberechtigungmanageappdev
für das Entwicklungsteam für Mandant 1 verfügt über administrative Berechtigungen zum Konfigurieren und Bereitstellen benutzerdefinierter Anwendungen.t1devuser
:useappdev
-Ressourcenberechtigung zum Überwachen und Anpassen von Anwendungsressourcen. Die Entwickler von Tenant 1 nutzen diese Ressourcen für die tägliche Entwicklung und das Testen.t1logsadmin
undt1devuser
: Die Ressourcenberechtigungenmanagelogs
unduselogs
für Logging- und Überwachungsrollen stellen sicher, dass Administratoren Logging-Services konfigurieren, während Entwickler auf Logs zugreifen, um Anwendungen zu debuggen und zu optimieren.t1devadmin
undt1devuser
:managecspm
- undusecspm
-Ressourcenberechtigung für Mandant 1, da sie sich ebenfalls auf den Sicherheitsstatus konzentrieren und Sicherheitsrisiken überwachen und beheben können.
-
Tenant 2 and Tenant 3 Compartments: The structure for Tenant 2 and Tenant 3 mirrors that of Tenant 1, with roles like
t2devadmin
,t2devuser
,t3devadmin
,t3devuser
,t2logsadmin
andt3logsadmin
ensuring that each tenant operates in a fully isolated environment. Mit diesem Ansatz kann CompanyB eine konsistente Governance aufrechterhalten und gleichzeitig auf bestimmte Mandantenanforderungen eingehen. -
Gemeinsames Compartment - Zentralisierte Ressourcen für alle Mandanten: Das gemeinsam verwendete Compartment umfasst Ressourcen wie Datenbanken und Objektspeicher, die von mehreren Mandanten verwendet werden, aber aus Datenschutz- und Sicherheitsgründen logisch getrennt bleiben.
- Datenbank-Compartment:
dbadmin
: Die Ressourcenberechtigungmanagedb
für die Datenbankadministratoren von CompanyB verarbeitet gemeinsam verwendete Datenbanken, die von allen Mandanten verwendet werden, einschließlich Provisioning, Skalierung und Patching.dbuser
:usedb
-Ressourcenberechtigung für mandantenspezifische Benutzer, die auf ihre jeweiligen Datenbankschemas oder -services zugreifen.dbreader
: Die Ressourcenberechtigungreaddb
für Auditoren hat schreibgeschützten Zugriff, um sicherzustellen, dass Datenbankkonfigurationen den Sicherheits-Policys entsprechen.
- Speicher-Compartment: OCI Object Storage wird zentral verwaltet, mit dedizierten Buckets für jeden Mandanten:
osadmin
: Ressourcenberechtigungmanageobject
für die Verwaltung der Shared Object Storage-Ressourcen.osuser
:useobject
Die mandantenspezifische Speicherressourcenberechtigung (odert1osur
,t2osur
,t3osur
) stellt sicher, dass Mandanten nur auf ihre jeweiligen Buckets zugreifen.osreader
: Die Ressourcenberechtigungreadobject
für Complianceteams prüft Speicherkonfigurationen und Nutzungsmuster.
- Datenbank-Compartment:
-
Schritt 4: OCI-IAM-Policys für diese Berechtigungstags schreiben
Informationen zum Erstellen von Policys finden Sie in Beispiel 1, Schritt 4. Sie müssen die folgenden Policys erstellen.
-
Policy für alle Ressourcen:
Allow any-user to manage all-resources in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.manageall) Allow any-user to use all-resources in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.useall) Allow any-user to read all-resources in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.readall)
-
Cloudguard-Policy:
Allow any-user to manage cloud-guard-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.managecspm) Allow any-user to use cloud-guard-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.usecspm) Allow any-user to read cloud-guard-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.readcspm)
-
Netzwerkrichtlinie:
Allow any-user to manage virtual-network-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.managenetwork) Allow any-user to use virtual-network-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.useetwork) Allow any-user to read virtual-network-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.readnetwork)
-
Protokoll-Policy:
Allow any-user to manage logging-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.managelogs) Allow any-user to use logging-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.uselogs) Allow any-user to read logging-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.readlogs)
-
Appdev-Policy:
Allow any-user to manage instance-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.manageappdev) Allow any-user to use instance-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.useappdev) Allow any-user to read instance-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.readappdev)
-
DB-Policy:
Allow any-user to manage database-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.managedb) Allow any-user to use database-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.usedb) Allow any-user to read database-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.readdb)
-
Speicher-Policy:
Allow any-user to manage object-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.manageobject) Allow any-user to use object-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.useobject) Allow any-user to read object-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.readobject)
Beispiel 3: Große Unternehmens-Compartment-Struktur
Schritt 1: Verschaffen Sie sich ein umfassendes Verständnis des Geschäftsüberblicks des Kunden
CompanyC Solutions, ein multinationales Unternehmen, das sich auf innovative Softwarelösungen spezialisiert hat, entschied sich für die Migration seiner geschäftskritischen Workloads zu OCI. Das Unternehmen ist in stark regulierten Branchen wie Finanzen und Gesundheitswesen tätig, in denen Sicherheit, Compliance und Skalierbarkeit von größter Bedeutung sind.
Schritt 2: Compartment-Struktur für die Workload entwerfen
Sehen wir uns jetzt die Compartment-Struktur für CompanyC an, die dem OCI-IAM-Policy-Modell zur Skalierung ihrer OCI-IAM-Policys folgt.
Schritt 3: Entwerfen Sie die folgenden Berechtigungstags des Typs Verb+Resource Kombination
Informationen zum Erstellen von Gruppen finden Sie in Beispiel 1, Schritt 3. Sie müssen Gruppen für alle folgenden Berechtigungstags erstellen.
-
Root Compartment - Centralized Governance: Die Root-Komponente fungiert als zentrale Schicht für die Überwachung aller Ressourcen und Aktivitäten im gesamten OCI-Mandanten. Hier werden unsere Admin-Gruppen mit Berechtigungs-Tags getaggt. Die folgenden Tags sind:
- Administratoren:
manageall
-Berechtigung zur Verwaltung der gesamten Mandantenverwaltung. - UseAdministrators:
useall
-Berechtigung für den mandantenübergreifenden Zugriff auf Ressourcen. - Auditor:
readall
-Berechtigung mit schreibgeschütztem Zugriff auf Ressourcen für die mandantenübergreifende Überwachung.
- Administratoren:
-
PROD-Compartment: Das Compartment für das Hosting geschäftskritischer Produktions-Workloads, die sich direkt auf Geschäftsabläufe und Endbenutzer auswirken. Jede Anwendung verfügt über ein dediziertes Sub-Compartment für Ressourcenisolation und optimierte Verwaltung. Lassen Sie uns die Berechtigungstags und die entsprechenden OCI-IAM-Gruppen dafür definieren.
- NetworkAdmin:
managenetwork
-Ressourcenberechtigungstag für Ingenieure, die Netzwerkressourcen für CompanyC verwalten. - NetworkReader:
readnetwork
-Ressourcenberechtigungstag für Auditoren, die das Netzwerksetup von CompanyC prüfen. - ComputeAdmin: Berechtigungstag für
managecompute
-Ressourcen für Systemadministratoren, die Compute-Instanzen für CompanyC bereitstellen und skalieren. - ComputeReader: Berechtigungstag für
readcompute
-Ressourcen für Auditoren, die Compute-Ressourcennutzung für CompanyC überwachen. - StorageReader:
manageobject
-Ressourcenberechtigung für Speicheradministratorteams zur Verwaltung von Speicherkonfigurationen. - StorageReader: Die Ressourcenberechtigung
readobject
für Complianceteams prüft Speicherkonfigurationen und Nutzungsmuster. - SecurityAdmin:
managecspm
-Ressourcenberechtigung für Compartment PROD, da sie sich auch auf den Sicherheitsstatus konzentrieren und Sicherheitsrisiken überwachen und beheben können.
Jetzt werden wir die Berechtigungstags und die entsprechenden OCI-IAM-Gruppen für anwendungsspezifische Sub-Compartments definieren. Im Interesse der Zeit haben wir Berechtigungen für alle 3 verschiedenen Anwendungs-Compartments zusammengeführt und definiert.
- Anwendungs-Compartments:
- PRApp1NetAdmin, PRApp2NetAdmin und PRApp3NetAdmin: Admin-OCI-IAM-Gruppen mit dem Berechtigungstag
managenetwork
-Ressourcen für Ingenieure, die Netzwerkressourcen für App1, App2 bzw. App3 verwalten. - PRApp1NetUser, PRApp2NetUser und PRApp3NetUser: Admin-OCI-IAM-Gruppen mit dem Berechtigungstag
usenetwork
-Ressourcen für Ingenieure, die Netzwerkressourcen für App1, App2 bzw. App3 verwalten. - PRApp1ComputeAdmin, PRApp2ComputeAdmin und PRApp3ComputeAdmin: Admin-OCI-IAM-Gruppen mit dem Berechtigungstag für
managecompute
-Ressourcen für Ingenieure, die OCI Compute-Instanzen für App1, App2 bzw. App3 verwalten. - PRApp1ComputeUser, PRApp2ComputeUser und PRApp3ComputeUser: Admin-OCI-IAM-Gruppen mit dem Berechtigungstag für
usecompute
-Ressourcen für Ingenieure, die OCI Compute-Instanzen für App1, App2 bzw. App3 verwenden. - PRApp1StorageAdmin, PRApp2StorageAdmin und PRApp3StorageAdmin: Admin-OCI-IAM-Gruppen mit dem Berechtigungstag
manageobject
-Ressourcen für Ingenieure, die OCI Object Storage für App1, App2 bzw. App3 verwalten. - PRApp1StorageUser, PRApp2StorageUser und PRApp3StorageUser: Admin-OCI-IAM-Gruppen mit dem Berechtigungstag für
useobject
-Ressourcen für Ingenieure, die OCI Object Storage für App1, App2 bzw. App3 verwenden.
- PRApp1NetAdmin, PRApp2NetAdmin und PRApp3NetAdmin: Admin-OCI-IAM-Gruppen mit dem Berechtigungstag
- NetworkAdmin:
-
NPROD-Compartment: Für Staging-, Entwicklungs- und Qualitätssicherungsumgebungen dediziert. Dieses Compartment ist ähnlich aufgebaut wie PROD, um Konsistenz zu gewährleisten. Lassen Sie uns die Berechtigungstags und die entsprechenden OCI-IAM-Gruppen dafür definieren.
- NetworkAdmin:
managenetwork
-Ressourcenberechtigungstag für Ingenieure, die Netzwerkressourcen für CompanyC verwalten. - NetworkReader:
readnetwork
-Ressourcenberechtigungstag für Auditoren, die das Netzwerksetup von CompanyC prüfen. - ComputeAdmin: Berechtigungstag für
managecompute
-Ressourcen für Systemadministratoren, die OCI Compute-Instanzen für CompanyC bereitstellen und skalieren. - ComputeReader:
readcompute
-Ressourcenberechtigungstag für Auditoren, die die OCI Compute-Ressourcennutzung für CompanyC überwachen. - StorageReader:
manageobject
-Ressourcenberechtigung für Speicheradministratorteams zur Verwaltung von Speicherkonfigurationen. - StorageReader: Die Ressourcenberechtigung
readStorage
für Complianceteams prüft Speicherkonfigurationen und Nutzungsmuster. - SecurityAdmin:
managecspm
-Ressourcenberechtigung für Compartment NPROD, da sie sich auch auf den Sicherheitsstatus konzentrieren und Sicherheitsrisiken überwachen und beheben können.
Ebenso werden wir jetzt die Berechtigungstags und die entsprechenden OCI-IAM-Gruppen für anwendungsspezifische Sub-Compartments definieren.
- Anwendungs-Compartments:
- NPApp1NetAdmin, NPApp2NetAdmin und NPApp3NetAdmin: Admin-OCI-IAM-Gruppen mit dem Berechtigungstag
managenetwork
-Ressourcen für Ingenieure, die Netzwerkressourcen für App1, App2 bzw. App3 verwalten. - NPApp1NetUser, NPApp2NetUser und NPApp3NetUser: Admin-OCI-IAM-Gruppen mit dem Berechtigungstag
usenetwork
-Ressourcen für Ingenieure, die Netzwerkressourcen für App1, App2 bzw. App3 verwalten. - NPApp1ComputeAdmin, NPApp2ComputeAdmin und NPApp3ComputeAdmin: Admin-OCI-IAM-Gruppen mit dem Berechtigungstag für
managecompute
-Ressourcen für Ingenieure, die OCI Compute-Instanzen für App1, App2 bzw. App3 verwalten. - NPApp1ComputeUser, NPApp2ComputeUser und NPApp3ComputeUser: Admin-OCI-IAM-Gruppen mit dem Berechtigungstag für
usecompute
-Ressourcen für Ingenieure, die OCI Compute-Instanzen für App1, App2 bzw. App3 verwenden. - NPApp1StorageAdmin, NPApp2StorageAdmin und NPApp3StorageAdmin: Admin-OCI-IAM-Gruppen mit dem Berechtigungstag
manageobject
-Ressourcen für Ingenieure, die OCI Object Storage für App1, App2 bzw. App3 verwalten. - NPApp1StorageUser, NPApp2StorageUser und NPApp3StorageUser: Admin-OCI-IAM-Gruppen mit dem Berechtigungstag für
useobject
-Ressourcen für Ingenieure, die OCI Object Storage für App1, App2 bzw. App3 verwenden.
- NPApp1NetAdmin, NPApp2NetAdmin und NPApp3NetAdmin: Admin-OCI-IAM-Gruppen mit dem Berechtigungstag
- NetworkAdmin:
-
Gemeinsames Compartment: Das gemeinsam verwendete Compartment hostet Ressourcen für das Monitoring, wie Logging und Cloud Guard-OCI-Services. Es verfügt auch über Schlüssel für die Verschlüsselung und Entschlüsselung, die von mehreren Mandanten verwendet werden, während gleichzeitig eine logische Trennung zur Wahrung der Privatsphäre und Sicherheit gewährleistet wird. Alle Admins aus Ihren Anwendungen, die Zugriff auf diese Services benötigen, werden den erstellten OCI-IAM-Gruppen für diese Services hinzugefügt. Definieren Sie die Berechtigungstags und die entsprechenden OCI-IAM-Gruppen dafür.
-
Oracle Cloud Guard-Compartments:
cspmAdmin
: Admin-OCI-IAM-Gruppen mit Berechtigungstag fürmanagecspm
-Ressourcen für Administratoren, die Oracle Cloud Guard für PROD- und Non PROD-Compartments verwalten.cspmUser
: OCI-IAM-Gruppen mit dem Berechtigungstag fürusecspm
-Ressourcen für Ingenieure, die Oracle Cloud Guard für PROD- und Non PROD-Compartments verwenden/überwachen.cspmReader
: OCI-IAM-Gruppen mit Berechtigungstag fürreadcspm
-Ressourcen für Ingenieure, die Oracle Cloud Guard für PROD- und Non PROD-Compartments lesen.
-
OCI Logging-Compartments:
logsAdmin
: Admin-OCI-IAM-Gruppen mit Berechtigungstag fürmanagelogs
-Ressourcen für Administratoren, die OCI Logging für PROD- und Nicht PROD-Compartments verwalten.logsUser
: OCI-IAM-Gruppen mit dem Berechtigungstag füruselogs
-Ressourcen für Ingenieure, die OCI Logging für PROD- und Non PROD-Compartments verwenden/überwachen.logsReader
: OCI-IAM-Gruppen mitreadlogs
-Ressourcenberechtigungstag für Ingenieure, die OCI Logging für PROD- und Non PROD-Compartments lesen.
-
Schlüssel-Compartments:
kmsAdmin
: Admin-OCI-IAM-Gruppen mitmanagekeys
-Ressourcenberechtigungstag für Administratoren, die den Key Vault für PROD- und Non PROD-Compartments verwalten.kmsUser
: OCI-IAM-Gruppen mit dem Berechtigungstag fürusekeys
-Ressourcen für Ingenieure, die den Key Vault für PROD- und Non PROD-Compartments verwenden/überwachen.kmsReader
: OCI-IAM-Gruppen mit dem Berechtigungstag fürreadkeys
-Ressourcen für Ingenieure, die den Key Vault für PROD- und Nicht PROD-Compartments lesen.
-
-
Playground-Compartment: Eine flexible und isolierte Umgebung für Experimente, Entwicklung und Tests. Dieses Compartment ist nicht an Produktions- oder Compliance-Einschränkungen gebunden und daher ideal für Innovationen. Hier gibt es nur eine OCI-IAM-Admin-Gruppe für ein sehr untergeordnetes Compartment und erteilt allen OCI-Ressourcen, die für Testanforderungen erforderlich sind, die Verwaltungsberechtigungen.
-
Entwicklungs-Compartments:
DevAdmin
: Admin-OCI-IAM-Gruppen mit der Ressourcenberechtigungmanagenetwork
,managecompute
,manageobject
,managekeys
,managelogs
für Entwicklungsadministratoren zum Testen einer neuen Implementierung innerhalb des Entwicklungs-Compartments.
-
Test-Compartments:
TestAdmin
: Admin-OCI-IAM-Gruppen mit der Ressourcenberechtigungmanagenetwork
,managecompute
,manageobject
,managekeys
,managelogs
für Entwicklungsadministratoren zum Testen einer neuen Implementierung innerhalb des Test-Compartments.
-
Compartments für Performancetests:
PerfTestAdmin
: Admin-OCI-IAM-Gruppen mit der Ressourcenberechtigungmanagenetwork
,managecompute
,manageobject
,managekeys
,managelogs
für Entwicklungsadministratoren zum Testen einer neuen Implementierung innerhalb des Performancetest-Compartments.
-
Schritt 4: OCI-IAM-Policys für diese Berechtigungstags schreiben
Informationen zum Erstellen von Policys finden Sie in Beispiel 1, Schritt 4. Sie müssen die folgenden Policys erstellen.
-
Policy für alle Ressourcen:
Allow any-user to manage all-resources in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.manageall) Allow any-user to use all-resources in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.useall) Allow any-user to read all-resources in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.readall)
-
Protokoll-Policy:
Allow any-user to manage logging-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.managelogs) Allow any-user to use logging-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.uselogs) Allow any-user to read logging-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.readlogs)
-
Cloudguard-Policy:
Allow any-user to manage cloud-guard-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.managecspm) Allow any-user to use cloud-guard-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.usecspm) Allow any-user to read cloud-guard-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.readcspm)
-
Schlüssel-Policy
Allow any-user to manage keys in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.managekeys) Allow any-user to use keys in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.usekeys) Allow any-user to read keys in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.readkeys)
-
Anwendungs-Policy:
Allow any-user to manage virtual-network-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.managenetwork) Allow any-user to use virtual-network-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.useetwork) Allow any-user to manage instance-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.managecompute) Allow any-user to use instance-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.usecompute) Allow any-user to manage object-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.manageobject) Allow any-user to use object-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.useobject)
-
Spielplatzpolitik:
Allow any-user to manage virtual-network-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.managenetwork) Allow any-user to manage virtual-network-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.managenetwork) Allow any-user to manage object-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.manageobject) Allow any-user to manage logging-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.mgmt.managelogs) Allow any-user to manage vaults in compartment Playground where request.principal.group.tag.infosec.gname=target.compartment.tag.mgmt.manageVaults Allow any-user to manage keys in compartment Playground where request.principal.group.tag.infosec.gname=target.compartment.tag.mgmt.manageKeys
Hinweis: Bei jedem Onboarding neuer Arbeitslasten für ein solches Szenario gilt Folgendes:
- Prüfen Sie, ob Sie zusätzliche Berechtigungstags benötigen. Wenn Sie dies tun, erstellen Sie sie zusammen mit OCI-IAM-Policys für diese Berechtigungstags.
- Erstellen Sie Gruppen, um den Zugriff auf das neue Workload Compartment zu verwalten.
- Taggen Sie das Workload Compartment mit Berechtigungstags und den erstellten Gruppen.
Tagbasiertes Berechtigungsmodell für granulare Zugriffskontrolle
In allen Beispielen haben wir bisher die Berechtigungen zum Erstellen von Verwaltungs-, Benutzer- oder Leseberechtigungen für eine Ressourcenfamilie besprochen. Die meisten Kunden benötigen jedoch eine granulare Zugriffskontrolle, um dem Modell mit den geringsten Berechtigungen zu folgen. Das Tutorial konzentriert sich auf das Verständnis des Policy-Modells, weshalb wir über einen einfachen Anwendungsfall gesprochen haben. Lassen Sie mich jedoch ein Beispiel für vier Netzwerkpersonen nehmen, und wie Sie granulare Berechtigungstags und OCI-IAM-Policys für diese vier Personas entwerfen können.
-
NetworkOwner: Diese Person oder dieses Team ist Eigentümer der Netzwerkimplementierung für den OCI-Mandanten. Sie haben Zugriff auf die Einrichtung von FastConnect und die Berechtigung, das Netzwerk für alle Anwendungen zu verwalten.
-
NetworkAdmin: Dieses Team ist Eigentümer der Netzwerkimplementierung für die Anwendungsteams. Sie können VCNs für Anwendungsteams erstellen. Sie haben jedoch keinen Zugriff auf die Einrichtung einer Netzwerkfirewall oder FastConnect.
-
NetworkOperator: Dieses Team ist Eigentümer des Netzwerks der Anwendung. Das Team kann ein Anwendungssubnetz im VCN der Anwendung oder in einem gemeinsam verwendeten VCN erstellen. Sie sind jedoch nicht berechtigt, VCNs zu verwalten oder zu aktualisieren.
-
NetworkUser: Dies ist das Anwendungsadministratorteam, für das die Berechtigung zur Verwendung für die Netzwerkressourcen der Anwendung erforderlich ist.
Wir definieren networkowner
, networkadmin
, networkoperator
und networkuser
als vier Tags im Netzwerk-Compartment. Für diese Tags weisen wir Gruppennamen zu, die Zugriff auf das Netzwerk-Compartment haben.
-
NetworkOwner-Policy:
Allow any-user to manage virtual-network-family in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkowner)
-
NetworkAdmin-Policy:
Allow any-user to manage vcns in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkadmin) Allow any-user to manage subnets in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkadmin) Allow any-user to manage route-tables in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkadmin) Allow any-user to manage security-lists in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkadmin) Allow any-user to manage network-security-groups in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkadmin) Allow any-user to manage dhcp-options in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkadmin) Allow any-user to manage local-peering-gateways in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkadmin) Allow any-user to manage service-gateways in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkadmin) Allow any-user to manage internet-gateways in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkadmin)
-
NetworkOperator-Policy:
Allow any-user to {VCN_ATTACH,VCN_DETACH} in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkoperator) Allow any-user to inspect vcns in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkoperator) Allow any-user to manage subnets in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkoperator) Allow any-user to manage route-tables in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkoperator) Allow any-user to manage security-lists in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkoperator) Allow any-user to manage network-security-groups in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkoperator) Allow any-user to manage dhcp-options in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkoperator)
-
NetworkUser-Policy:
Allow any-user to inspect vcns in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkuser) Allow any-user to use subnets in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkuser) Allow any-user to use vnics in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkuser) Allow any-user to use security-lists in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkuser) Allow any-user to use network-security-groups in tenancy where sets-intersect(request.groups.name,target.resource.compartment.tag.Net.networkuser)
OCI-IAM-Policys für Instanz-Principals skalieren
Beispiel 1: Multi-Tenant-Instanzzugriffskontrolle für Shared Storage und Secrets in OCI
Schritt 1: Verschaffen Sie sich ein umfassendes Verständnis des Geschäftsüberblicks des Kunden
XYZ Cloud Solutions ist ein SaaS-Provider, der ein auf OCI gehostetes Dokumentenmanagementsystem (DMS) anbietet. Die Plattform bedient mehrere Unternehmenskunden, die jeweils eine strenge Isolierung ihrer Daten bei gleichzeitiger Nutzung einer gemeinsamen Infrastruktur erfordern.
Kundenanforderungen:
- Jedes Unternehmen (Mandant) muss über isolierte Instanzen verfügen, um Dokumente zu verarbeiten und zu verwalten.
- Die Secrets jedes Mandanten (API-Schlüssel, Datenbankzugangsdaten) dürfen nur für die Instanzen dieses Mandanten zugänglich sein.
- Alle Mandanten speichern ihre Dokumente in einem zentralen OCI Object Storage-Compartment. Sie sollten jedoch nur auf ihren eigenen Bucket zugreifen.
- Das System sollte die automatische Skalierung und das einfache Onboarding neuer Mandanten unterstützen.
Schritt 2: Compartment-Struktur für die Workload entwerfen
Sehen wir uns jetzt die Compartment-Struktur für XYZ Cloud-Lösungen an, die dem OCI IAM-Policy-Modell zur Skalierung ihrer OCI IAM-Policys folgt.
-
Mandantenisolation mit Compartments:
- Erstellen Sie ein dediziertes OCI-Compartment für jeden Unternehmenskunden (Tenant1, Tenant2 usw.).
- Stellen Sie Compute-Instanzen (VMs, Funktionen oder Container) in ihren jeweiligen Compartments bereit.
- Zentralisierter Speicher mit Zugriffskontrolle.
-
Shared Storage-Compartment für OCI Object Storage-Buckets verwalten:
- Jeder Mandant erhält einen dedizierten Bucket, der mit
Enterprise.Tenant=<TenantName>
getaggt ist. - OCI-IAM-Policys stellen sicher, dass die Instanzen jedes Mandanten nur aus seinem eigenen Bucket lesen können.
- Secrets-Management mit OCI Vault.
- Jeder Mandant erhält einen dedizierten Bucket, der mit
-
Datenbankzugangsdaten, API-Schlüssel und Verschlüsselungsschlüssel in OCI Vault speichern:
- Die Secrets jedes Mandanten werden mit
Enterprise.Tenant=<TenantName>
getaggt. - Mit OCI-IAM-Policys können nur die Instanzen dieses Mandanten ihre Secrets abrufen.
- Unternehmens-Tagging-Strategie für Governance.
- Die Secrets jedes Mandanten werden mit
-
Definieren Sie einen Enterprise-Tag-Namespace mit
Enterprise.Tenant
, um die Mandanteneigentümerschaft zu verfolgen:- Wenden Sie Compartment-Standardtags an, um Ressourcen innerhalb des Compartments jedes Mandanten automatisch zu taggen.
- Verwenden Sie Policys, die auf Tags basieren, für die automatisierte Zugriffskontrolle.
Schritt 3: OCI-IAM-Gruppen erstellen
Um eine sichere und isolierte Zugriffsverwaltung in einer OCI-Mehrmandantenumgebung sicherzustellen, werden die folgenden Policys definiert für:
-
InfoSec-Gruppe: Sicherheitsadministratoren mit Zugriff zum Verwalten von Policys, Tags, Benutzern und Gruppen.
-
Terraform-Runner-Gruppe: Infrastructure-as-Code-(IaC-)Ausführungsgruppe zur Verwaltung von OCI-Ressourcen.
Hinweis: Diese Gruppen und OCI-IAM-Policys wurden bereits wie oben im Abschnitt Allgemeine OCI-IAM-Policys beschrieben erstellt.
Schritt 4: OCI-IAM-Policys für die definierten Gruppen erstellen
Mandantenressourcenzugriffs-Policys: Um die Datenisolierung aufrechtzuerhalten, sollten Mandantenressourcen nur auf ihre eigenen Secrets und den Objektspeicher zugreifen können.
Allow any-user to use object-family in compartment Storage where request.principal.compartment.tag.Enterprise.Tenant = target.resource.tag.Enterprise.Tenant
Allow any-user to use secret-family in compartment Tenants where request.principal.compartment.tag.Enterprise.Tenant = target.resource.tag.Enterprise.Tenant
Wenn für die Mandanteninstanzprinzipien auch die Berechtigung zum Erstellen neuer Objekte erforderlich ist, können Sie Bucket-Namen mit demselben Namen wie der Mandantenname erstellen und das Mandantennamentag für den Vergleich mit dem Bucket-Namen verwenden.
Allow any-user to manage objects in compartment Storage where request.principal.compartment.tag.Enterprise.Tenant = target.bucket.name
Beispiel 2: Fein granulierte Zugriffskontrolle für den Multi-Service-Datenzugriff in einem gemeinsamen OCI-Speichermodell
Schritt 1: Verschaffen Sie sich ein umfassendes Verständnis des Geschäftsüberblicks des Kunden
XYZ Corp ist ein schnell wachsendes Unternehmen, das sich auf Lösungen für die digitale Transformation spezialisiert hat. Mit einer globalen Präsenz ist XYZ Corp in mehreren Regionen tätig und nutzt OCI für das Hosting kritischer Anwendungen, die Verwaltung von Daten und die Gewährleistung einer nahtlosen Zusammenarbeit zwischen Teams.
Kundenanforderungen:
- Alle Instanzen des Admin-Service für einen bestimmten Mandanten können Admin-Buckets im Shared Storage Compartment lesen.
- Alle Instanzen des Sales-Service für einen bestimmten Mandanten können Sales Buckets im Shared Storage Compartment lesen.
- Alle Instanzen des Supply-Service für einen bestimmten Mandanten können Bedarfsdeckungs-Buckets im Shared Storage Compartment lesen.
- Alle Instanzen für einen bestimmten Mandanten können Shared Services-Buckets im Shared Storage Compartment lesen.
- Alle Instanzen für einen bestimmten Mandanten können Secrets für diesen Mandanten im Mandanten-Compartment lesen.
Schritt 2: Compartment-Struktur für die Workload entwerfen
Sehen wir uns jetzt die Compartment-Struktur für XYZ Corp an, die dem OCI IAM-Policy-Modell zur Skalierung ihrer OCI IAM-Policys folgt.
-
Mandantenspezifische Compartment-Erstellung:
- Erstellen Sie ein dediziertes Compartment für jeden Mandanten.
- Alle Ressourcen, die zu einem Mandanten gehören, müssen im Compartment dieses Mandanten bereitgestellt werden.
-
Enterprise Tagging-Namespace:
- Definieren Sie einen Enterprise-Tag-Namespace mit den folgenden Tagschlüsseln:
Enterprise.Tenant
Erfasst den Mandantennamen.Enterprise.Service
Erfasst den Servicetyp. Beispiel: Admin, Sales, Supply oder Shared.
- Definieren Sie einen Enterprise-Tag-Namespace mit den folgenden Tagschlüsseln:
-
Standardtags für Mandanten-Compartments:
- Konfigurieren Sie Compartment-Standardtags für jedes Mandanten-Compartment, und stellen Sie sicher, dass das Tag
Enterprise.Tenant
automatisch auf alle Ressourcen im Compartment angewendet wird. Dabei wird der Mandantenname erfasst.
- Konfigurieren Sie Compartment-Standardtags für jedes Mandanten-Compartment, und stellen Sie sicher, dass das Tag
-
Tagging auf Ressourcenebene:
- Jede Ressource in einem Mandanten-Compartment muss mit
Enterprise.Service
getaggt werden und gibt den Servicetyp an. Beispiel: Admin, Vertrieb, Bedarfsdeckung usw.
- Jede Ressource in einem Mandanten-Compartment muss mit
-
Zielressourcentagging (Buckets und Secrets):
- Markieren Sie jede Zielressource (wie Buckets und Secrets) mit:
Enterprise.Tenant
Erfasst den Mandantennamen.Enterprise.Service
Erfasst den zugehörigen Servicetyp.
- Markieren Sie jede Zielressource (wie Buckets und Secrets) mit:
-
Gemeinsame Buckets taggen:
- Legen Sie für gemeinsam verwendete Bucket-Ressourcen
Enterprise.Service = 'Shared'
fest, um die serviceübergreifende Barrierefreiheit anzugeben.
- Legen Sie für gemeinsam verwendete Bucket-Ressourcen
Schritt 3: OCI-IAM-Gruppen erstellen
Um eine sichere und isolierte Zugriffsverwaltung in einer OCI-Mehrmandantenumgebung sicherzustellen, werden die folgenden Policys definiert für:
-
InfoSec-Gruppe: Sicherheitsadministratoren mit Zugriff zum Verwalten von Policys, Tags, Benutzern und Gruppen.
-
Terraform-Runner-Gruppe: Infrastructure-as-Code-(IaC-)Ausführungsgruppe zur Verwaltung von OCI-Ressourcen.
-
Dynamische Gruppe AdminInstances: Mit Vergleichsregel
All {tag.Enterprise.Service.value=’Admin’}
. -
Dynamische Gruppe SalesInstances: Mit Vergleichsregel
All {tag.Enterprise.Service.value=’Sales’}
. -
Dynamische Gruppe SupplyInstances: Mit Vergleichsregel
All {tag.Enterprise.Service.value=’Supply’}
.
Hinweis: InfoSec und Terraform-Runner-Gruppen und IAM-Policys wurden bereits wie oben im Abschnitt Allgemeine OCI-IAM-Policys beschrieben erstellt.
Schritt 4: OCI-IAM-Policys für die definierten Gruppen erstellen
Mandantenressourcenzugriffs-Policys: Um die Datenisolierung aufrechtzuerhalten, sollten Mandantenressourcen nur auf ihre eigenen Secrets und den Objektspeicher zugreifen können.
Allow dynamic-group AdminInstances to use object-family in compartment Storage where all {request.principal.compartment.tag.Enterprise.Tenant=target.resource.tag.Enterprise.Tenant, target.resource.tag.Enterprise.Service=’Admin’}
Allow dynamic-group SalesInstances to use object-family in compartment Storage where all {request.principal.compartment.tag.Enterprise.Tenant=target.resource.tag.Enterprise.Tenant, target.resource.tag.Enterprise.Service=’Sales’}
Allow dynamic-group SupplyInstances to use object-family in compartment Storage where all {request.principal.compartment.tag.Enterprise.Tenant=target.resource.tag.Enterprise.Tenant, target.resource.tag.Enterprise.Service=’Supply’}
Allow any-user to use object-family in compartment Storage where all {request.principal.compartment.tag.Enterprise.Tenant=target.resource.tag.Enterprise.Tenant, target.resource.tag.Enterprise.Service=’Shared’}
Allow dynamic-group AdminInstances to use secret-family in compartment Tenants where all {request.principal.compartment.tag.Enterprise.Tenant=target.resource.tag.Enterprise.Tenant, target.resource.tag.Enterprise.Service=’Admin’}
Allow dynamic-group SalesInstances to use secret-family in compartment Tenants where all {request.principal.compartment.tag.Enterprise.Tenant=target.resource.tag.Enterprise.Tenant, target.resource.tag.Enterprise.Service=’Sales’}
Allow dynamic-group SupplyInstances to use secret-family in compartment Tenants where all {request.principal.compartment.tag.Enterprise.Tenant=target.resource.tag.Enterprise.Tenant, target.resource.tag.Enterprise.Service=’Supply’}
Verwandte Links
Danksagungen
-
Autor - Chetan Soni (Senior Cloud Engineer)
-
Mitwirkender – Kiran Thakkar (Master Principal Cloud Architect)
Weitere Lernressourcen
Sehen Sie sich andere Übungen zu docs.oracle.com/learn an, oder greifen Sie im Oracle Learning YouTube-Channel auf weitere kostenlose Lerninhalte zu. Besuchen Sie außerdem education.oracle.com/learning-explorer, um Oracle Learning Explorer zu werden.
Die Produktdokumentation finden Sie im Oracle Help Center.
Deep Dive into Tag based Oracle Cloud Infrastructure Identity and Access Management Policies
G30363-01
Copyright ©2025, Oracle and/or its affiliates.