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 eigene Zugangsdatenobjekte in der Datenbank erstellen und speichern zu müssen.

Azure-Service Principal aktivieren

Aktivieren Sie die Azure-Service- Principal-Authentifizierung, damit Autonomous Database auf Azure-Services zugreifen kann, ohne dass Sie langfristige Zugangsdaten angeben müssen.

Hinweis

Um 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 Azure-Service- Principal-Authentifizierung in Autonomous Database:

  1. Rufen Sie Ihre Mandanten-ID für Microsoft Azure Active Directory ab.

    Weitere Informationen finden Sie unter How to find the Azure Active Directory tenant ID.

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

    Beispiele:

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

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

    Wenn der angegebene Benutzer über Berechtigungen zum Aktivieren des Azure-Service-Princents für andere Benutzer verfügen soll, setzen Sie den params-Parameter grant_option TRUE.

    Beispiele:

    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 der 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 in Autonomous Database mit der Azure-Service-Principal-Authentifizierung auf Azure-Ressourcen zuzugreifen, müssen Sie der Azure-Anwendung zustimmen und Rollen zuweisen, um den Zugriff auf Ihre Azure-Ressourcen zu ermöglichen.

So erteilen Sie die Azure-Anwendungsgenehmigung und weisen Rollen zu:

  1. Fragen Sie in Autonomous Database CLOUD_INTEGRATIONS ab.

    Beispiele:

    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 View CLOUD_INTEGRATIONS ist für den Benutzer ADMIN oder für 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 Ihren Browser ein:

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

    Die Seite Geforderte Berechtigungen wird geöffnet und zeigt eine Zustimmungsanforderung an, ähnlich der folgenden:

    Beschreibung von azure_consent.png folgt
    Beschreibung der Abbildung azure_consent.png
  3. Um die Zustimmung zu erteilen, klicken Sie auf Accept.
  4. Weisen Sie in der Microsoft Azure-Konsole die Rollen zu, die Sie erteilen möchten, um Zugriff auf die angegebenen Azure-Ressourcen zu gewähren.

    Beispiel: Wenn Sie über 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. Weitere Informationen finden Sie unter Create a storage account.
    1. Wählen Sie in der Microsoft Azure-Konsole unter Azure services die Option Storage accounts aus.
    2. Klicken Sie unter Storage accounts auf den Speicheraccount, dem Sie 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 einzuschränken. Geben Sie beispielsweise Storage Blob ein, um die verfügbaren Rollen anzuzeigen, die Storage Blob enthalten.
    6. Wählen Sie je nach Bedarf eine oder mehrere Rollen für den Zugriff aus, den Sie erteilen möchten. Wählen Sie beispielsweise Storage Blob Data Contributor aus.
    7. Klicken Sie auf Weiter.
    8. Klicken Sie in Hinzufügen von Rollenzuweisung unter Mitglieder auf + Mitglieder auswählen.
    9. Geben Sie unter Select Members im Auswahlfeld den in Schritt 1 aufgeführten azure_app_name ein (Spalte param_value der View CLOUD_INTEGRATIONS).
    10. Anwendung auswählen.

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

    11. Klicken Sie auf Wählen.
    12. Klicken Sie auf Review + assign.
  5. Klicken Sie erneut auf Review + Assign.

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

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

Azure-Service Principal mit DBMS_CLOUD verwenden

Wenn Sie DBMS_CLOUD-Aufrufe ausführen, um auf Azure-Ressourcen zuzugreifen, und den Zugangsdatennamen AZURE$PA angeben, erfolgt die Authentifizierung auf der Azure-Seite mit dem Azure-Service-Principal.

Führen Sie, falls noch nicht geschehen, die folgenden erforderlichen Schritte aus:

Um eine DBMS_CLOUD-Prozedur oder -Funktion mit dem Azure-Service-Principal zu verwenden, geben Sie AZURE$PA als Zugangsdatennamen an. Beispiel: So greifen Sie mit den Zugangsdaten des Azure-Service-Hauptelements auf Azure Blob Storage zu:

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 in Daten erstellen und in eine vorhandene Tabelle kopieren dargestellt, beachten Sie, dass Schritt 1 (Zugangsdaten erstellen) nicht erstellt werden muss, weil 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 lautet und für username ein anderer Benutzer als der ADMIN-Benutzer angegeben 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, verbleibt auf der Instanz.

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

Weitere Informationen finden Sie unter Prozedur DISABLE_PRINCIPAL_AUTH.

Hinweise zum Azure-Service Principal

Notizen 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 in den Klon übertragen. Führen Sie die Schritte zum Aktivieren des Azure-Service-Principals auf dem Klon aus, wenn Sie den Azure-Service-Principal auf einer klonierten Instanz aktivieren möchten.