Mit einer IAM-Integration auf mandantenübergreifende Datenbanken zugreifen

Benutzer und Gruppen in einem Mandanten können auf DBaaS-Datenbankinstanzen in einem anderen Mandanten zugreifen, wenn dies durch Policys in beiden Mandanten zulässig ist.

Mandantenübergreifenden Zugriff für IAM-Benutzer auf DBaaS-Instanzen

Mandantenübergreifender Zugriff auf eine Oracle Cloud Infrastructure-(OCI-)DBaaS-Instanz ähnelt einem einzelnen Mandantenszenario, mit der Ausnahme, dass Mandanteninformationen für Zuordnungen und Tokenanforderungen erforderlich sind und in beiden Mandanten eine Policy erforderlich ist, um diesen mandantenübergreifenden Datenbankressourcenzugriff zu ermöglichen.

Die folgende Abbildung veranschaulicht den Prozess für einen mandantenübergreifenden Zugriff auf eine OCI DBaaS-Instanz.

Abbildung 3-1: Mandantenübergreifender Zugriff auf eine OCI-Instanz DBaaS

Beschreibung von Abbildung 3-1 folgt
Beschreibung von "Abbildung 3-1 Mandantenübergreifender Zugriff auf eine OCI DBaaS-Instanz"

Der mandantenübergreifende Prozess sieht wie folgt aus:

  1. Die Policy ist in beiden Mandanten erforderlich, um den mandantenübergreifenden Zugriff zu bestätigen und zuzuweisen.
  2. Der IAM-Principal (Benutzer oder Anwendung) fordert ein DB-Token für eine mandantenübergreifende Ressource an.
  3. db-token wird zurückgegeben und für den Zugriff auf die Datenbank in einem anderen Mandanten verwendet
  4. Die Datenbank erstellt eine mandantenübergreifende Gruppenabfrage für die Gruppen des Benutzers und ordnet den Principal dem globalen Schema und den optionalen globalen Rollen zu.

Sie müssen den Benutzermandanten für dieselben Regionen abonnieren, in denen sich die Datenbanken befinden. Beispiel: Wenn sich die Datenbanken im Datenbankmandanten in den Regionen PHX und IAD befinden, müssen Sie den Benutzermandanten für diese Regionen abonnieren. Dies ist nicht die Hauptregion, sondern nur die zusätzlichen abonnierten Regionen im Benutzermandanten.

Policys konfigurieren

Sie müssen Policys sowohl im Benutzermandanten als auch im Mandanten der Datenbankressource erstellen, um mandantenübergreifenden Datenbankzugriff zu ermöglichen.

Quellbenutzermandanten konfigurieren

Zwei Policys sind erforderlich, um mandantenübergreifenden Zugriff im Benutzermandanten zu ermöglichen.

Die erste Policy besteht darin, einer Benutzermandantengruppe den Zugriff auf eine Datenbank in einem anderen Mandanten zu erlauben. Mit der zweiten Policy kann eine Datenbank im Datenbankmandanten Gruppeninformationen im Benutzermandanten abfragen.
  1. Wählen Sie in der OCI-Konsole Identität und Sicherheit aus.
  2. Wählen Sie unter Identität die Option Policys aus.
  3. Klicken Sie auf Policy erstellen, und wählen Sie im Policy Builder die Option Manuellen Editor anzeigen aus.
  4. Verwenden Sie die DEFINE-Anweisung, um das Lesen der tatsächlichen Policys zu vereinfachen.
    Beispiele:
    DEFINE tenancy database_tenancy as ocid1.tenancy.OCID
  5. Geben Sie die Mandantengruppe domainA/xt_db_users an, um database_connections im Mandanten database_tenancy zu verwenden.
    Dadurch können Benutzer der Gruppe xt_db_users in domainA auf jede Datenbank im Mandanten database_tenancy zugreifen.
    ENDORSE group domainA/xt_db_users to use database-connections in tenancy database_tenancy
  6. Mit der Anweisung ADMIT können Sie eine Zulassungs-Policy erstellen, damit jede Datenbank im Datenbankmandanten Gruppeninformationen für bestimmte IAM-Benutzer im Benutzermandanten abfragen kann.
    ADMIT any-user of tenancy database_tenancy to {GROUP_MEMBERSHIP_INSPECT, AUTHENTICATION_INSPECT} in tenancy

Mandanten der Zieldatenbankressource konfigurieren

Der Datenbankmandant benötigt übereinstimmende Policys, um den Zugriff auf die Benutzer aus dem Benutzermandanten zu ermöglichen und es seinen eigenen Datenbanken zu ermöglichen, Gruppeninformationen im Benutzermandanten abzufragen

  1. Wählen Sie in der OCI-Konsole Identität und Sicherheit aus.
  2. Wählen Sie unter Identität die Option Policys aus.
  3. Klicken Sie auf Policy erstellen, und wählen Sie im Policy Builder die Option Manuellen Editor anzeigen aus.
  4. Verwenden Sie DEFINE, um die Fehlerbehebung und das Lesen der Policys zu vereinfachen.
    DEFINE tenancy user_tenancy as ocid1.tenancy.OCID
    DEFINE group xt_db_users as ocid1.group.defg
    
  5. Verwenden Sie ADMIT, um eine Zulassungs-Policy im Mandanten zu erstellen, die mit der Endorse-Policy aus dem Benutzermandanten übereinstimmt.
    Die Zulassungs-Policy muss mit der Policy ENDORSE im Benutzermandanten übereinstimmen, damit Benutzer aus der user_tenancy auf Datenbanken in diesem Mandanten zugreifen können.
    ADMIT group xt_db_users of tenancy user_tenancy to use database-connections in tenancy
  6. Erstellen Sie eine Endbenutzer-Policy, die mit der im Benutzermandanten erstellten Zulassungs-Policy übereinstimmt.
    Mit der Endorse-Policy können Datenbanken im Datenbankmandanten Gruppeninformationen aus user_tenancy abfragen.
    ENDORSE any-user to {GROUP_MEMBERSHIP_INSPECT, AUTHENTICATION_INSPECT} in tenancy user_tenancy
Die Verwendung von any-user erleichtert das Verständnis der erforderlichen Policys. Oracle empfiehlt jedoch, dass Sie stärkere Constraints zusätzlich zu oder anstelle von any-user verwenden. Mit der Option any-user kann jeder Principal oder jede Ressource Benutzergruppen in der user_tenancy abfragen. Im Idealfall sollten Sie dies darauf beschränken, nur den Datenbankressourcen (Resource Principals) die Gruppenabfragen zu erlauben. Dazu können Sie den Policys eine WHERE-Klausel hinzufügen oder eine dynamische Gruppe hinzufügen, die sie auf die Mitglieder der dynamischen Gruppe beschränkt. Die Definition aller möglichen Möglichkeiten zur Angabe dynamischer Gruppen und Policys liegt außerhalb des Geltungsbereichs dieses Themas. Weitere Informationen finden Sie aus folgenden Quellen:

Policy-Beispiele für den mandantenübergreifenden Zugriff

Beispiele hierfür sind die Verwendung einer WHERE-Klausel, um die mandantenübergreifende Konfiguration zu verfeinern, und andere Methoden zur Ausführung dieses Konfigurationstyps.

Sie können eine WHERE-Klausel hinzufügen, um die Datenbankressourcen einzuschränken, die für die mandantenübergreifende Gruppenabfrage zulässig sind:

ADMIT any-user of tenancy db_tenancy to {GROUP_MEMBERSHIP_INSPECT, AUTHENTICATION_INSPECT} in tenancy where request.principal.type = 'dbsystem'

Mit dieser Zulassungs-Policy kann jeder Base Database Service (Ressourcentyp: dbsystem) in der db_tenancy die Gruppeninformationen eines Benutzers aus dem Benutzermandanten abfragen. Ressourcentypnamen sind in der folgenden Tabelle aufgeführt.

Eine ähnliche Methode kann durchgeführt werden, indem derselbe Ressourcentyp in eine dynamische Gruppe eingefügt wird:

dynamic group: db_principals
any {resource.type = 'dbsystem', resource.type = 'vmcluster', resource.type = 'cloudvmcluster'}

Die dynamische Gruppe im vorherigen Beispiel umfasst Datenbankinstanzen für Oracle Base Database Service (dbsystem), Oracle Exadata Cloud@Customer (vmcluster) und Oracle Exadata Database Service (cloudvmcluster).

In diesem Beispiel wird eine dynamische Gruppe anstelle von any-user verwendet:

ADMIT dynamic group db_principals of tenancy db_tenancy to {GROUP_MEMBERSHIP_INSPECT, AUTHENTICATION_INSPECT} in tenancy

Sie können auch alle Resource Principals mit resource.compartment.id in einem Compartment hinzufügen. Dies kann jedoch auch dazu führen, dass andere nicht datenbankbezogene Resource Principals die mandantenübergreifende Gruppenabfrage ausführen können. Die folgende Tabelle enthält eine Zuordnung der verschiedenen Ressourcentypen zum Plattformnamen DBaaS:

DBaaS Plattformname Ressourcenart

ADB-S

autonomousdatabase

ADB-D (OPC)

cloudautonomousvmcluster*

Basis-DBS

dbsystem

ExaCS

cloudvmcluster

ExaCC

vmcluster

* Ältere ADBD-Instanzen verwenden möglicherweise weiterhin den Ressourcentyp autonomousexainfrastructure.

Datenbankschemas und -rollen Benutzern und Gruppen in einem anderen Mandanten zuordnen

Wenn Sie diesen Mappingtyp ausführen, müssen Sie die Mandanten-OCID zu den Mappinginformationen hinzufügen, damit die Datenbank weiß, dass es sich um mandantenübergreifenden Zugriff handelt.

Verwenden Sie einen vollständigen Doppelpunkt, um die Mandanten-OCID zu trennen, wenn Sie die Anweisungen CREATE USER und CREATE ROLE in SQL*Plus verwenden.
  • So verwenden Sie die Anweisung CREATE USER, um das Mapping auszuführen:
    Die folgenden Beispiele zeigen die exklusive und gemeinsame Schemazuordnung mit Principals und Gruppen in Standard- und Nicht-Standarddomains. Wenn Sie Standarddomains verwenden, müssen Sie keinen Domänennamen angeben.
    CREATE USER schema1 IDENTIFIED GLOBALLY 
    AS 'IAM_PRINCIPAL_NAME=ocid1.tenancy.OCID:example_domain/peter.fitch@oracle.com';
    
    CREATE USER schema2 IDENTIFIED GLOBALLY 
    AS 'IAM_PRINCIPAL_NAME=ocid1.tenancy.OCID:peter.fitch@oracle.com';
    
    CREATE USER qa_db_user_group IDENTIFIED GLOBALLY 
    AS 'IAM_GROUP_NAME=ocid1.tenancy.OCID:example_domain/xt_db_users';
    
    CREATE USER qa_sales_user_group IDENTIFIED GLOBALLY 
    AS 'IAM_GROUP_NAME=ocid1.tenancy.OCID:sales_users';
    
    CREATE USER xt_ip_user IDENTIFIED GLOBALLY 
    AS 'IAM_PRINCIPAL_OCID=ocid1.instance.region1.sea.OCID';
    GRANT CREATE SESSION TO xt_ip_user;
    
    CREATE USER xt_iam_dg IDENTIFIED GLOBALLY 
    AS 'IAM_GROUP_NAME=ocid1.tenancy.region1.OCID:sales_principals';
    GRANT CREATE SESSION TO xt_iam_dg;
  • So verwenden Sie die Anweisung CREATE ROLE, um das Mapping auszuführen:
    Die folgenden Beispiele zeigen die globale Rollenzuordnung mit Gruppen in Standard- und Nicht-Standarddomänen. Wenn Sie Standarddomains verwenden, müssen Sie keinen Domänennamen angeben.
    CREATE ROLE globalrole1 IDENTIFIED GLOBALLY 
    AS 'IAM_GROUP_NAME=ocid1.tenancy.abcdef:example_domain/xt_db_users';
    
    CREATE ROLE globalrole2 IDENTIFIED GLOBALLY 
    AS 'IAM_GROUP_NAME=ocid1.tenancy.abcdef:sales_users';

Datenbankclients für mandantenübergreifenden Zugriff konfigurieren

Sie können einige Datenbankclients direkt konfigurieren.

Der Datenbankmandant muss entweder in der Verbindungszeichenfolge oder in sqlnet.ora identifiziert werden, wenn der Client so konfiguriert ist, dass er das Zugriffstoken direkt von OCI IAM abruft. Prüfen Sie die clientspezifische Dokumentation auf bestimmte Parameterwerte (JDBC-thin, ODP.NET-core, managed).

Mandantenübergreifende Token mit der OCI-Befehlszeilenschnittstelle anfordern

Sie müssen den Parameter --scope zum Oracle Cloud Infrastructure-(OCI-)Befehlszeilenschnittstellenbefehl hinzufügen, um eine db-token für eine mandantenübergreifende Anforderung abzurufen. Wenn sich die Datenbank, auf die Sie zugreifen, in einer anderen Region befindet als die Hauptregion des Benutzermandanten, muss die Region auch mit dem Parameter --region zum OCI-CLI-Befehl hinzugefügt werden.

Weitere Informationen zur Verwendung der optionalen Parameter des Befehls oci get finden Sie unter Optionale Parameter.

Sie können den Geltungsbereich für den gesamten Mandanten oder einen Geltungsbereich für ein Compartment oder eine Datenbank im Mandanten festlegen. Wenn Sie den Geltungsbereich für ein mandantenübergreifendes Compartment oder eine mandantenübergreifende Datenbank festlegen, müssen Sie nicht auch die Mandanteninformationen hinzufügen, da die Compartment- und Datenbank-OCIDs in OCI eindeutig sind.

Bestimmte Clients können die Token direkt von MSEI anfordern. Informationen zum Festlegen der Parameter zum Abrufen der MSEI OAuth2-Zugriffstoken finden Sie in der entsprechenden Dokumentation.