Hinweis:

Oracle Database 23ai mit Microsoft Entra ID authentifizieren

Einführung

Oracle Database kann mit der Microsoft Entra ID (früher Microsoft Azure Active Directory) integriert werden, um einen sicheren, kennwortlosen Zugriff auf die Datenbank zu ermöglichen. Mit diesem Setup können Benutzer und Services mit ihren Microsoft Entra ID-Daten über Single Sign-On (SSO) eine Verbindung zur Datenbank herstellen.

Die Authentifizierung wird über ein OAuth2-Zugriffstoken verarbeitet, das von der Microsoft Entra-ID ausgegeben wird. Dieses Token, das die Identität und Zugriffsdetails des Benutzers enthält, wird an Oracle Database übergeben. Der Datenbankclient validiert das Format und den Ablauf des Tokens, bevor er den Zugriff zulässt. So wird ein sicherer und optimierter Verbindungsprozess sichergestellt.

Warum brauchen wir das?

Da Unternehmen zunehmend die Sicherheit priorisieren, wird die Verwaltung des Zugriffs auf sensible Daten von entscheidender Bedeutung. Oracle Database ermöglicht in Zusammenarbeit mit Microsoft Entra ID eine sichere Authentifizierung ohne Passwörter und nutzt moderne Identitätsmanagementsysteme für eine nahtlose, skalierbare und robuste Zugriffskontrolle. Diese Integration unterstützt eine breite Palette von Oracle Deployments, einschließlich Oracle Autonomous Database, Oracle Exadata und Oracle Base Database Service, um einen konsistenten und sicheren Zugriff über verschiedene Umgebungen hinweg sicherzustellen.

Datenbankclients und -tools

Anwendungen und Tools, die Microsoft Entra ID-Token unterstützen, können Benutzer direkt über die Microsoft Entra ID authentifizieren und das Datenbankzugriffstoken über die Client-API an die Oracle Database-Instanz übergeben. Vorhandene Datenbanktools wie SQL*Plus können so konfiguriert werden, dass ein in einer Datei gespeichertes Microsoft Entra-ID-Token verwendet wird. Das Token kann mit Hilfe von Helper-Tools wie Microsoft PowerShell, Azure-CLI oder Bibliotheken wie der Microsoft Authentication Library (MSAL) abgerufen und an einem angegebenen Dateispeicherort gespeichert werden. Später referenziert SQL*Plus dieses Token beim Herstellen der Verbindung.

Benutzerauthentifizierungsfluss mit sqlplus erfassen

Hinweis: In diesem Tutorial wird ein Python-Skript verwendet, das MSAL zum Abrufen von Sicherheitstoken verwendet. Weitere Informationen finden Sie unter Überblick über die Microsoft-Authentifizierungsbibliothek (MSAL).

Dieses Tutorial führt Sie durch die Konfiguration der Microsoft Entra ID-Authentifizierung für Oracle Base Database 23ai, einschließlich TLS-Setup. Weitere Informationen finden Sie in der Dokumentation zu Ihrem Datenbanktyp: On-Premise, Exadata, DBaaS oder Autonomous. Beachten Sie, dass TLS für Autonomous Database vorkonfiguriert ist. Sie können diesen Schritt daher überspringen.

Zielgruppe

Oracle Database-Administratoren und Oracle Cloud Infrastructure Identity and Access Management-(OCI IAM-)Administratoren.

Ziele

Voraussetzungen

Aufgabe 1: TLS für Oracle Database 23ai einrichten

Aufgabe 1.1: Betriebssystem (BS) auf TLS-Konfiguration vorbereiten

  1. Melden Sie sich beim Datenbankserver an, und wechseln Sie zum Benutzer root, um das Verzeichnis einzurichten.

    [opc@db23aigrid ~]$ sudo su -
    
    [root@db23aigrid ~]# mkdir -p /etc/ORACLE/WALLETS/oracle
    
    [root@db23aigrid ~]# cd /etc/
    
    [root@db23aigrid etc]# chown -R oracle:oinstall ORACLE/
    
  2. Rufen Sie den Hostnamen als Benutzer oracle ab.

    [root@db23aigrid etc]# su - oracle
    
    [oracle@db23aigrid admin]$ hostname -f
    

    Beispielausgabe:

    db23aigrid.sub10121249210.dbsecvcn.oraclevcn.com
    
  3. Melden Sie sich bei der Datenbank an.

    [oracle@db23aigrid admin]$ sqlplus "/as sysdba"
    
  4. Prüfen Sie das Wallet-Root-Verzeichnis.

    SQL> show parameter wallet_root;
    

    Beispielausgabe:

    NAME           TYPE      VALUE
    ----------     ------    ----------------------------------------------------
    wallet_root    string    /opt/oracle/dcs/commonstore/wallets/DB23GRID_w54_iad
    
  5. Prüfen Sie den Namen und die GUID der integrierbaren Datenbank (PDB).

    SQL> show pdbs;
    

    Beispielausgabe:

    CON_ID   CON_NAME      OPEN MODE      RESTRICTED
    -----    --------      ---------      ----------
    2        PDB$SEED      READ ONLY      NO
    
    3        DB23GRIDPDB   READ WRITE     NO
    
    SQL> select guid from v$containers where name = 'DB23GRIDPDB';
    

    Beispielausgabe:

    GUID
    -- -----------------------------
    32435DD0A1EC55xxx0639400000A7225
    
  6. Erstellen Sie lokale Verzeichnisse für Wallet und Zertifikate.

    [oracle@db23aigrid ~]$ mkdir -p /home/oracle/wallet_tls/certificates/rootCA
    
    [oracle@db23aigrid ~]$ mkdir -p /home/oracle/wallet_tls/certificates/db_wallet
    
  7. Erstellen Sie das TLS-Verzeichnis der Datenbank unter dem Wallet-Root-Pfad mit der PDB-GUID.

    [oracle@db23aigrid ~]$ mkdir -p /opt/oracle/dcs/commonstore/wallets/DB23GRID_w54_iad/32435DDxxxxxx7E0639400000A7225/tls
    
  8. Aktualisieren Sie .bashrc mit TLS-bezogenen Umgebungsvariablen.

    [oracle@db23aigrid ~]$ vi ~/.bashrc
    

    Fügen Sie Folgendes hinzu, und passen Sie die Werte entsprechend Ihrer Umgebung an.

    export DBUSR_SYSTEM=system
    export DBUSR_PWD=QAZxswedc123##     # Wallet and Database Administrator (sys) password
    
    export ORA_TLS_DIR=/etc/ORACLE/WALLETS/oracle
    export TLS_DIR=/opt/oracle/dcs/commonstore/wallets/DB23GRID_w54_iad/32435DD0A1EC55E7E0639400000A7225/tls
    export ROOT_TLS_DIR=/home/oracle/wallet_tls/certificates/rootCA
    export DB_TLS_DIR=/home/oracle/wallet_tls/certificates/db_wallet
    
    export TLS_DN=CN=db23aigrid.sub10121249210.dbsecvcn.oraclevcn.com,O=oracle,L=Austin,ST=Texas,C=US
    export TLS_SAN=DNS:db23aigrid,DNS:db23aigrid.sub10121249210.dbsecvcn.oraclevcn.com,
    IPV4Address:143.47.117.99
    
  9. Wenden Sie die Änderungen an.

    [oracle@db23aigrid ~]$ . ~/.bashrc
    

Aufgabe 1.2: TLS-Wallet und -Zertifikat konfigurieren

  1. Erstellen und konfigurieren Sie das Root Wallet.

    1. Erstellen Sie das Root Wallet.

      [oracle@db23aigrid ~]$ orapki wallet create -wallet ${ROOT_TLS_DIR} -pwd ${DBUSR_PWD} -auto_login
      
    2. Zeigen Sie den Inhalt des Wallet an. Dieser muss leer sein.

      [oracle@db23aigrid ~]$ orapki wallet display -wallet ${ROOT_TLS_DIR}
      
    3. Erstellen Sie das selbstsignierte Zertifikat für das Root-CA-Wallet.

      [oracle@db23aigrid ~]$ orapki wallet add -wallet ${ROOT_TLS_DIR} -dn $TLS_DN -keysize 2048 -sign_alg sha256 -self_signed -validity 3652 -pwd ${DBUSR_PWD} -addext_san $TLS_SAN
      
    4. Das Verzeichnis sollte jetzt die Dateien cwallet.sso und ewallet.p12 enthalten.

      ls -l ${ROOT_TLS_DIR}
      
    5. Zeigen Sie den Inhalt des Wallets an. Er muss über einen Benutzer und ein vertrauenswürdiges Zertifikat verfügen.

      orapki wallet display -wallet ${ROOT_TLS_DIR}
      
    6. Exportieren Sie das vertrauenswürdige Root-CA-Zertifikat zur Erstellung des Datenbank-Wallets.

      [oracle@db23aigrid ~]$ orapki wallet export -wallet ${ROOT_TLS_DIR} -dn $TLS_DN -cert ${ROOT_TLS_DIR}/rootCA.crt -pwd ${DBUSR_PWD}
      
    7. Zeigen Sie den Inhalt der Datei rootCA.crt an.

      cat ${ROOT_TLS_DIR}/rootCA.crt
      
  2. Erstellen und konfigurieren Sie das Server-(Datenbank-)Wallet.

    1. Erstellen Sie das Datenbank-Wallet.

      [oracle@db23aigrid ~]$ orapki wallet create -wallet ${DB_TLS_DIR} -pwd ${DBUSR_PWD} -auto_login
      
    2. Fügen Sie das vertrauenswürdige Root-Zertifikat zum Wallet hinzu (erhalten Sie dies von Ihrem Zertifikatadministrator).

      [oracle@db23aigrid ~]$ orapki wallet add -wallet ${DB_TLS_DIR} -trusted_cert -cert ${ROOT_TLS_DIR}/rootCA.crt -pwd ${DBUSR_PWD}
      
    3. Erstellen Sie einen Private Key und eine Zertifikatanforderung im Wallet.

      [oracle@db23aigrid ~]$ orapki wallet add -wallet ${DB_TLS_DIR} -keysize 2048 -dn $TLS_DN -pwd ${DBUSR_PWD}-addext_san $TLS_SAN
      
    4. Exportieren Sie die Zertifikatanforderung, um sie signiert zu erhalten.

      [oracle@db23aigrid ~]$ orapki wallet export -wallet ${DB_TLS_DIR} -dn $TLS_DN -request ${DB_TLS_DIR}/db23gridpdb.csr -pwd ${DBUSR_PWD}
      
    5. Zeigen Sie den Inhalt des Wallets an. Unter Angeforderte Zertifikate wird ein Eintrag angezeigt.

      orapki wallet display -wallet ${DB_TLS_DIR}
      
    6. Zeigen Sie den Inhalt der CSR-(Certificate Signing Request-)Datei an.

      cat ${DB_TLS_DIR}/db23gridpdb.csr
      
  3. Signieren und importieren Sie das Serverzertifikat.

    1. Signieren Sie den CSR mit dem selbstsignierten Root Wallet.

      [oracle@db23aigrid ~]$ orapki cert create -wallet ${ROOT_TLS_DIR} -request ${DB_TLS_DIR}/db23gridpdb.csr -cert ${DB_TLS_DIR}/db23gridpdb-signed.crt -validity 3652 -sign_alg sha256 -pwd ${DBUSR_PWD}
      
    2. Zeigen Sie das Benutzerzertifikat des signierten Servers an.

      cat ${DB_TLS_DIR}/db23gridpdb-signed.crt
      
    3. Importieren Sie das Benutzerzertifikat des signierten Datenbankservers in das Datenbank-Wallet.

      [oracle@db23aigrid ~]$ orapki wallet add -wallet ${DB_TLS_DIR} -user_cert -cert ${DB_TLS_DIR}/db23gridpdb-signed.crt -pwd ${DBUSR_PWD}
      
    4. Zeigen Sie den Inhalt des Wallets an, und stellen Sie sicher, dass das Benutzerzertifikat des Datenbankservers jetzt unter Benutzerzertifikate angezeigt wird. Das Wallet, das Sie für den Datenbankserver und Listener verwenden, kann jetzt zur Verwendung bereitgestellt werden.

      orapki wallet display -wallet ${DB_TLS_DIR}
      
  4. Wallet-Dateien bereitstellen.

    1. Kopieren Sie die Wallet-Dateien des Datenbankservers.

      [oracle@db23aigrid ~]$ cp -v ${DB_TLS_DIR}/ewallet.p12 ${TLS_DIR}
      
      [oracle@db23aigrid ~]$ cp -v ${DB_TLS_DIR}/cwallet.sso ${TLS_DIR}
      
      [oracle@db23aigrid ~]$ cp -v ${DB_TLS_DIR}/ewallet.p12 ${ORA_TLS_DIR}
      
      [oracle@db23aigrid ~]$ cp -v ${DB_TLS_DIR}/cwallet.sso ${ORA_TLS_DIR}
      
    2. Zertifikat exportieren.

      [oracle@db23aigrid ~]$ orapki wallet export -wallet ${ROOT_TLS_DIR} -dn $TLS_DN -cert ${ROOT_TLS_DIR}/rootCA.crt -pwd ${DBUSR_PWD}
      
  5. Vertrauen Sie der Root-CA systemweit als Benutzer root.

    1. Führen Sie den Befehl [root@db23ailvm etc]# cp -v /home/oracle/wallet_tls/certificates/rootCA/rootCA.crt /etc/pki/catrust/source/anchors/ aus.

    2. Führen Sie den Befehl [root@db23ailvm etc]# update-ca-trust extract aus.

    3. Legen Sie die entsprechenden Dateiberechtigungen fest.

      cd /etc/ORACLE/WALLETS/
      
      chmod -R 755 oracle/
      

Aufgabe 1.3: Oracle für TLS-Kommunikation konfigurieren

  1. Bearbeiten Sie sqlnet.ora für unidirektionale TLS, und hängen Sie die folgenden Zeilen an.

    [oracle@db23aigrid ~]$ cd $ORACLE_HOME/network/admin
    
    [oracle@db23aigrid ~]$ vi sqlnet.ora
    
    SSL_CLIENT_AUTHENTICATION = FALSE
    
  2. Bearbeiten Sie tnsnames.ora, und stellen Sie sicher, dass Einträge für TCP und TCPS für die PDB-Datenbank hinzugefügt werden.

    Passen Sie die Werte entsprechend Ihrer Umgebung an:

    [oracle@db23aigrid ~]$ cd $ORACLE_HOME/network/admin
    
    [oracle@db23aigrid ~]$ vi tnsnames.ora
    
    DB23GRIDPDB=(DESCRIPTION=(CONNECT_TIMEOUT=5)(TRANSPORT_CONNECT_TIMEOUT=3)(RETRY_COUNT=3)
    (ADDRESS_LIST=(LOAD_BALANCE=on)(ADDRESS=(PROTOCOL=TCP)(HOST=db23aigrid)(PORT=1521)))
    (CONNECT_DATA=(SERVICE_NAME=DB23GRIDPDB.sub10121249210.dbsecvcn.oraclevcn.com)))
    
    DB23GRIDPDB_TLS=(DESCRIPTION=(CONNECT_TIMEOUT=5)(TRANSPORT_CONNECT_TIMEOUT=3)(RETRY_COUNT=3)
    (ADDRESS_LIST=(LOAD_BALANCE=on)(ADDRESS=(PROTOCOL=TCPS)(HOST=db23aigrid)(PORT=1522)))
    (CONNECT_DATA=(SERVICE_NAME=DB23GRIDPDB.sub10121249210.dbsecvcn.oraclevcn.com)))
    

Aufgabe 1.4: Listener mit TLS konfigurieren

Aufgabe 1.5: TLS-Konnektivität validieren

  1. Testen Sie das TCP (nicht TLS).

    $ sqlplus system/QAZxswedc123##@DB23GRIDPDB
    
    SQL> SELECT sys_context('USERENV', 'NETWORK_PROTOCOL') as network_protocol FROM dual;
    
    NETWORK_PROTOCOL
    
    Tcp
    
  2. TCPS testen (TLS aktiviert)

    $ sqlplus system/QAZxswedc123##@DB23GRIDPDB_TLS
    
    SQL> SELECT sys_context('USERENV', 'NETWORK_PROTOCOL') as network_protocol FROM dual;
    
    NETWORK_PROTOCOL
    
    Tcps
    

Aufgabe 1.6: Clienthost für TLS konfigurieren

Hinweis: Voraussetzungen für diese Aufgabe.

Führen Sie die Schritte zur Konfiguration des Clienthosts aus:

  1. Kopieren Sie die Zertifikats- und Wallet-Dateien vom Datenbankserver. Sie können jedes bevorzugte Dateitransfertool verwenden, um diese Dateien vom Datenbankserver auf den Client zu verschieben.

    cd /home/oracle/wallet_tls/certificates/
    
    tar -cvf rootCA.tar rootCA
    
    chmod 755 rootCA.tar
    
    cp rootCA.tar /tmp/
    
  2. Richten Sie Clientverzeichnisse ein.

    [opc@bastion-server8-8 ~]$ sudo su - oracle
    
    [oracle@bastion-server8-8 ~]$ mkdir wallet_db23aigrid_tls
    
    [oracle@bastion-server8-8 ~]$ mkdir -p network/admin
    
    [oracle@bastion-server8-8 ~]$ export TNS_ADMIN=/home/oracle/network/admin
    
  3. Übertragen Sie die Zertifikats- und Wallet-Dateien vom Datenbankserver auf die Clientinstanz.

    [oracle@bastion-server8-8 ~]$ cp rootCA.tar wallet_db23aigrid_tls /
    
    [oracle@bastion-server8-8 ~]$ cd wallet_db23aigrid_tls /
    
    [oracle@linuxclient23:~/wallet_db23aigrid_tls]$ cp /tmp/rootCA.tar
    
  4. Zertifikatsdateien extrahieren

    [oracle@linuxclient23:~/wallet_db23aigrid_tls]$ tar -xvf rootCA.tar
    
  5. Konfigurieren Sie tnsnames.ora.

    [oracle@bastion-server8-8 ~]$ cd ~/network/admin
    
    [oracle@linuxclient23:~/instantclient_23_7/network/admin]$ vi tnsnames.ora
    
       DB23GRIDPDB=
       (DESCRIPTION=(CONNECT_TIMEOUT=5)(TRANSPORT_CONNECT_TIMEOUT=3)(RETRY_COUNT=3)
       (ADDRESS_LIST=(LOAD_BALANCE=on)(ADDRESS=(PROTOCOL=TCP)(HOST=143.47.117.99)(PORT=1521)))
       (CONNECT_DATA=(SERVICE_NAME=DB23GRIDPDB.sub10121249210.dbsecvcn.oraclevcn.com)))
    
       DB23GRIDPDB_TLS=(DESCRIPTION=(CONNECT_TIMEOUT=5)(TRANSPORT_CONNECT_TIMEOUT=3)(RETRY_COUNT=3)
       (ADDRESS_LIST=(LOAD_BALANCE=on)(ADDRESS=(PROTOCOL=TCPS)(HOST=db23aigrid.sub10121249210.dbsecvcn.oraclevcn.com)(PORT=
       1522)))
       (CONNECT_DATA=(SERVICE_NAME=DB23GRIDPDB.sub10121249210.dbsecvcn.oraclevcn.com))
       (SECURITY = (SSL_SERVER_DN_MATCH=TRUE)))
    
  6. Konfigurieren Sie sqlnet.ora.

    [oracle@linuxclient23:~/instantclient_23_7/network/admin]$ vi sqlnet.ora
    
       SSL_CLIENT_AUTHENTICATION = FALSE
       WALLET_LOCATION =
       (SOURCE =(METHOD = FILE)
       (METHOD_DATA =(DIRECTORY =/home/oracle/wallet_db23aigrid_tls/rootCA)))
    

Aufgabe 1.7: Verbindung von Clientinstanz testen

  1. Testen Sie das TCP (nicht TLS).

    $ sqlplus system/QAZxswedc123##@DB23GRIDPDB
    
    SQL> SELECT sys_context('USERENV', 'NETWORK_PROTOCOL') as network_protocol FROM dual;
    
      NETWORK_PROTOCOL
    
      Tcp
    
  2. Testen Sie TCPS (TLS aktiviert).

    $ sqlplus system/QAZxswedc123##@DB23GRIDPDB_TLS
    
    SQL> SELECT sys_context('USERENV', 'NETWORK_PROTOCOL') as network_protocol FROM dual;
    
      NETWORK_PROTOCOL
    
      Tcps
    

Aufgabe 2: Microsoft Azure und Datenbankintegration einrichten

Aufgabe 2.1: Datenbankserver in Microsoft Azure registrieren

  1. Melden Sie sich beim Microsoft Azure-Portal als Administrator an, der über Microsoft Entra ID-Berechtigungen zum Registrieren von Anwendungen verfügt.

  2. Wählen Sie auf der Seite Admin-Center für Azure Active-Verzeichnis die Option Microsoft Entra-ID aus.

  3. Klicken Sie auf App-Registrierungen und Neue Registrierung.

  4. Geben Sie folgende Informationen ein.

    • Name: Geben Sie BaseDB-Server ein.

    • Wer kann diese Anwendung verwenden oder auf diese API zugreifen?: Wählen Sie Nur Accounts in diesem Organisationsverzeichnis aus.

  5. Klicken Sie auf Registrieren.

  6. Klicken Sie unter Registrierte App auf API bereitstellen.

  7. Klicken Sie neben Anwendungs-ID-URI und Speichern auf Hinzufügen. Übernehmen Sie die anderen Standardwerte.

  8. Klicken Sie auf Geltungsbereich hinzufügen, und geben Sie die folgenden Informationen ein.

    • Geltungsbereichsname: Geben Sie session:scope:connect ein.

    • Wer kann zustimmen?: Geben Sie Admins und Benutzer ein.

    • Anzeigename der Admin-Zustimmung: Wählen Sie Verbindung zur Datenbank herstellen aus.

    • Admin-Zustimmungsbeschreibung: Wählen Sie Verbindung zur Datenbank herstellen aus.

    • Anzeigename der Benutzerzustimmung: Wählen Sie Verbindung zur Datenbank herstellen aus.

    • Beschreibung der Benutzerzustimmung: Wählen Sie Verbindung zur Datenbank herstellen aus.

    • Status: Wählen Sie Aktiviert aus.

    Klicken Sie auf Geltungsbereich hinzufügen. Stellen Sie nach dem Hinzufügen sicher, dass Sie den Wert von Geltungsbereich kopieren.

    API verfügbar machen

  9. Fügen Sie unter Tokenkonfiguration Claim als upn mit dem Tokentyp Access hinzu.

    Hinweis: Dies ist bei der Aktivierung des Microsoft Entra ID-Tokens v2 erforderlich. Weitere Informationen zu v2-Token finden Sie unter Zugriffstoken der Microsoft Entra-ID v2 aktivieren.

    Möglicherweise müssen Sie auch das Manifest der Anwendung in der Microsoft Entra ID ändern, um ein v2-Token abzurufen.

    Anspruch hinzufügen

  10. Fügen Sie unter Anwendungsrollen die folgenden Anwendungsrollen hinzu.

    Anwendungsrollen hinzufügen

  11. Kopieren Sie unter Überblick Anwendungs-ID-URI, Verzeichnis-(Mandanten-)ID und Anwendungs-(Client-)ID.

  12. Navigieren Sie zu Home, Unternehmensanwendungen, BaseDB-Server, und klicken Sie auf Benutzer/Gruppe hinzufügen, um Benutzer zuzuweisen.

  13. Wählen Sie unter Benutzer Ihren Benutzer aus. Beim Generieren des Zugriffstokens wird dieser zugewiesene Benutzer für Single Sign-On verwendet.

  14. Wählen Sie unter Rolle auswählen die Option pdb.users aus, klicken Sie auf Auswählen und Zuweisen.

  15. Wiederholen Sie die Schritte 13 und 14 für denselben Benutzer, und weisen Sie dba.role zu.

Aufgabe 2.2: Datenbankclient in Microsoft Azure registrieren

  1. Registrieren Sie die Datenbankclient-App mit den folgenden Informationen.

    • Name: Geben Sie BaseDB-Client ein.

    • Unterstützte Accounttypen: Wählen Sie Nur Accounts in diesem Organisationsverzeichnis aus.

    • Umleitungs-URI: Geben Sie Öffentlicher Client/native - <http://localhost> ein.

  2. Klicken Sie unter Verwalten auf API-Berechtigungen, und Berechtigung hinzufügen. Wählen Sie APIs, die meine Organisation verwendet, BaseDB-Server, Delegierte Berechtigungen, Berechtigung als session:scope:connect aus, und klicken Sie auf Berechtigungen hinzufügen.

  3. Kopieren Sie unter Überblick die Anwendungs-ID-URI und die Verzeichnis-(Mandanten-)ID.

Aufgabe 2.3: Datenbankserver für Microsoft Azure konfigurieren

Führen Sie die folgenden Abfragen aus, um Microsoft Azure AD als Identitätsprovider zu konfigurieren und globale Datenbankbenutzer und -rollen zu erstellen.

  1. Prüfen Sie den aktuellen Identitätsprovider in der PDB-Datenbank.

    SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME='identity_provider_type';
    
  2. Legen Sie Microsoft Azure als Identitätsprovider fest.

    ALTER SYSTEM SET IDENTITY_PROVIDER_TYPE=AZURE_AD SCOPE=BOTH;
    
  3. Aktualisierten Identitätsprovider validieren.

    SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME='identity_provider_type';
    
  4. Legen Sie die Identitätsproviderkonfiguration fest. Ersetzen Sie application_id_uri, tenant_id und app_id durch Werte, die in Aufgabe 2.1.11 kopiert wurden.

    ALTER SYSTEM SET IDENTITY_PROVIDER_CONFIG =
    '{
       "application_id_uri": "api://b7ae5060-667c-47b7-83f8-71283df2a2f6" ,
       "tenant_id": "ef2b4271-9238-4dcd-8c56-d3e915e37c6f",
       "app_id": "b7ae5060-667c-47b7-83f8-71283df2a2f6"
    }' SCOPE=BOTH;
    
  5. Globale Benutzer und Rollen in der Datenbank erstellen

    CREATE USER allusers IDENTIFIED GLOBALLY AS 'AZURE_ROLE=pdb.users';
    CREATE USER hrapp IDENTIFIED GLOBALLY AS 'AZURE_ROLE=hr.app';
    CREATE ROLE dba_azure IDENTIFIED GLOBALLY AS 'AZURE_ROLE=dba.role';
    
  6. Erteilen Sie Benutzern und Rollen Berechtigungen.

    GRANT CREATE SESSION TO allusers;
    GRANT CREATE SESSION TO hrapp;
    GRANT pdb_dba TO dba_azure;
    

Aufgabe 2.4: Helper-Dienstprogramm zum Generieren des Microsoft Azure-Zugriffstokens konfigurieren

In dieser Aufgabe wird ein Python-Utility verwendet, um ein Zugriffstoken zu generieren, das in einer Datei gespeichert und später von SQL*Plus referenziert wird. Dieses Serviceprogramm erfordert die Ausführung des MSAL-Moduls.

  1. Speichern Sie das Python-Utility hier: Get-Token.py.

  2. Ersetzen Sie im folgenden Python-Code den Wert von scope durch den in Aufgabe 2.1.8 kopierten Wert. Aktualisieren Sie die Werte von client_id und tenant_id ebenfalls mit Werten aus Aufgabe 2.2.3.

  3. Führen Sie den Python-Code mit dem folgenden Befehl aus.

    python ./get-token.py
    
  4. Wenn alles korrekt konfiguriert ist, sollte dies eine Browserumleitung zur Benutzerauthentifizierung zum Microsoft Azure-Portal auslösen. Nach der Authentifizierung wird eine Tokendatei in dem Verzeichnis generiert, in dem der Python-Befehl ausgeführt wurde, der das Zugriffstoken enthält. Zugriffstoken und Aktualisierungstoken werden ebenfalls im Terminalfenster gedruckt.

  5. (Optional), Sie können das generierte Token validieren, indem Sie hier navigieren: jwt.io und die Tokenzeichenfolge in das Feld Kodiert einfügen. Im Feld Decoded werden Informationen zur Tokenzeichenfolge angezeigt.

Aufgabe 2.5: Mit SQL*PLUS anmelden

  1. Testen Sie die Microsoft Azure-Tokenanmeldung mit SQL*PLUS.

    sqlplus /nolog
    
    conn /@(description= (retry_count=20) (retry_delay=3) (address= (protocol=tcps) (port=1522) (host=db23aigrid.sub10121249210.dbsecvcn.oraclevcn.com)) (connect_data=(service_name=DB23GRIDPDB.sub10121249210.dbsecvcn.oraclevcn.com))(security=(SSL_SERVER_DN_MATCH=TRUE)(TOKEN_AUTH=OAUTH)(TOKEN_LOCATION=/home/oracle)))
    
  2. Prüfen Sie den angemeldeten Benutzer.

    Hinweis: Nach der Anmeldung können Sie die folgenden Abfragen ausführen, um die Session-spezifischen Informationen des Benutzers abzurufen.

    • Die Variable CURRENT_USER gibt den aktuellen aktiven Benutzer zurück.
    • ALLUSERS ist der gemeinsame Schemabenutzer, der über Microsoft Entra ID-Anwendungsrollen zugewiesen wurde.
    • AUTHENTICATED_IDENTITY stellt den authentifizierten Benutzer aus der Microsoft Entra-ID dar.
    • ENTERPRISE_IDENTITY gibt die GUID des authentifizierten Benutzers aus der Microsoft Entra-ID zurück.
    • SESSION_ROLES gibt die kombinierte Liste der Rollen zurück, die lokal erteilt und über globale Zuordnungen über Microsoft Entra ID-Anwendungsrollen erteilt wurden.
    1. Führen Sie die folgende Abfrage aus, um den aktuellen Benutzer zu prüfen.

      SELECT SYS_CONTEXT ('USERENV','CURRENT_USER') FROM DUAL;
      

      Ausgabe:

      SYS_CONTEXT('USERENV','CURRENT_USER')
      
      
      ALLUSERS
      
    2. Führen Sie die folgende Abfrage aus, um den authentifizierten Benutzer zu prüfen.

      SELECT SYS_CONTEXT ('USERENV','AUTHENTICATED_IDENTITY') FROM DUAL;
      

      Ausgabe:

      SYS_CONTEXT('USERENV','AUTHENTICATED_IDENTITY')
      
      
      <anujtrip.ai@gmail.com>
      
    3. Führen Sie die folgende Abfrage aus, um die GUID des authentifizierten Benutzers zu prüfen.

      SELECT SYS_CONTEXT ('USERENV','ENTERPRISE_IDENTITY') FROM DUAL;
      

      Ausgabe:

      SYS_CONTEXT('USERENV','ENTERPRISE_IDENTITY')
      
      
      7eb35b90-dcxxx5-bc0b-48789368e9cf
      
    4. Führen Sie die folgende Abfrage aus, um die Anwendungsrollen zu prüfen.

      SELECT * FROM SESSION_ROLES;
      

      Ausgabe:

      ROLE
      
      DBA_AZURE
      
      PDB_DBA
      
      CONNECT
      

Nächste Schritte

Mit der erfolgreich implementierten Microsoft Entra ID-basierten Authentifizierung können Sie Benutzerrollen und Zugriffsrichtlinien über eine zentralisierte Identity Governance ausrichten. Durch die Nutzung globaler Zuordnungen für gemeinsame Schemabenutzer und -rollen können Sie die Zugriffskontrolle optimieren und die administrative Komplexität reduzieren. Darüber hinaus ist es wichtig, Benutzersessions und Zugriffsmuster zu überwachen, um die Sicherheit zu verbessern und die Einhaltung von Unternehmensrichtlinien sicherzustellen. Sie sollten auch erwägen, diese Integration auf andere Datenbanken oder Anwendungen auszudehnen, um ein konsistentes Identitätsmanagement im gesamten Unternehmen zu gewährleisten.

Danksagungen

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.