Nota
- Questa esercitazione richiede l'accesso a Oracle Cloud. Per iscriverti a un account gratuito, consulta Inizia a utilizzare Oracle Cloud Infrastructure Free Tier.
- Utilizza valori di esempio per le credenziali, la tenancy e i compartimenti di Oracle Cloud Infrastructure. Al termine del laboratorio, sostituisci questi valori con quelli specifici del tuo ambiente cloud.
Autentica Oracle Database 23ai con ID Microsoft Entra
Introduzione
Oracle Database può essere integrato con Microsoft Entra ID (in precedenza Microsoft Azure Active Directory) per consentire l'accesso sicuro e senza password al database. Con questa impostazione, gli utenti e i servizi possono connettersi al database utilizzando le credenziali ID di Microsoft Entra tramite Single Sign-On (SSO).
L'autenticazione viene gestita tramite un token di accesso OAuth2 emesso dall'ID Entra Microsoft. Questo token, che include l'identità e i dettagli di accesso dell'utente, viene passato a Oracle Database. Il client del database convalida il formato e la scadenza del token prima di consentire l'accesso, garantendo un processo di connessione sicuro e semplificato.
Perché ne abbiamo bisogno?
Man mano che le organizzazioni danno sempre più priorità alla sicurezza, la gestione dell'accesso ai dati sensibili diventa fondamentale. Oracle Database, in collaborazione con Microsoft Entra ID, consente un'autenticazione sicura senza password, sfruttando i moderni sistemi di gestione delle identità per un controllo degli accessi trasparente, scalabile e affidabile. Questa integrazione supporta una vasta gamma di distribuzioni Oracle, tra cui Oracle Autonomous Database, Oracle Exadata e Oracle Base Database Service, garantendo un accesso coerente e sicuro in diversi ambienti.
Client e strumenti di database
Le applicazioni e gli strumenti che supportano i token Microsoft Entra ID possono autenticare gli utenti direttamente tramite l'ID Entra di Microsoft e passare il token di accesso al database all'istanza di Oracle Database tramite l'API client. Gli strumenti di database esistenti, ad esempio SQL*Plus
, possono essere configurati per utilizzare un token ID Microsoft Entra memorizzato in un file. Il token può essere recuperato utilizzando strumenti di supporto quali Microsoft PowerShell, Azure CLI o librerie come Microsoft Authentication Library (MSAL) e salvato in una posizione file specificata. In seguito, SQL*Plus fa riferimento a questo token durante il tentativo di stabilire la connessione.
Nota: in questa esercitazione viene utilizzato uno script Python che utilizza MSAL per acquisire i token di sicurezza. Per ulteriori informazioni, vedere Panoramica della Microsoft Authentication Library (MSAL).
Questa esercitazione guida l'utente nella configurazione dell'autenticazione ID Microsoft Entra per Oracle Base Database 23ai, inclusa l'impostazione di TLS. Fare riferimento alla documentazione specifica del tipo di database in uso: on premise, Exadata, DBaaS o Autonomous. Tenere presente che TLS è preconfigurato per Autonomous Database, pertanto è possibile saltare questo passo.
Destinatari
Amministratori di Oracle Database e amministratori di Oracle Cloud Infrastructure Identity and Access Management (OCI IAM).
Obiettivi
-
Impostare TLS (Transport Layer Security) per il database.
-
Registrare il database server con Microsoft Azure.
-
Registrare il client del database con Microsoft Azure.
-
Configurare l'integrazione di Database for Microsoft Azure.
-
Configurare il client utilizzando uno script di supporto.
-
Eseguire il test della connessione utilizzando SQL*Plus.
Prerequisiti
-
Un account Microsoft Azure con privilegi amministrativi.
-
Oracle Database 23ai su Oracle Base Database Service.
-
Impostazioni di rete:
-
Il server Oracle Database deve essere in grado di richiedere la chiave pubblica ID Microsoft Entra per convalidare l'autenticità e la validità dei token emessi e per confermare che sono stati emessi da un'autorità attendibile.
-
A seconda dell'impostazione della connettività di rete, è necessario configurare le regole di instradamento e sicurezza appropriate. È possibile utilizzare un gateway NAT per instradare il traffico in uscita e le regole di uscita devono essere limitate solo agli intervalli IP pubblici Microsoft Azure sulla porta 443.
-
-
Configurazione TLS:
- Quando si inviano token ID Microsoft Entra dal client del database al server del database, è necessario stabilire una connessione TLS. In questa esercitazione verrà impostato un TLS unidirezionale (configurazione di TLS con un certificato root autofirmato), in cui solo il server fornisce un certificato al client per autenticarsi. Il client non deve disporre di un certificato client separato per autenticare se stesso sul server.
-
Impostare un software client Oracle 23ai in esecuzione su Oracle Linux.
-
Installare Python 3.6 o versioni successive con il modulo MSAL. Anche se Python 3.6 funzionerà, la versione consigliata è
3.7+
. Utilizzarepip
per installare il modulo richiesto.
Task 1: impostare TLS per Oracle Database 23ai
Task 1.1: preparazione del sistema operativo per la configurazione TLS
-
Eseguire il login al database server e passare all'utente
root
per impostare la directory.[opc@db23aigrid ~]$ sudo su - [root@db23aigrid ~]# mkdir -p /etc/ORACLE/WALLETS/oracle [root@db23aigrid ~]# cd /etc/ [root@db23aigrid etc]# chown -R oracle:oinstall ORACLE/
-
Recupera il nome host come utente
oracle
.[root@db23aigrid etc]# su - oracle [oracle@db23aigrid admin]$ hostname -f
Output di esempio:
db23aigrid.sub10121249210.dbsecvcn.oraclevcn.com
-
connettersi al database;
[oracle@db23aigrid admin]$ sqlplus "/as sysdba"
-
Verificare la directory radice del wallet.
SQL> show parameter wallet_root;
Output di esempio:
NAME TYPE VALUE ---------- ------ ---------------------------------------------------- wallet_root string /opt/oracle/dcs/commonstore/wallets/DB23GRID_w54_iad
-
Controllare il nome e il GUID del pluggable database (PDB).
SQL> show pdbs;
Output di esempio:
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';
Output di esempio:
GUID -- ----------------------------- 32435DD0A1EC55xxx0639400000A7225
-
Creare directory locali per wallet e certificati.
[oracle@db23aigrid ~]$ mkdir -p /home/oracle/wallet_tls/certificates/rootCA [oracle@db23aigrid ~]$ mkdir -p /home/oracle/wallet_tls/certificates/db_wallet
-
Creare la directory TLS del database nel percorso radice del wallet utilizzando il GUID del PDB.
[oracle@db23aigrid ~]$ mkdir -p /opt/oracle/dcs/commonstore/wallets/DB23GRID_w54_iad/32435DDxxxxxx7E0639400000A7225/tls
-
Aggiornare
.bashrc
con le variabili di ambiente correlate a TLS.[oracle@db23aigrid ~]$ vi ~/.bashrc
Aggiungere quanto segue e regolare i valori in base all'ambiente in uso.
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
-
Applicare le modifiche.
[oracle@db23aigrid ~]$ . ~/.bashrc
Task 1.2: Configurare il wallet e il certificato TLS
-
Creare e configurare il wallet radice.
-
Creare il wallet principale.
[oracle@db23aigrid ~]$ orapki wallet create -wallet ${ROOT_TLS_DIR} -pwd ${DBUSR_PWD} -auto_login
-
Visualizzare il contenuto del wallet, deve essere vuoto.
[oracle@db23aigrid ~]$ orapki wallet display -wallet ${ROOT_TLS_DIR}
-
Creare il certificato con firma automatica per il wallet CA radice.
[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
-
A questo punto, la directory deve contenere i file
cwallet.sso
eewallet.p12
.ls -l ${ROOT_TLS_DIR}
-
Visualizzare il contenuto del wallet, che deve avere un utente e un certificato protetto.
orapki wallet display -wallet ${ROOT_TLS_DIR}
-
Esportare il certificato protetto CA radice da utilizzare per creare il wallet del database.
[oracle@db23aigrid ~]$ orapki wallet export -wallet ${ROOT_TLS_DIR} -dn $TLS_DN -cert ${ROOT_TLS_DIR}/rootCA.crt -pwd ${DBUSR_PWD}
-
Visualizzare il contenuto del file
rootCA.crt
.cat ${ROOT_TLS_DIR}/rootCA.crt
-
-
Creare e configurare il wallet del server (database).
-
Creare il wallet del database.
[oracle@db23aigrid ~]$ orapki wallet create -wallet ${DB_TLS_DIR} -pwd ${DBUSR_PWD} -auto_login
-
Aggiungere il certificato radice sicuro al wallet (ottenere questo certificato dall'amministratore del certificato).
[oracle@db23aigrid ~]$ orapki wallet add -wallet ${DB_TLS_DIR} -trusted_cert -cert ${ROOT_TLS_DIR}/rootCA.crt -pwd ${DBUSR_PWD}
-
Creare una chiave privata e una richiesta di certificato nel wallet.
[oracle@db23aigrid ~]$ orapki wallet add -wallet ${DB_TLS_DIR} -keysize 2048 -dn $TLS_DN -pwd ${DBUSR_PWD}-addext_san $TLS_SAN
-
Esportare la richiesta di certificato per ottenere la firma.
[oracle@db23aigrid ~]$ orapki wallet export -wallet ${DB_TLS_DIR} -dn $TLS_DN -request ${DB_TLS_DIR}/db23gridpdb.csr -pwd ${DBUSR_PWD}
-
Visualizzare il contenuto del wallet. Verrà visualizzata una voce in Certificati richiesti.
orapki wallet display -wallet ${DB_TLS_DIR}
-
Visualizzare il contenuto del file CSR (Certificate Signing Request).
cat ${DB_TLS_DIR}/db23gridpdb.csr
-
-
Firma e importa il certificato del server.
-
Firma l'addetto al servizio clienti utilizzando il wallet root con firma automatica.
[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}
-
Visualizzare il certificato utente del server firmato.
cat ${DB_TLS_DIR}/db23gridpdb-signed.crt
-
Importare il certificato utente del database server firmato nel wallet del database.
[oracle@db23aigrid ~]$ orapki wallet add -wallet ${DB_TLS_DIR} -user_cert -cert ${DB_TLS_DIR}/db23gridpdb-signed.crt -pwd ${DBUSR_PWD}
-
Visualizzare il contenuto del wallet, assicurarsi che il certificato utente del database server venga visualizzato in Certificati utente. Il wallet che verrà utilizzato per il database server e il listener è ora pronto per essere distribuito per l'uso.
orapki wallet display -wallet ${DB_TLS_DIR}
-
-
Distribuire i file wallet.
-
Copiare i file wallet del database server.
[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}
-
Esporta il certificato.
[oracle@db23aigrid ~]$ orapki wallet export -wallet ${ROOT_TLS_DIR} -dn $TLS_DN -cert ${ROOT_TLS_DIR}/rootCA.crt -pwd ${DBUSR_PWD}
-
-
Accettare come utente
root
la CA root a livello di sistema.-
Eseguire il comando
[root@db23ailvm etc]# cp -v /home/oracle/wallet_tls/certificates/rootCA/rootCA.crt /etc/pki/catrust/source/anchors/
. -
Eseguire il comando
[root@db23ailvm etc]# update-ca-trust extract
. -
Impostare le autorizzazioni file appropriate.
cd /etc/ORACLE/WALLETS/ chmod -R 755 oracle/
-
Task 1.3: configurazione di Oracle per la comunicazione TLS
-
Modificare
sqlnet.ora
per TLS unidirezionale e aggiungere le righe seguenti.[oracle@db23aigrid ~]$ cd $ORACLE_HOME/network/admin [oracle@db23aigrid ~]$ vi sqlnet.ora
SSL_CLIENT_AUTHENTICATION = FALSE
-
Modificare
tnsnames.ora
e assicurarsi che le voci sia per TCP che per TCPS vengano aggiunte per il database PDB.Regolare i valori in base all'ambiente:
[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)))
Task 1.4: Configurare il listener con TLS
-
Se si utilizza Oracle Grid Infrastructure, attenersi alla procedura riportata di seguito.
-
Eseguire i comandi seguenti.
sudo su - grid srvctl stop listener srvctl modify listener -p "TCP:1521/TCPS:1522" srvctl config listener | grep "End points"
-
Modificare il file
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
-
riavviare il listener.
``` $ srvctl start listener ```
Oppure
-
-
Se si utilizza Oracle Linux Volume Manager, effettuare le operazioni riportate di seguito.
-
Eseguire il comando riportato di seguito.
cd $ORACLE_HOME/network/admin lsnrctl stop
-
Modificare
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
-
riavviare il listener.
lsnrctl start
-
Task 1.5: Convalida connettività TLS
-
Eseguire il test del protocollo TCP (non TLS).
$ sqlplus system/QAZxswedc123##@DB23GRIDPDB SQL> SELECT sys_context('USERENV', 'NETWORK_PROTOCOL') as network_protocol FROM dual; NETWORK_PROTOCOL Tcp
-
Eseguire il test del TCPS (TLS abilitato)
$ sqlplus system/QAZxswedc123##@DB23GRIDPDB_TLS SQL> SELECT sys_context('USERENV', 'NETWORK_PROTOCOL') as network_protocol FROM dual; NETWORK_PROTOCOL Tcps
Task 1.6: configurazione dell'host client per TLS
Nota: prerequisiti per questo task.
Istanza di OCI Compute su cui è in esecuzione Oracle Linux 8.
Client Oracle Database 23ai per Linux. Per informazioni dettagliate, vedere installazione del client Oracle 23ai.
Copiare i file del certificato dal database server.
Attenersi alla procedura per configurare l'host client.
-
Copiare i file del certificato e del wallet dal database server. È possibile utilizzare qualsiasi strumento di trasferimento file preferito per spostare questi file dal database server al client.
cd /home/oracle/wallet_tls/certificates/ tar -cvf rootCA.tar rootCA chmod 755 rootCA.tar cp rootCA.tar /tmp/
-
Impostare le directory dei client.
[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
-
Trasferire i file del certificato e del wallet dal database server all'istanza client.
[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
-
Estrai file certificato.
[oracle@linuxclient23:~/wallet_db23aigrid_tls]$ tar -xvf rootCA.tar
-
Configurare
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)))
-
Configurare
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)))
Task 1.7: eseguire il test della connessione dall'istanza client
-
Eseguire il test del protocollo TCP (non TLS).
$ sqlplus system/QAZxswedc123##@DB23GRIDPDB SQL> SELECT sys_context('USERENV', 'NETWORK_PROTOCOL') as network_protocol FROM dual; NETWORK_PROTOCOL Tcp
-
Eseguire il test del TCPS (TLS abilitato).
$ sqlplus system/QAZxswedc123##@DB23GRIDPDB_TLS SQL> SELECT sys_context('USERENV', 'NETWORK_PROTOCOL') as network_protocol FROM dual; NETWORK_PROTOCOL Tcps
Task 2: impostare Microsoft Azure e Database Integration
Task 2.1: Registra Database Server in Microsoft Azure
-
Eseguire il login al portale Microsoft Azure come amministratore che dispone dei privilegi di Microsoft Entra ID per registrare le applicazioni.
-
Nella pagina Centro di amministrazione directory Azure Active selezionare ID Entra Microsoft.
-
Fare clic su Registrazioni applicazioni e Nuova registrazione.
-
Immettere le informazioni riportate di seguito.
-
Nome: immettere
BaseDB-Server
. -
Chi può utilizzare questa applicazione o accedere a questa API?: selezionare Solo account in questa directory organizzativa.
-
-
Fare clic su Registra.
-
In Applicazione registrata, fare clic su Esponi un'API.
-
Fare clic su Aggiungi accanto a URI ID applicazione e Salva. Lasciare gli altri valori come predefiniti.
-
Fare clic su Aggiungi un ambito e immettere le informazioni seguenti.
-
Nome ambito: immettere
session:scope:connect
. -
Chi può acconsentire?: immettere Amministratori e utenti.
-
Nome visualizzato consenso amministratore: selezionare Connetti al database.
-
Descrizione del consenso di amministrazione: selezionare Connetti al database.
-
Nome visualizzato consenso utente: selezionare Connetti al database.
-
Descrizione consenso utente: selezionare Connetti al database.
-
Stato: selezionare Abilitato.
Fare clic su Aggiungi ambito. Una volta aggiunto, assicurarsi di copiare il valore di Ambito.
-
-
In Configurazione token, aggiungere Richiesta come aggiornamento con Tipo di token come Accesso.
Nota: questa opzione è obbligatoria nell'ambito dell'abilitazione del token v2 ID Microsoft Entra. Per ulteriori informazioni sui token v2, vedere Abilitazione dei token di accesso all'ID Microsoft Entra v2.
Potrebbe essere inoltre necessario modificare il file manifesto dell'applicazione in Microsoft Entra ID per ottenere un token v2.
-
In Ruoli applicazione, aggiungere i seguenti ruoli applicazione.
-
Nella panoramica, copiare URI ID applicazione, ID directory (tenant) e ID applicazione (client).
-
Passare a Home, Applicazioni enterprise, BaseDB-Server e fare clic su Aggiungi utente/gruppo per assegnare gli utenti.
-
In Utenti, selezionare l'utente. Durante la generazione del token di accesso, questo utente assegnato verrà utilizzato per Single Sign-On.
-
In Selezionare un ruolo selezionare pdb.users, quindi fare clic su Seleziona e Assegna.
-
Ripetere i passi 13 e 14 per lo stesso utente e assegnare dba.role.
Task 2.2: Registra client database in Microsoft Azure
-
Registrare l'applicazione client del database con le informazioni riportate di seguito.
-
Nome: immettere
BaseDB-Client
. -
Tipi di conto supportati: selezionare Account solo in questa directory organizzativa.
-
URI di reindirizzamento: immettere client pubblico/nativo -
<http://localhost>
.
-
-
In Gestisci fare clic su Autorizzazioni API e su Aggiungi un'autorizzazione. Selezionare API utilizzate dall'organizzazione, BaseDB-Server, Autorizzazioni delegate, Autorizzazione come sessione:scope:connect e fare clic su Aggiungi autorizzazioni.
-
Nella panoramica, copiare URI ID applicazione e ID directory (tenant).
Task 2.3: Configurazione di Database Server per Microsoft Azure
Eseguire le query riportate di seguito per configurare Microsoft Azure AD come provider di identità e creare utenti e ruoli globali del database.
-
Controllare il provider di identità corrente nel database PDB.
SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME='identity_provider_type';
-
Impostare Microsoft Azure come provider di identità.
ALTER SYSTEM SET IDENTITY_PROVIDER_TYPE=AZURE_AD SCOPE=BOTH;
-
Convalida provider di identità aggiornato.
SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME='identity_provider_type';
-
Impostare la configurazione del provider di identità. Sostituire
application_id_uri
,tenant_id
eapp_id
con i valori copiati nel task 2.1.11.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;
-
Creare utenti e ruoli globali nel database.
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';
-
Concedere i privilegi agli utenti e ai ruoli.
GRANT CREATE SESSION TO allusers; GRANT CREATE SESSION TO hrapp; GRANT pdb_dba TO dba_azure;
Task 2.4: Configurare l'utilità di supporto per generare il token di accesso Microsoft Azure
In questo task, verrà utilizzata una utility Python per generare un token di accesso che verrà salvato in un file e a cui in seguito verrà fatto riferimento da SQL*Plus. Questa utility richiede l'esecuzione del modulo MSAL.
-
Salvare la utility Python da qui: Get-Token.py.
-
Nel codice Python seguente, sostituire il valore di
scope
con il valore copiato nel task 2.1.8. Analogamente, aggiornare i valori diclient_id
etenant_id
con i valori del task 2.2.3. -
Eseguire il codice Python utilizzando il comando seguente.
python ./get-token.py
-
Se tutto è configurato correttamente, questo dovrebbe attivare un reindirizzamento del browser al portale Microsoft Azure per l'autenticazione dell'utente. Al momento dell'autenticazione, un file token verrà generato nella directory in cui è stato eseguito il comando Python, che contiene il token di accesso. Nella finestra del terminale verranno stampati anche il token di accesso e il token di aggiornamento.
-
(Facoltativo), è possibile convalidare il token generato navigando qui: jwt.io e incollando la stringa del token nel campo Codificato. Nel campo Decodificato vengono visualizzate informazioni sulla stringa di token.
Task 2.5: eseguire il login utilizzando SQL*PLUS
-
Eseguire il test del login al token Microsoft Azure utilizzando 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)))
-
Verificare l'utente collegato.
Nota: una volta eseguito il login, è possibile eseguire le query riportate di seguito per recuperare le informazioni specifiche della sessione dell'utente.
- La variabile CURRENT_USER restituisce l'utente corrente attivo.
- ALLUSERS è l'utente dello schema condiviso assegnato mediante i ruoli applicazione ID Microsoft Entra.
- AUTHENTICATED_IDENTITY rappresenta l'utente autenticato da ID Microsoft Entra.
- ENTERPRISE_IDENTITY restituisce il GUID dell'utente autenticato dall'ID di Microsoft Entra.
- SESSION_ROLES restituisce la lista combinata di ruoli concessi localmente e concessi tramite mapping globali tramite i ruoli applicazione ID Microsoft Entra.
-
Eseguire la query seguente per verificare l'utente corrente.
SELECT SYS_CONTEXT ('USERENV','CURRENT_USER') FROM DUAL;
Output:
SYS_CONTEXT('USERENV','CURRENT_USER') ALLUSERS
-
Eseguire la query seguente per verificare l'utente autenticato.
SELECT SYS_CONTEXT ('USERENV','AUTHENTICATED_IDENTITY') FROM DUAL;
Output:
SYS_CONTEXT('USERENV','AUTHENTICATED_IDENTITY') <anujtrip.ai@gmail.com>
-
Eseguire la query seguente per verificare il GUID dell'utente autenticato.
SELECT SYS_CONTEXT ('USERENV','ENTERPRISE_IDENTITY') FROM DUAL;
Output:
SYS_CONTEXT('USERENV','ENTERPRISE_IDENTITY') 7eb35b90-dcxxx5-bc0b-48789368e9cf
-
Eseguire la query seguente per verificare i ruoli applicazione.
SELECT * FROM SESSION_ROLES;
Output:
ROLE DBA_AZURE PDB_DBA CONNECT
Passi successivi
Con l'implementazione dell'autenticazione basata su ID di Microsoft Entra, è possibile allineare i ruoli utente e i criteri di accesso tramite la governance centralizzata delle identità. Sfruttando i mapping globali per gli utenti e i ruoli dello schema condiviso, è possibile semplificare il controllo dell'accesso e ridurre la complessità amministrativa. Inoltre, è fondamentale monitorare le sessioni utente e i pattern di accesso per migliorare la sicurezza e garantire la conformità ai criteri organizzativi. Dovresti anche considerare la possibilità di estendere questa integrazione ad altri database o applicazioni per mantenere una gestione delle identità coerente in tutta l'azienda.
Collegamenti correlati
-
Usa autenticazione Azure Active Directory con Base Database Service
-
Autenticazione e autorizzazione degli utenti Microsoft Azure per i database Oracle
Conferme
- Autori - Anuj Tripathi (Principal Cloud Architect, NA Solutions Engineering), Alex Kovuru (Principal Cloud Architect, NA Solutions Engineering)
Altre risorse di apprendimento
Esplora altri laboratori su docs.oracle.com/learn o accedi a più contenuti gratuiti sulla formazione su Oracle Learning YouTube channel. Inoltre, visita education.oracle.com/learning-explorer per diventare un Oracle Learning Explorer.
Per la documentazione del prodotto, visita l'Oracle Help Center.
Authenticate Oracle Database 23ai with Microsoft Entra ID
G33291-02
Copyright ©2025, Oracle and/or its affiliates.