Hinweis:
- Dieses Tutorial erfordert Zugriff auf Oracle Cloud. Informationen zur Registrierung für einen kostenlosen Account finden Sie unter Erste Schritte mit Oracle Cloud Infrastructure Free Tier.
- Es verwendet Beispielwerte für Oracle Cloud Infrastructure-Zugangsdaten, -Mandanten und -Compartments. Ersetzen Sie diese Werte nach Abschluss der Übung durch Werte, die für Ihre Cloud-Umgebung spezifisch sind.
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.
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
-
Richten Sie Transport Layer Security (TLS) für die Datenbank ein.
-
Registrieren Sie den Datenbankserver bei Microsoft Azure.
-
Registrieren Sie den Datenbankclient bei Microsoft Azure.
-
Konfigurieren Sie die Database for Microsoft Azure-Integration.
-
Konfigurieren Sie den Client mit einem Helper-Skript.
-
Testen Sie die Verbindung mit SQL*Plus.
Voraussetzungen
-
Ein Microsoft Azure-Konto mit Administratorrechten.
-
Oracle Database 23ai im Oracle Base Database-Service.
-
Netzwerkeinstellungen:
-
Der Oracle Database-Server muss den öffentlichen Schlüssel der Microsoft Entra-ID anfordern können, um die Authentizität und Gültigkeit der ausgegebenen Token zu validieren und zu bestätigen, dass sie von einer vertrauenswürdigen Autorität ausgegeben wurden.
-
Je nach Setup der Netzwerkkonnektivität müssen entsprechende Routing- und Sicherheitsregeln konfiguriert werden. Mit einem NAT-Gateway können Sie ausgehenden Traffic weiterleiten, und Egress-Regeln dürfen nur auf öffentliche Microsoft Azure-IP-Bereiche über Port 443 beschränkt sein.
-
-
TLS-Konfiguration:
- Beim Senden von Microsoft Entra-ID-Token vom Datenbankclient an den Datenbankserver muss eine TLS-Verbindung hergestellt werden. In diesem Tutorial richten wir einseitige TLS ein (TLS mit einem selbstsignierten Root-Zertifikat konfigurieren), wobei nur der Server dem Client ein Zertifikat zur Authentifizierung bereitstellt. Der Client benötigt kein separates Clientzertifikat, um sich beim Server zu authentifizieren.
-
Richten Sie eine Oracle-Clientsoftware 23ai ein, die unter Oracle Linux ausgeführt wird.
-
Installieren Sie Python 3.6 oder höher mit dem MSAL-Modul. Auch wenn Python 3.6 funktioniert, ist die empfohlene Version
3.7+
. Verwenden Siepip
, um das erforderliche Modul zu installieren.
Aufgabe 1: TLS für Oracle Database 23ai einrichten
Aufgabe 1.1: Betriebssystem (BS) auf TLS-Konfiguration vorbereiten
-
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/
-
Rufen Sie den Hostnamen als Benutzer
oracle
ab.[root@db23aigrid etc]# su - oracle [oracle@db23aigrid admin]$ hostname -f
Beispielausgabe:
db23aigrid.sub10121249210.dbsecvcn.oraclevcn.com
-
Melden Sie sich bei der Datenbank an.
[oracle@db23aigrid admin]$ sqlplus "/as sysdba"
-
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
-
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
-
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
-
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
-
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
-
Wenden Sie die Änderungen an.
[oracle@db23aigrid ~]$ . ~/.bashrc
Aufgabe 1.2: TLS-Wallet und -Zertifikat konfigurieren
-
Erstellen und konfigurieren Sie das Root Wallet.
-
Erstellen Sie das Root Wallet.
[oracle@db23aigrid ~]$ orapki wallet create -wallet ${ROOT_TLS_DIR} -pwd ${DBUSR_PWD} -auto_login
-
Zeigen Sie den Inhalt des Wallet an. Dieser muss leer sein.
[oracle@db23aigrid ~]$ orapki wallet display -wallet ${ROOT_TLS_DIR}
-
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
-
Das Verzeichnis sollte jetzt die Dateien
cwallet.sso
undewallet.p12
enthalten.ls -l ${ROOT_TLS_DIR}
-
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}
-
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}
-
Zeigen Sie den Inhalt der Datei
rootCA.crt
an.cat ${ROOT_TLS_DIR}/rootCA.crt
-
-
Erstellen und konfigurieren Sie das Server-(Datenbank-)Wallet.
-
Erstellen Sie das Datenbank-Wallet.
[oracle@db23aigrid ~]$ orapki wallet create -wallet ${DB_TLS_DIR} -pwd ${DBUSR_PWD} -auto_login
-
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}
-
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
-
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}
-
Zeigen Sie den Inhalt des Wallets an. Unter Angeforderte Zertifikate wird ein Eintrag angezeigt.
orapki wallet display -wallet ${DB_TLS_DIR}
-
Zeigen Sie den Inhalt der CSR-(Certificate Signing Request-)Datei an.
cat ${DB_TLS_DIR}/db23gridpdb.csr
-
-
Signieren und importieren Sie das Serverzertifikat.
-
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}
-
Zeigen Sie das Benutzerzertifikat des signierten Servers an.
cat ${DB_TLS_DIR}/db23gridpdb-signed.crt
-
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}
-
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}
-
-
Wallet-Dateien bereitstellen.
-
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}
-
Zertifikat exportieren.
[oracle@db23aigrid ~]$ orapki wallet export -wallet ${ROOT_TLS_DIR} -dn $TLS_DN -cert ${ROOT_TLS_DIR}/rootCA.crt -pwd ${DBUSR_PWD}
-
-
Vertrauen Sie der Root-CA systemweit als Benutzer
root
.-
Führen Sie den Befehl
[root@db23ailvm etc]# cp -v /home/oracle/wallet_tls/certificates/rootCA/rootCA.crt /etc/pki/catrust/source/anchors/
aus. -
Führen Sie den Befehl
[root@db23ailvm etc]# update-ca-trust extract
aus. -
Legen Sie die entsprechenden Dateiberechtigungen fest.
cd /etc/ORACLE/WALLETS/ chmod -R 755 oracle/
-
Aufgabe 1.3: Oracle für TLS-Kommunikation konfigurieren
-
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
-
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
-
Wenn Sie Oracle Grid Infrastructure verwenden, führen Sie die folgenden Schritte aus:
-
Führen Sie die folgenden Befehle aus.
sudo su - grid srvctl stop listener srvctl modify listener -p "TCP:1521/TCPS:1522" srvctl config listener | grep "End points"
-
Bearbeiten Sie die Datei
listener.ora
.$ vi listener.ora LISTENER= (DESCRIPTION= (ADDRESS_LIST= (ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER)) (ADDRESS=(PROTOCOL=TCP)(HOST=db23aigrid.sub10121249210.dbsecvcn.oraclevcn.com)(PORT=1521)) (ADDRESS=(PROTOCOL=TCPS)(HOST=db23aigrid.sub10121249210.dbsecvcn.oraclevcn.com)(PORT=1522)) ) ) SSL_CLIENT_AUTHENTICATION = FALSE WALLET_LOCATION=(SOURCE=(METHOD=file) (METHOD_DATA=(DIRECTORY=/etc/ORACLE/WALLETS/oracle))) TRACE_LEVEL_LISTENER = support
-
Starten Sie den Listener neu.
``` $ srvctl start listener ```
Oder
-
-
Wenn Sie Oracle Linux Volume Manager verwenden, führen Sie die folgenden Schritte aus:
-
Führen Sie den folgenden Befehl aus.
cd $ORACLE_HOME/network/admin lsnrctl stop
-
Bearbeiten Sie
listener.ora
.$ vi listener.ora LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST =db23ailvm.sub10121249210.dbsecvcn.oraclevcn.com)(PORT = 1521)) (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) (ADDRESS = (PROTOCOL = TCPS)(HOST = db23ailvm.sub10121249210.dbsecvcn.oraclevcn.com)(PORT = 1522)) (SECURITY=(WALLET_LOCATION=/home/oracle/wallet_tls/certificates/rootCA)) ) ) SSL_CLIENT_AUTHENTICATION = FALSE ADR_BASE_LISTENER = /u01/app/oracle/product/23.0.0
-
Starten Sie den Listener neu.
lsnrctl start
-
Aufgabe 1.5: TLS-Konnektivität validieren
-
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
-
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.
OCI Compute-Instanz mit Oracle Linux 8.
Oracle Database-Client 23ai für Linux. Ausführliche Informationen finden Sie unter Oracle 23ai-Clientinstallation.
Kopieren Sie die Zertifikatsdateien vom Datenbankserver.
Führen Sie die Schritte zur Konfiguration des Clienthosts aus:
-
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/
-
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
-
Ü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
-
Zertifikatsdateien extrahieren
[oracle@linuxclient23:~/wallet_db23aigrid_tls]$ tar -xvf rootCA.tar
-
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)))
-
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
-
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
-
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
-
Melden Sie sich beim Microsoft Azure-Portal als Administrator an, der über Microsoft Entra ID-Berechtigungen zum Registrieren von Anwendungen verfügt.
-
Wählen Sie auf der Seite Admin-Center für Azure Active-Verzeichnis die Option Microsoft Entra-ID aus.
-
Klicken Sie auf App-Registrierungen und Neue Registrierung.
-
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.
-
-
Klicken Sie auf Registrieren.
-
Klicken Sie unter Registrierte App auf API bereitstellen.
-
Klicken Sie neben Anwendungs-ID-URI und Speichern auf Hinzufügen. Übernehmen Sie die anderen Standardwerte.
-
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.
-
-
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.
-
Fügen Sie unter Anwendungsrollen die folgenden Anwendungsrollen hinzu.
-
Kopieren Sie unter Überblick Anwendungs-ID-URI, Verzeichnis-(Mandanten-)ID und Anwendungs-(Client-)ID.
-
Navigieren Sie zu Home, Unternehmensanwendungen, BaseDB-Server, und klicken Sie auf Benutzer/Gruppe hinzufügen, um Benutzer zuzuweisen.
-
Wählen Sie unter Benutzer Ihren Benutzer aus. Beim Generieren des Zugriffstokens wird dieser zugewiesene Benutzer für Single Sign-On verwendet.
-
Wählen Sie unter Rolle auswählen die Option pdb.users aus, klicken Sie auf Auswählen und Zuweisen.
-
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
-
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.
-
-
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.
-
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.
-
Prüfen Sie den aktuellen Identitätsprovider in der PDB-Datenbank.
SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME='identity_provider_type';
-
Legen Sie Microsoft Azure als Identitätsprovider fest.
ALTER SYSTEM SET IDENTITY_PROVIDER_TYPE=AZURE_AD SCOPE=BOTH;
-
Aktualisierten Identitätsprovider validieren.
SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME='identity_provider_type';
-
Legen Sie die Identitätsproviderkonfiguration fest. Ersetzen Sie
application_id_uri
,tenant_id
undapp_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;
-
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';
-
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.
-
Speichern Sie das Python-Utility hier: Get-Token.py.
-
Ersetzen Sie im folgenden Python-Code den Wert von
scope
durch den in Aufgabe 2.1.8 kopierten Wert. Aktualisieren Sie die Werte vonclient_id
undtenant_id
ebenfalls mit Werten aus Aufgabe 2.2.3. -
Führen Sie den Python-Code mit dem folgenden Befehl aus.
python ./get-token.py
-
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.
-
(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
-
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)))
-
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.
-
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
-
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>
-
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
-
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.
Verwandte Links
-
Azure Active Directory-Authentifizierung mit Base Database Service verwenden
-
Microsoft Azure-Benutzer für Oracle-Datenbanken authentifizieren und autorisieren
Danksagungen
- Autoren – Anuj Tripathi (Principal Cloud Architect, NA Solutions Engineering), Alex Kovuru (Principal Cloud Architect, NA Solutions Engineering)
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.
Authenticate Oracle Database 23ai with Microsoft Entra ID
G33287-02
Copyright ©2025, Oracle and/or its affiliates.