Azure-Service-Principal für den Zugriff auf Azure-Ressourcen verwenden

Sie können einen Azure-Service-Principal mit Autonomous Database verwenden, um auf Azure-Ressourcen zuzugreifen, ohne Ihre eigenen Zugangsdatenobjekte in der Datenbank erstellen und speichern zu müssen.

Azure-Service-Principal aktivieren

Aktivieren Sie die Principal-Authentifizierung des Azure-Service, damit Autonomous Database auf Azure-Services zugreifen kann, ohne langfristige Zugangsdaten bereitzustellen.

Hinweis

Um die Autonomous Database mit der Azure-Service-Principal-Authentifizierung zu verwenden, benötigen Sie einen Microsoft Azure-Account. Weitere Informationen finden Sie unter Microsoft Azure.

So aktivieren Sie die Principal-Authentifizierung des Azure-Service in Autonomous Database:

  1. Rufen Sie die Microsoft Azure Active Directory-Mandanten-ID ab.

    Weitere Informationen finden Sie unter So finden Sie Ihre Azure Active Directory-Mandanten-ID.

  2. Aktivieren Sie Azure-Service-Principal mit DBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTH.

    Beispiel:

    BEGIN
        DBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTH(
            provider => 'AZURE',
            username => 'adb_user',
            params   => JSON_OBJECT('azure_tenantid' value 'azure_tenantID'));
    END;
    /

    Dadurch wird die Principal-Authentifizierung des Azure-Service aktiviert, und es wird eine Azure-Anwendung in Autonomous Database erstellt.

    Wenn der angegebene Benutzer Berechtigungen zum Aktivieren des Azure-Service-Principals für andere Benutzer haben soll, setzen Sie den Parameter params grant_option auf TRUE.

    Beispiel:

    BEGIN
        DBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTH(
            provider => 'AZURE',
            username => 'adb_user',
            params   => JSON_OBJECT('grant_option' value TRUE, 
                                    'azure_tenantid' value 'azure_tenantID'));
    END;
    /

    Nachdem Sie diesen Befehl ausgeführt haben, kann adb_user den Azure-Service-Principal für einen anderen Benutzer aktivieren. Beispiel: Wenn Sie eine Verbindung als adb_user herstellen, können Sie den folgenden Befehl ausführen:

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

Weitere Informationen finden Sie unter Prozedur ENABLE_PRINCIPAL_AUTH.

Azure-Anwendungszustimmung erteilen und Rollen zuweisen

Um auf Azure-Ressourcen von Autonomous Database mit Azure-Service-Principal-Authentifizierung zuzugreifen, müssen Sie der Azure-Anwendung zustimmen und Rollen zuweisen, um den Zugriff auf Ihre Azure-Ressourcen zu ermöglichen.

Um die Azure-Anwendungszustimmung zu erteilen und Rollen zuzuweisen, führen Sie die folgenden Schritte aus:

  1. Führen Sie in Autonomous Database die Abfrage CLOUD_INTEGRATIONS aus.

    Beispiel:

    SELECT param_name, param_value FROM CLOUD_INTEGRATIONS;
    
    PARAM_NAME        PARAM_VALUE
    --------------- ------------------------------------------------------------------------------------------------------------------------------------------
    azure_tenantid    29981886-6fb3-44e3-82ab-d870b0e8e7eb
    azure_consent_url https://login.microsoftonline.com/f8cdef31-91255a/oauth2/v2.0/authorize?client_id=d66f1b5-1250d5445c0b&response_type=code&scope=User.read
    azure_app_name    ADBS_APP_OCID1.AUTONOMOUSDATABASE.REGION1.SEA.ANZWKLJSZLYNB3AAWLYL3JVC4ICEXLB3ZG6WTCX735JSSY2NRHOBU4DZOOVA

    Die Ansicht CLOUD_INTEGRATIONS ist für den Benutzer ADMIN oder einen Benutzer mit der Rolle DWROLE verfügbar.

  2. Öffnen Sie in einem Browser die Azure-Zustimmungs-URL, die durch den Parameter azure_consent_url angegeben wird.

    Beispiel: Kopieren Sie die URL, und geben Sie sie in Ihrem Browser ein:

    https://login.microsoftonline.com/f8cdef31-91255a/oauth2/v2.0/authorize?client_id=d66f1b5-1250d5445c0b&response_type=code&scope=User.read

    Die Seite Angeforderte Berechtigungen wird geöffnet und zeigt eine Einwilligungsanforderung wie folgt an:

    Beschreibung von azure_consent.png folgt
    Beschreibung der Abbildung azure_consent.png
  3. Um die Einwilligung zu erteilen, klicken Sie auf Akzeptieren.
  4. Weisen Sie in der Microsoft Azure-Konsole die Rollen zu, die Sie erteilen möchten, um den Zugriff auf die angegebenen Azure-Ressourcen zuzulassen.

    Beispiel: Wenn Sie von Autonomous Database auf Azure Blob Storage zugreifen möchten, weisen Sie Rollen zu, sodass die Azure-Anwendung (der Service-Principal) Zugriff auf Azure Blob Storage hat.

    Hinweis

    Um mit Azure Blob Storage zu arbeiten, benötigen Sie einen Azure-Speicheraccount. Wenn Sie keinen Azure-Speicheraccount haben, erstellen Sie einen Speicheraccount. Weitere Informationen finden Sie unter Speicheraccount erstellen.
    1. Wählen Sie in der Microsoft Azure-Konsole unter Azure-Services die Option Speicherkonten aus.
    2. Klicken Sie unter Speicherkonten auf das Speicherkonto, für das Sie dem Service-Principal Zugriff erteilen möchten.
    3. Klicken Sie links auf Access Control (IAM).
    4. Klicken Sie im oberen Bereich auf + Hinzufügen → Rollenzuweisung hinzufügen.
    5. Geben Sie im Suchbereich Text ein, um die Liste der angezeigten Rollen einzugrenzen. Beispiel: Geben Sie Speicher-Blob ein, um die verfügbaren Rollen mit Speicher-Blob anzuzeigen.
    6. Wählen Sie eine oder mehrere Rollen für den Zugriff aus, den Sie gewähren möchten. Beispiel: Wählen Sie Storage Blob Data Contributor aus.
    7. Klicken Sie auf Weiter.
    8. Klicken Sie unter Rollenzuweisung hinzufügen unter Mitglieder auf + Elemente auswählen.
    9. Geben Sie unter Elemente auswählen im Auswahlfeld die in Schritt 1 aufgeführte azure_app_name (die Spalte param_value der Ansicht CLOUD_INTEGRATIONS) ein.
    10. Wählen Sie die Anwendung.

      Beispiel: Klicken Sie auf ADBS_APP_OCID1.AUTONOMOUSDATABASE.REGION1.SEA.ANZWKLJSZLYNB3AAWLYL3JVC4ICEXLB3ZG6WTCX735JSSY2NRHOBU4DZOOVA.

    11. Klicken Sie auf Auswählen.
    12. Klicken Sie auf Prüfen + zuweisen.
  5. Klicken Sie erneut auf Prüfen + zuweisen.

    Nach der Zuweisung einer Rolle müssen Sie warten, da die Propagierung von Rollenzuweisungen in Azure bis zu fünf Minuten dauern kann.

In diesem Beispiel werden Schritte zum Erteilen von Rollen für den Zugriff auf Azure Blob Storage gezeigt. Wenn Sie Zugriff für andere Azure-Services bereitstellen möchten, müssen Sie entsprechende Schritte für die zusätzlichen Azure-Services ausführen, damit die Azure-Anwendung (der Service-Principal) auf den Azure-Service zugreifen kann.

Azure-Service-Principal mit DBMS_CLOUD verwenden

Wenn Sie DBMS_CLOUD-Aufrufe für den Zugriff auf Azure-Ressourcen ausführen und den Zugangsdatennamen als AZURE$PA angeben, wird die Authentifizierung auf Azure-Seite mit dem Azure-Service-Principal ausgeführt.

Wenn dies noch nicht geschehen ist, führen Sie die erforderlichen Voraussetzungsschritte aus:

Um eine DBMS_CLOUD-Prozedur oder -Funktion mit einem Azure-Service-Principal zu verwenden, geben Sie AZURE$PA als Zugangsdatennamen an. Beispiel: Sie können wie folgt auf Azure Blob Storage mit den Principal-Zugangsdaten des Azure-Service zugreifen:

SELECT * FROM DBMS_CLOUD.LIST_OBJECTS('AZURE$PA', 'https://treedata.blob.core.windows.net/treetypes/');

OBJECT_NAME BYTES CHECKSUM                 CREATED              LAST_MODIFIED        
----------- ----- ------------------------ -------------------- -------------------- 
trees.txt      58 aCB1qMOPVobDLCXG+2fcvg== 2022-04-07T23:03:01Z 2022-04-07T23:03:01Z

Wenn Sie die Schritte vergleichen, die für den Zugriff auf den Objektspeicher erforderlich sind, wie unter Zugangsdaten erstellen und Daten in eine vorhandene Tabelle kopieren dargestellt, beachten Sie, dass Schritt 1 nicht erforderlich ist, um Zugangsdaten zu erstellen, da Sie einen Azure-Service-Principal mit dem Namen AZURE$PA verwenden.

Azure-Service-Principal deaktivieren

Um den Zugriff auf Azure-Ressourcen aus Autonomous Database mit dem Azure-Service-Principal zu deaktivieren, verwenden Sie DBMS_CLOUD_ADMIN.DISABLE_PRINCIPAL_AUTH.

So deaktivieren Sie den Azure-Service-Principal in Autonomous Database:

BEGIN
    DBMS_CLOUD_ADMIN.DISABLE_PRINCIPAL_AUTH(
        provider => 'AZURE',
        username => 'adb_user');
END;
/

Wenn der Wert für provider AZURE ist und username ein anderer Benutzer als der Benutzer ADMIN ist, entzieht die Prozedur dem angegebenen Benutzer die Berechtigungen. In diesem Fall können der ADMIN-Benutzer und andere Benutzer weiterhin ADMIN.AZURE$PA verwenden, und die Anwendung, die für die Autonomous Database-Instanz erstellt wird, bleibt auf der Instanz.

Wenn der Wert für provider AZURE lautet und username ADMIN ist, deaktiviert die Prozedur die auf dem Azure-Service-Principal basierende Authentifizierung und löscht die Principal-Anwendung des Azure-Service in der Autonomous Database-Instanz. Wenn Sie in diesem Fall den Azure-Service-Principal aktivieren möchten, müssen Sie alle erforderlichen Schritte ausführen, um den Azure-Service-Principal erneut zu verwenden, einschließlich der folgenden Schritte:

Weitere Informationen finden Sie unter Prozedur DISABLE_PRINCIPAL_AUTH.

Hinweise zum Azure-Service-Principal

Hinweise zur Verwendung des Azure-Service-Principals.

  • Autonomous Database-Instanz mit Azure-Service-Principal klonen: Wenn Sie eine Instanz klonen, für die der Azure-Service-Principal aktiviert ist, wird die Azure-Service-Principal-Konfiguration nicht auf den Klon übertragen. Führen Sie die Schritte aus, um den Azure-Service-Principal auf dem Klon zu aktivieren, wenn Sie den Azure-Service-Principal auf einer geklonten Instanz aktivieren möchten.