Amazon-Ressourcennamen (ARNs) für den Zugriff auf AWS-Ressourcen verwenden

Sie können Amazon-Ressourcennamen (ARNs) verwenden, um mit Autonomous Database auf AWS-Ressourcen zuzugreifen.

Amazon-Ressourcennamen (ARNs) für den Zugriff auf AWS-Ressourcen verwenden

Wenn Sie die rollenbasierte ARN-Authentifizierung mit Autonomous Database verwenden, können Sie sicher auf AWS-Ressourcen zugreifen, ohne Zugangsdaten auf Basis langfristiger AWS-IAM-Zugriffsschlüssel zu erstellen und zu speichern.

Beispiel: Sie möchten Daten aus einem AWS-S3-Bucket in Autonomous Database laden, einen Vorgang für die Daten ausführen und die geänderten Daten dann wieder in den S3-Bucket schreiben. Dies ist ohne ARN möglich, wenn Sie über AWS-Benutzerzugangsdaten für den Zugriff auf den S3-Bucket verfügen. Die Verwendung rollenbasierter ARNs für den Zugriff auf AWS-Ressourcen in Autonomous Database bietet jedoch die folgenden Vorteile:

  • Sie können rollenbasierten Zugriff mit verschiedenen Policys für verschiedene Benutzer oder Schemas erstellen, die Zugriff auf AWS-Ressourcen von einer Autonomous Database-Instanz benötigen. Dadurch können Sie eine Policy festlegen, um den Zugriff auf AWS-Ressourcen je nach Rolle zu begrenzen. Sie können beispielsweise eine Policy festlegen, die für einen S3-Bucket je nach Rolle nur Lesezugriff erteilt.
  • ARN-basierte Zugangsdaten bieten mehr Sicherheit, da Sie keine langfristigen AWS-Benutzerzugangsdaten für den Zugriff auf AWS-Ressourcen im Code angeben müssen. Autonomous Database verwaltet die temporären Zugangsdaten, die mit dem AWS-Vorgang "Assume Role" generiert wurden.

Schritte zum Konfigurieren der ARN-Nutzung mit Autonomous Database

Vor dem Erstellen von Zugangsdaten mit einem ARN in Autonomous Database muss der Accountadministrator in AWS eine Policy definieren, mit der Sie auf AWS-Ressourcen wie einen S3-Bucket zugreifen können. Standardmäßig sind ARN-Zugangsdaten-Services in Autonomous Database nicht aktiviert. Der ADMIN-Benutzer aktiviert ARN-ID-Daten für den erforderlichen Benutzer, mit denen er ARN-ID-Daten in der Autonomous Database-Instanz erstellen und verwenden kann.

In AWS ist der Rollen-ARN die ID für den bereitgestellten Zugriff und kann in der AWS-Konsole angezeigt werden. Wenn der AWS-Administrator die Rolle, Policys und Vertrauensstellung für den AWS-Account konfiguriert, muss für zusätzliche Sicherheit auch eine externe ID in der Vertrauensstellung der Rolle konfiguriert werden.

Die externe ID bietet zusätzlichen Schutz für die Übernahme von Rollen. Der AWS-Administrator konfiguriert die Konfiguration der externen ID auf Basis der Autonomous Database-Instanz wie folgt:

  • Die Compartment-OCID

  • Die Datenbank-OCID

  • Die Mandanten-OCID

In AWS kann die Rolle nur von vertrauenswürdigen Benutzern übernommen werden, die durch die externe ID in der Anforderungs-URL identifiziert werden. Die in der Anforderung angegebene externe ID muss dabei mit der in der Vertrauensstellung der Rolle konfigurierten externen ID übereinstimmen.

Hinweis

Das Festlegen der externen ID ist aus Sicherheitsgründen erforderlich.

Die folgende Abbildung veranschaulicht die Konfigurationsschritte:

Beschreibung von adb_arn_config_steps.eps folgt
Beschreibung der Abbildung adb_arn_config_steps.eps

Schritte zur Verwendung von ARNs mit DBMS_CLOUD

Jede AWS-Ressource hat ihre eigene Identität, und die Ressource wird bei der Autonomous Database-Instanz mit DBMS_CLOUD-Zugangsdaten authentifiziert, die Sie mit Parametern zur Identifizierung des ARN erstellen. Autonomous Database erstellt und sichert die Principal-Zugangsdaten, die Sie für den Zugriff auf AWS-Ressourcen verwenden.

So erstellen Sie Zugangsdaten mit ARN-Parametern für den Zugriff auf AWS-Ressourcen:

  1. Führen Sie die erforderlichen Schritte im AWS-Account aus: Erstellen Sie in Ihrem AWS-Account über die AWS-Managementkonsole oder über die CLI die Rollen und Policys für den ARN, den Sie mit Autonomous Database verwenden, und aktualisieren Sie die Vertrauensstellung für die Rolle. Der ARN des Oracle-Benutzers wird konfiguriert, wenn die Vertrauenswürdigkeit für die Rolle aktualisiert wird.

    Weitere Informationen finden Sie unter AWS-Management-Anforderungen für die Verwendung von Amazon-Ressourcennamen (ARNs) ausführen).

  2. Führen Sie die erforderlichen Schritte für Autonomous Database aus: In Autonomous Database müssen Sie zulassen, dass der ADMIN-Benutzer oder ein anderer Benutzer Zugangsdaten mit ARN-Parametern für den Zugriff auf AWS-Ressourcen verwendet.

    Weitere Informationen finden Sie unter Autonomous Database-Anforderungen für die Verwendung von Amazon-ARNs ausführen.

  3. Erstellen Sie Zugangsdaten mit DBMS_CLOUD.CREATE_CREDENTIAL, und geben Sie die Parameter zur Identifizierung einer AWS-Rolle an. Mit dem Zugangsdatenobjekt kann Autonomous Database auf AWS-Ressourcen zugreifen, wie in den Policys angegeben, die für die Rolle im AWS-Account definiert sind.

    Weitere Informationen zu diesen Schritten finden Sie unter Zugangsdaten mit ARN-Parametern für den Zugriff auf AWS-Ressourcen erstellen.

  4. Verwenden Sie das im vorherigen Schritt erstellte Zugangsdatenobjekt mit einer DBMS_CLOUD-Prozedur oder -Funktion, die einen Zugangsdatenparameter annimmt, z.B. DBMS_CLOUD.COPY_DATA oder DBMS_CLOUD.LIST_OBJECTS.

AWS-Managementanforderungen für die Verwendung von Amazon-Ressourcennamen (ARNs) ausführen

Erstellen Sie mit der AWS-Managementkonsole oder den APIs einen AWS-Benutzer, eine Rolle, Policys und eine Vertrauenswürdigkeit. Sie führen diese Schritte aus, bevor Sie mit DBMS_CLOUD.CREATE_CREDENTIAL Zugangsdaten mit einem ARN-Parameter in Autonomous Database erstellen.

Um mit einem ARN auf AWS-Ressourcen zuzugreifen, definiert Ihr AWS-Administrator die Policys und einen Principal, mit dem Sie auf AWS-Ressourcen zugreifen können. Beispiel: Sie möchten mit Autonomous Database auf Daten in einem S3-Bucket zugreifen, einen Vorgang mit den Daten ausführen und die geänderten Daten dann wieder in den S3-Bucket schreiben.

Hinweis

Abhängig von der vorhandenen AWS-Konfiguration und der verwendeten externen ID müssen Sie nicht für jede Autonomous Database-Instanz eine neue Rolle und Policy erstellen. Wenn Sie bereits über eine AWS-Rolle mit der erforderlichen Policy für den Zugriff auf eine Ressource verfügen, z.B. für den Zugriff auf den S3-Cloud-Speicher, können Sie die Vertrauenswürdigkeit in Schritt 3 ändern, um die Details aufzunehmen. Wenn Sie bereits über eine Rolle mit der erforderlichen Vertrauensstellung verfügen, können Sie mit dieser Rolle auch auf alle Datenbanken in einem OCI-Compartment oder Mandanten zugreifen, wenn Sie eine externe ID verwenden, die die Compartment-OCID oder Mandanten-OCID angibt.

In der AWS-Managementkonsole oder unter Verwendung der APIs führt ein AWS-Administrator die folgenden Schritte aus:

  1. Policy erstellen. In der Policy geben Sie Berechtigungen für den Zugriff auf AWS-Ressourcen wie S3-Buckets an.

    Weitere Informationen finden Sie unter IAM-Policy für den Zugriff auf Amazon S3-Ressourcen erstellen.

  2. Erstellen Sie eine Rolle, und verknüpfen Sie die Policy mit der Rolle.
    1. Greifen Sie auf die AWS-Managementkonsole zu, und wählen Sie Identity and Access Management (IAM) aus.
    2. Klicken Sie auf Create Role.
    3. Wählen Sie Weiterer AWS-Account aus.
    4. Geben Sie Ihre Account ID ein.
      Sie verwenden dies als temporären Wert. Später ersetzen Sie diesen Wert durch die Account-ID, mit der Sie auf AWS-Ressourcen zugreifen.
    5. Wählen Sie im Bereich Optionen die Option Erforderliche externe ID aus, und geben Sie eine temporäre externe ID ein, wie 0000. Später ersetzen Sie diese externe ID durch einen gültigen Wert.
    6. Klicken Sie auf Nächste Berechtigungen, um der Rolle die in Schritt 1 erstellten Policys oder andere Policys hinzuzufügen.
    7. Klicken Sie auf Next Tags, und wenden Sie Tags an, oder erstellen Sie sie, wie für die Rolle erforderlich.
    8. Klicken Sie auf Next Review, und fügen Sie unter Role Name und Role Description einen Rollennamen und eine Rollenbeschreibung hinzu.
    9. Klicken Sie auf Create Role.

    Sie verwenden den ARN der Rolle mit DBMS_CLOUD.CREATE_CREDENTIAL, um Zugangsdatenobjekte mit ARN-Parametern für den Zugriff auf AWS-Ressourcen zu erstellen.

    Weitere Informationen finden Sie unter Rolle zum Delegieren von Berechtigungen an einen IAM-Benutzer erstellen.

  3. Geben Sie eine Vertrauensstellung für die Rolle an.
    1. Wählen Sie in der Rollenliste unter Rollenname die Rolle aus, die Sie erstellt haben.
    2. Wählen Sie auf der Seite "Rollenübersicht" für die ausgewählte Rolle die Registerkarte Vertrauensbeziehungen aus.
    3. Klicken Sie in der Vertrauensstellung auf Bearbeiten von Vertrauensstellung.
    4. Bearbeiten Sie die Vertrauensstellung, um den Principal-Parameter AWS anzugeben.

      Dieser AWS-Benutzer-ARN ist in der Ansicht CLOUD_INTEGRATIONS verfügbar. Weitere Informationen finden Sie unter Autonomous Database-Anforderungen für die Verwendung von Amazon-ARNs ausführen.

    5. Bearbeiten Sie die Vertrauensstellung, um die externe ID anzugeben.

      Wenn Sie in Autonomous Database AWS-ARN-Zugangsdaten mit DBMS_CLOUD.CREATE_CREDENTIAL erstellen oder wenn Sie AWS-ARN mit DBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTH aktivieren, ist der external_id_type-Parameterwert standardmäßig database_ocid. Optional können Sie den Wert external_id_type auf einen der unterstützten Werte setzen: database_ocid, compartment_ocid oder tenant_ocid.

      Wenn Sie die Datenbank-OCID als externe ID verwenden, wird mit der Vertrauensstellung der Policy nur der Autonomous Database-Instanz vertraut, die mit der OCID angegeben wird. Wenn Sie eine Compartment-OCID verwenden, vertraut die Vertrauensstellung der Policy allen Autonomous Database-Instanzen im Compartment, und Sie können denselben Rollen-ARN verwenden, um allen Autonomous Database-Instanzen im angegebenen Compartment Zugriff auf AWS-Ressourcen zu erteilen. Wenn Sie die Mandanten-OCID verwenden, können Sie ebenfalls mit demselben Rollen-ARN allen Autonomous Database-Instanzen im angegebenen Mandanten Zugriff auf AWS-Ressourcen erteilen.

      Bisher haben Sie in Schritt 2 die externe ID der Vertrauensstellung auf den temporären Wert 0000 gesetzt.

      In AWS konfigurieren Sie die externe ID der Vertrauensstellung einer der folgenden Angaben entsprechend:

      • Wenn der external_id_type-Typ database_ocid ist, konfigurieren Sie in AWS die externe ID für die Vertrauensstellung als Datenbank-OCID.

        Führen Sie dazu die folgende Abfrage aus:

        SELECT cloud_identity FROM v$pdbs;

        Weitere Informationen finden Sie unter Kundendetails abrufen.

      • Wenn der external_id_type-Typ compartment_ocid ist, konfigurieren Sie in AWS die externe ID für die Vertrauensstellung der Rolle als Compartment-OCID.

        Die Compartment-OCID ist auf der Compartment-Detailseite in der Oracle Cloud Infrastructure-Konsole verfügbar. Um die Seite "Compartment-Details" anzuzeigen, klicken Sie im linken Navigationsmenü von Oracle Cloud Infrastructure auf Identität und und Sicherheit, und wählen Sie dann Compartments aus. Wählen Sie das Compartment aus, das die Autonomous Database-Instanz enthält, um die Compartment-ID anzuzeigen.

      • Wenn der external_id_type-Typ tenant_ocid ist, konfigurieren Sie in AWS die externe ID für die Vertrauensstellung als Mandanten-OCID.

        Die Mandanten-OCID ist auf der Seite " Mandantendetails" in der Oracle Cloud Infrastructure-Konsole verfügbar. Um die Seite mit den Mandantendetails anzuzeigen, klicken Sie im linken Navigationsmenü von Oracle Cloud Infrastructure auf Governance und Administration, und wählen Sie dann Mandantendetails aus. Auf der Registerkarte " Mandanteninformationen" wird die Mandanten-OCID angezeigt.

      • Wenn Sie den Wert für ExternalID festlegen, muss der OCID-Wert standardmäßig in Großbuchstaben angegeben werden. Wenn Sie die OCID in Kleinbuchstaben angeben möchten, legen Sie die Bedingung "StringEqualsIgnoreCase" anstelle von "StringEquals" in der JSON fest, wenn Sie die Vertrauensstellung bearbeiten.

      Beschreibung von arn_aws_create_role_aws_trust_final.png folgt
      Beschreibung der Abbildung arn_aws_create_role_aws_trust_final.png

Nachdem die Konfiguration der ARN-Rolle abgeschlossen ist, können Sie ARN in der Instanz aktivieren. Weitere Informationen finden Sie unter Autonomous Database-Anforderungen für die Verwendung von Amazon-ARNs ausführen.

Autonomous Database-Anforderungen für die Verwendung von Amazon-ARNs ausführen

Vor der Verwendung einer AWS-Ressource mit DBMS_CLOUD.CREATE_CREDENTIAL und einem ARN-Parameter muss der ADMIN-Benutzer ARN in der Autonomous Database-Instanz aktivieren.

Standardmäßig sind ARN-Zugangsdaten-Services in Autonomous Database nicht aktiviert. Der ADMIN-Benutzer führt die Prozedur DBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTH aus, damit der ADMIN-Benutzer oder andere Benutzer Zugangsdaten mit ARN-Parametern erstellen können.

  1. Aktivieren Sie die Verwendung von ARN-Zugangsdaten in der Autonomous Database-Instanz.
    BEGIN
        DBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTH(
            username => 'adb_user',
            params => JSON_OBJECT( 
                    'aws_role_arn' value 'arn:aws:iam::123456:role/AWS_ROLE_ARN'));
    END;
    /
    

    Wenn der angegebene Benutzer über Berechtigungen zum Aktivieren von ARN-Zugangsdaten für andere Benutzer verfügen soll, setzen Sie den params-Parameter grant_option auf TRUE.

    Beispiele:

    BEGIN
    DBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTH(
         username => 'adb_user',
         params => JSON_OBJECT(
                         'aws_role_arn' value 'arn:aws:iam::123456:role/AWS_ROLE_ARN',
                         'grant_option' value TRUE ));
    END;
    /

    Nachdem Sie diesen Befehl ausgeführt haben, verfügt adb_user über Berechtigungen zum Aktivieren von ARN-Berechtigungen für andere Benutzer.

    Beispiel: Wenn Sie eine Verbindung als adb_user herstellen, können Sie den folgenden Befehl ausführen:

    BEGIN
        DBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTH(
            username => 'adb_user2'); 
    END;
    /
    

    Weitere Informationen finden Sie unter Prozedur ENABLE_PRINCIPAL_AUTH.

  2. Fragen Sie die View CLOUD_INTEGRATIONS ab, um den ARN des AWS-Benutzer von Oracle abzurufen.
    SELECT param_value FROM CLOUD_INTEGRATIONS
            WHERE param_name = 'aws_user_arn';
    
    PARAM_VALUE
    --------------------------------------------  
    arn:aws:iam::account-ID:user/username

    Die View CLOUD_INTEGRATIONS ist für den ADMIN-Benutzer oder für einen Benutzer mit DWROLE-Berechtigungen verfügbar.

    Der AWS-Administrator verwendet den Wert aws_user_arn, wenn er die Vertrauenswürdigkeit der AWS-Rolle mit der Rolle und den Policys im AWS-System konfiguriert. Durch Angabe dieses Wertes erhält DBMS_CLOUD auf AWS-Seite die Berechtigung für den Zugriff auf AWS-Ressourcen.

Nachdem Sie ARN in der Autonomous Database-Instanz aktiviert haben, indem Sie DBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTH ausführen, sind die Zugangsdaten mit dem Namen AWS$ARN für jede DBMS_CLOUD-API verfügbar, die Zugangsdaten als Eingabe akzeptiert. Mit Ausnahme der Zugangsdaten mit dem Namen AWS$ARN können Sie auch zusätzliche Zugangsdaten mit ARN-Parametern für den Zugriff auf AWS-Ressourcen erstellen. Weitere Informationen finden Sie unter Zugangsdaten mit ARN-Parameter für den Zugriff auf AWS-Ressourcen erstellen.

Zugangsdaten mit ARN-Parametern für den Zugriff auf AWS-Ressourcen erstellen

Nachdem die ARN-Nutzung für die Autonomous Database-Instanz aktiviert und der ARN vom AWS-Administrator konfiguriert wurde, können Sie in Autonomous Database ein Zugangsdatenobjekt mit ARN-Parametern erstellen.

Autonomous Database erstellt und schützt die Principal-Zugangsdaten, mit denen Sie auf die Amazon-Ressourcen zugreifen, wenn Sie das Zugangsdatenobjekt mit DBMS_CLOUD-Prozeduren und -Funktionen bereitstellen.

So verwenden Sie Amazon-Ressourcen mit Autonomous Database:

  1. Erstellen Sie Zugangsdaten mit der Prozedur DBMS_CLOUD.CREATE_CREDENTIAL und dem Parameter params, um den ARN-Wert anzugeben. Beispiele:
    BEGIN
      DBMS_CLOUD.CREATE_CREDENTIAL(
        credential_name => 'DEF_CRED_ARN',
        params =>
            JSON_OBJECT('aws_role_arn' value 'arn:aws:iam::123456:role/AWS_ROLE_ARN',                                            
                        'external_id_type' value 'database_ocid')
      );
    END;
    /

    Dieser Vorgang erstellt die Zugangsdaten in einem verschlüsselten Format in der Datenbank. Sie können einen beliebigen Namen als Zugangsdatenname verwenden.

    Weitere Informationen zu den Parametern finden Sie unter Prozedur CREATE_CREDENTIAL.

  2. Verwenden Sie eine DBMS_CLOUD-Prozedur, um mit den ARN-Zugangsdaten auf eine Amazon-Ressource zuzugreifen.

    Beispiel: Verwenden Sie DBMS_CLOUD.LIST_OBJECTS.

    SELECT object_name FROM DBMS_CLOUD.LIST_OBJECTS(
               credential_name => 'DEF_CRED_ARN',
               location_uri    => 'https://my-bucket.s3.us-west-2.amazonaws.com/');

Zugangsdaten mit ARN-Parametern für AWS-Ressourcen aktualisieren

Die ARN-Zugangsdaten, die Sie in Autonomous Database verwenden, nutzen den AWS-Tokenservice, mit dem Sie temporäre rollenbasierte Zugangsdaten für den Zugriff auf AWS-Ressourcen in Autonomous Database verwenden können.

Wenn ein AWS-Administrator die Policys, Rollen oder Vertrauensstellung entzieht, müssen Sie die Zugangsdaten entweder aktualisieren oder neue Zugangsdaten erstellen, um auf die AWS-Ressourcen zuzugreifen.

So aktualisieren Sie Zugangsdaten:

  1. Verwenden Sie DBMS_CLOUD.UPDATE_CREDENTIAL, um ARN-basierte Zugangsdaten zur Bereitstellung eines neuen ARN-Wertes zu aktualisieren.
    BEGIN
      DBMS_CLOUD.UPDATE_CREDENTIAL(
         credential_name => 'DEF_CRED_ARN',
         attribute => 'aws_role_arn',
         value => 'new_ARN_value'); 
    END;
    /

    Dadurch wird das Attribut aws_role_arn auf den neuen Wert new_ARN_value für die Zugangsdaten mit dem Namen DEF_CRED_ARN aktualisiert.

  2. Verwenden Sie DBMS_CLOUD.UPDATE_CREDENTIAL, um ARN-basierte Zugangsdaten mit dem Wert des Attributs external_id_type zu aktualisieren.
    BEGIN
      DBMS_CLOUD.UPDATE_CREDENTIAL(
         credential_name => 'DEF_CRED_ARN',
         attribute => 'external_id_type',
         value => 'compartment_ocid'); 
    END;
    /

    Dadurch wird der Wert des Attributs external_id_type in den Wert compartment_ocid aktualisiert.

Weitere Informationen finden Sie unter Prozedur UPDATE_CREDENTIAL und Prozedur CREATE_CREDENTIAL.