Remarques :
- Ce tutoriel nécessite un accès à Oracle Cloud. Pour vous inscrire à un compte gratuit, reportez-vous à Introduction à Oracle Cloud Infrastructure Free Tier.
- Il utilise des exemples de valeurs pour les informations d'identification, la location et les compartiments Oracle Cloud Infrastructure. Lorsque vous terminez votre atelier, remplacez ces valeurs par celles propres à votre environnement cloud.
Authentification d'Oracle Database 23ai avec l'ID Microsoft Entra
Introduction
Oracle Database peut être intégré à Microsoft Entra ID (anciennement Microsoft Azure Active Directory) pour permettre un accès sécurisé et sans mot de passe à la base de données. Avec cette configuration, les utilisateurs et les services peuvent se connecter à la base de données à l'aide de leurs informations d'identification Microsoft Entra ID via l'accès avec connexion unique (SSO).
L'authentification est gérée via un jeton d'accès OAuth2 émis par l'ID Microsoft Entra. Ce jeton, qui inclut l'identité de l'utilisateur et les détails d'accès, est transmis à Oracle Database. Le client de base de données valide le format et l'expiration du jeton avant d'autoriser l'accès, garantissant ainsi un processus de connexion sécurisé et rationalisé.
Pourquoi avons-nous besoin de cela ?
Alors que les entreprises accordent de plus en plus la priorité à la sécurité, la gestion de l'accès aux données sensibles devient essentielle. Oracle Database, en collaboration avec Microsoft Entra ID, permet une authentification sécurisée sans mot de passe, en exploitant des systèmes de gestion des identités modernes pour un contrôle d'accès transparent, évolutif et robuste. Cette intégration prend en charge un large éventail de déploiements Oracle, y compris Oracle Autonomous Database, Oracle Exadata et Oracle Base Database Service, garantissant ainsi un accès cohérent et sécurisé à différents environnements.
Clients et outils de base de données
Les applications et les outils qui prennent en charge les jetons Microsoft Entra ID peuvent authentifier les utilisateurs directement via Microsoft Entra ID et transmettre le jeton d'accès à la base de données à l'instance Oracle Database via l'API client. Les outils de base de données existants, tels que SQL*Plus
, peuvent être configurés pour utiliser un jeton d'ID Entra Microsoft stocké dans un fichier. Le jeton peut être extrait à l'aide d'outils d'aide tels que Microsoft PowerShell, l'interface de ligne de commande Azure ou des bibliothèques telles que Microsoft Authentication Library (MSAL) et enregistré dans un emplacement de fichier spécifié. Par la suite, SQL*Plus référence ce jeton lors de l'établissement de la connexion.
Remarque : ce tutoriel utilise un script Python exploitant MSAL pour acquérir des jetons de sécurité. Pour plus d'informations, reportez-vous à Présentation de la bibliothèque d'authentification Microsoft (MSAL).
Ce tutoriel vous guide tout au long de la configuration de l'authentification Microsoft Entra ID pour Oracle Base Database 23ai, y compris la configuration de TLS. Reportez-vous à la documentation propre au type de base de données : sur site, Exadata, DBaaS ou Autonomous. TLS est préconfiguré pour Autonomous Database. Vous pouvez donc ignorer cette étape.
Public
Administrateurs Oracle Database et administrateurs Oracle Cloud Infrastructure Identity and Access Management (OCI IAM).
Objectifs
-
Configurez le protocole TLS (Transport Layer Security) pour la base de données.
-
Enregistrez le serveur de base de données auprès de Microsoft Azure.
-
Enregistrez le client de base de données auprès de Microsoft Azure.
-
Configurer l'intégration de Database for Microsoft Azure.
-
Configurez le client à l'aide d'un script helper.
-
Testez la connexion à l'aide de SQL*Plus.
Prérequis
-
Compte Microsoft Azure disposant de privilèges d'administration.
-
Oracle Database 23ai sur le service Oracle Base Database.
-
Paramètres réseau :
-
Le serveur Oracle Database doit être en mesure de demander la clé publique Microsoft Entra ID pour valider l'authenticité et la validité des jetons émis, et pour confirmer qu'ils ont été émis par une autorité de confiance.
-
Selon la configuration de la connectivité réseau, les règles de routage et de sécurité appropriées doivent être configurées. Une passerelle NAT peut être utilisée pour acheminer le trafic sortant et les règles sortantes doivent être limitées aux plages d'adresses IP publiques Microsoft Azure sur le port 443.
-
-
Configuration TLS :
- Lorsque vous envoyez des jetons d'ID Microsoft Entra du client de base de données au serveur de base de données, une connexion TLS doit être établie. Dans ce tutoriel, nous allons configurer TLS unidirectionnel (configuration de TLS avec un certificat racine auto-signé), où seul le serveur fournit un certificat au client pour s'authentifier. Le client n'a pas besoin d'avoir un certificat client distinct pour s'authentifier auprès du serveur.
-
Configurez un logiciel client Oracle 23ai exécuté sur Oracle Linux.
-
Installez Python 3.6 ou version ultérieure avec le module MSAL. Même si Python 3.6 fonctionne, la version recommandée est
3.7+
. Utilisezpip
pour installer le module requis.
Tâche 1 : configurer TLS pour Oracle Database 23ai
Tâche 1.1 : préparation du système d'exploitation pour la configuration TLS
-
Connectez-vous au serveur de base de données et passez à l'utilisateur
root
pour configurer le répertoire.[opc@db23aigrid ~]$ sudo su - [root@db23aigrid ~]# mkdir -p /etc/ORACLE/WALLETS/oracle [root@db23aigrid ~]# cd /etc/ [root@db23aigrid etc]# chown -R oracle:oinstall ORACLE/
-
Obtenez le nom d'hôte en tant qu'utilisateur
oracle
.[root@db23aigrid etc]# su - oracle [oracle@db23aigrid admin]$ hostname -f
Exemple de sortie :
db23aigrid.sub10121249210.dbsecvcn.oraclevcn.com
-
Connexion à la base de données.
[oracle@db23aigrid admin]$ sqlplus "/as sysdba"
-
Vérifiez le répertoire racine du portefeuille.
SQL> show parameter wallet_root;
Exemple de sortie :
NAME TYPE VALUE ---------- ------ ---------------------------------------------------- wallet_root string /opt/oracle/dcs/commonstore/wallets/DB23GRID_w54_iad
-
Vérifiez le nom et le GUID de la base de données pluggable.
SQL> show pdbs;
Exemple de sortie :
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';
Exemple de sortie :
GUID -- ----------------------------- 32435DD0A1EC55xxx0639400000A7225
-
Créez des répertoires locaux pour le portefeuille et les certificats.
[oracle@db23aigrid ~]$ mkdir -p /home/oracle/wallet_tls/certificates/rootCA [oracle@db23aigrid ~]$ mkdir -p /home/oracle/wallet_tls/certificates/db_wallet
-
Créez le répertoire TLS de base de données sous le chemin racine du portefeuille à l'aide du GUID de base de données pluggable.
[oracle@db23aigrid ~]$ mkdir -p /opt/oracle/dcs/commonstore/wallets/DB23GRID_w54_iad/32435DDxxxxxx7E0639400000A7225/tls
-
Mettez à jour
.bashrc
avec les variables d'environnement liées à TLS.[oracle@db23aigrid ~]$ vi ~/.bashrc
Ajoutez les éléments suivants et ajustez les valeurs en fonction de votre environnement.
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
-
Appliquer les modifications
[oracle@db23aigrid ~]$ . ~/.bashrc
Tâche 1.2 : configurer le portefeuille et le certificat TLS
-
Créez et configurez le portefeuille racine.
-
Créez le portefeuille racine.
[oracle@db23aigrid ~]$ orapki wallet create -wallet ${ROOT_TLS_DIR} -pwd ${DBUSR_PWD} -auto_login
-
Affichez le contenu du portefeuille. Il doit être vide.
[oracle@db23aigrid ~]$ orapki wallet display -wallet ${ROOT_TLS_DIR}
-
Créez le certificat auto-signé pour le portefeuille d'autorité de certification racine.
[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
-
Le répertoire doit maintenant contenir les fichiers
cwallet.sso
etewallet.p12
.ls -l ${ROOT_TLS_DIR}
-
Affichez le contenu du portefeuille. Il doit comporter un utilisateur et un certificat sécurisé.
orapki wallet display -wallet ${ROOT_TLS_DIR}
-
Exportez le certificat sécurisé d'autorité de certification racine à utiliser lors de la création du portefeuille de base de données.
[oracle@db23aigrid ~]$ orapki wallet export -wallet ${ROOT_TLS_DIR} -dn $TLS_DN -cert ${ROOT_TLS_DIR}/rootCA.crt -pwd ${DBUSR_PWD}
-
Affichez le contenu du fichier
rootCA.crt
.cat ${ROOT_TLS_DIR}/rootCA.crt
-
-
Créez et configurez le portefeuille du serveur (base de données).
-
Créez le portefeuille de base de données.
[oracle@db23aigrid ~]$ orapki wallet create -wallet ${DB_TLS_DIR} -pwd ${DBUSR_PWD} -auto_login
-
Ajoutez le certificat racine sécurisé au portefeuille (obtenez-le auprès de l'administrateur de certificat).
[oracle@db23aigrid ~]$ orapki wallet add -wallet ${DB_TLS_DIR} -trusted_cert -cert ${ROOT_TLS_DIR}/rootCA.crt -pwd ${DBUSR_PWD}
-
Créez une demande de clé privée et de certificat dans le portefeuille.
[oracle@db23aigrid ~]$ orapki wallet add -wallet ${DB_TLS_DIR} -keysize 2048 -dn $TLS_DN -pwd ${DBUSR_PWD}-addext_san $TLS_SAN
-
Exportez la demande de certificat pour la faire signer.
[oracle@db23aigrid ~]$ orapki wallet export -wallet ${DB_TLS_DIR} -dn $TLS_DN -request ${DB_TLS_DIR}/db23gridpdb.csr -pwd ${DBUSR_PWD}
-
Affichez le contenu du portefeuille. Une entrée apparaît sous Certificats demandés.
orapki wallet display -wallet ${DB_TLS_DIR}
-
Affichez le contenu du fichier de demande de signature de certificat.
cat ${DB_TLS_DIR}/db23gridpdb.csr
-
-
Signez et importez le certificat du serveur.
-
Signez la CSR à l'aide du portefeuille racine auto-signé.
[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}
-
Affichez le certificat utilisateur du serveur signé.
cat ${DB_TLS_DIR}/db23gridpdb-signed.crt
-
Importez le certificat utilisateur de serveur de base de données signé dans le portefeuille de base de données.
[oracle@db23aigrid ~]$ orapki wallet add -wallet ${DB_TLS_DIR} -user_cert -cert ${DB_TLS_DIR}/db23gridpdb-signed.crt -pwd ${DBUSR_PWD}
-
Affichez le contenu du portefeuille et assurez-vous que le certificat utilisateur du serveur de base de données est désormais affiché sous Certificats utilisateur. Le portefeuille que vous utiliserez pour le serveur de base de données et le processus d'écoute est maintenant prêt à être déployé pour utilisation.
orapki wallet display -wallet ${DB_TLS_DIR}
-
-
Déployez des fichiers de portefeuille.
-
Copiez les fichiers de portefeuille du serveur de base de données.
[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}
-
Exporter le certificat.
[oracle@db23aigrid ~]$ orapki wallet export -wallet ${ROOT_TLS_DIR} -dn $TLS_DN -cert ${ROOT_TLS_DIR}/rootCA.crt -pwd ${DBUSR_PWD}
-
-
Faites confiance à l'autorité de certification racine à l'échelle du système en tant qu'utilisateur
root
.-
Exécutez la commande
[root@db23ailvm etc]# cp -v /home/oracle/wallet_tls/certificates/rootCA/rootCA.crt /etc/pki/catrust/source/anchors/
. -
Exécutez la commande
[root@db23ailvm etc]# update-ca-trust extract
. -
Définissez les autorisations de fichier appropriées.
cd /etc/ORACLE/WALLETS/ chmod -R 755 oracle/
-
Tâche 1.3 : configurer Oracle pour la communication TLS
-
Modifiez
sqlnet.ora
pour TLS unidirectionnel et ajoutez les lignes suivantes.[oracle@db23aigrid ~]$ cd $ORACLE_HOME/network/admin [oracle@db23aigrid ~]$ vi sqlnet.ora
SSL_CLIENT_AUTHENTICATION = FALSE
-
Modifiez
tnsnames.ora
et assurez-vous que les entrées pour TCP et TCPS sont ajoutées pour la base de données pluggable.Ajustez les valeurs en fonction de votre environnement :
[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)))
Tâche 1.4 : configurer le processus d'écoute avec TLS
-
Si vous utilisez Oracle Grid Infrastructure, procédez comme suit :
-
Exécutez les commandes suivantes .
sudo su - grid srvctl stop listener srvctl modify listener -p "TCP:1521/TCPS:1522" srvctl config listener | grep "End points"
-
Modifiez le fichier
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
-
Redémarrez le processus d'écoute.
``` $ srvctl start listener ```
Ou
-
-
Si vous utilisez Oracle Linux Volume Manager, procédez comme suit :
-
Exécutez la commande suivante .
cd $ORACLE_HOME/network/admin lsnrctl stop
-
Modifiez
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
-
Redémarrez le processus d'écoute.
lsnrctl start
-
Tâche 1.5 : validation de la connectivité TLS
-
Testez le protocole TCP (non-TLS).
$ sqlplus system/QAZxswedc123##@DB23GRIDPDB SQL> SELECT sys_context('USERENV', 'NETWORK_PROTOCOL') as network_protocol FROM dual; NETWORK_PROTOCOL Tcp
-
Tester le TCPS (TLS activé)
$ sqlplus system/QAZxswedc123##@DB23GRIDPDB_TLS SQL> SELECT sys_context('USERENV', 'NETWORK_PROTOCOL') as network_protocol FROM dual; NETWORK_PROTOCOL Tcps
Tâche 1.6 : configuration de l'hôte client pour TLS
Remarque : prérequis pour cette tâche.
Instance de calcul OCI exécutant Oracle Linux 8.
Client Oracle Database 23ai pour Linux. Pour plus d'informations, reportez-vous à Installation du client Oracle 23ai.
Copiez les fichiers de certificat à partir du serveur de base de données.
Pour configurer l'hôte client, procédez comme suit :
-
Copiez les fichiers de certificat et de portefeuille à partir du serveur de base de données. Vous pouvez utiliser n'importe quel outil de transfert de fichiers préféré pour déplacer ces fichiers du serveur de base de données vers le client.
cd /home/oracle/wallet_tls/certificates/ tar -cvf rootCA.tar rootCA chmod 755 rootCA.tar cp rootCA.tar /tmp/
-
Configurez les répertoires 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
-
Transférez les fichiers de certificat et de portefeuille du serveur de base de données vers l'instance 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
-
Extraire les fichiers de certificat.
[oracle@linuxclient23:~/wallet_db23aigrid_tls]$ tar -xvf rootCA.tar
-
Configurez
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)))
-
Configurez
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)))
Tâche 1.7 : tester la connexion à partir de l'instance client
-
Testez le protocole TCP (non-TLS).
$ sqlplus system/QAZxswedc123##@DB23GRIDPDB SQL> SELECT sys_context('USERENV', 'NETWORK_PROTOCOL') as network_protocol FROM dual; NETWORK_PROTOCOL Tcp
-
Testez le protocole TCPS (TLS activé).
$ sqlplus system/QAZxswedc123##@DB23GRIDPDB_TLS SQL> SELECT sys_context('USERENV', 'NETWORK_PROTOCOL') as network_protocol FROM dual; NETWORK_PROTOCOL Tcps
Tâche 2 : configurer l'intégration de Microsoft Azure et de la base de données
Tâche 2.1 : Inscrire le serveur de base de données dans Microsoft Azure
-
Connectez-vous au portail Microsoft Azure en tant qu'administrateur disposant de privilèges Microsoft Entra ID permettant d'inscrire des applications.
-
Sur la page Centre d'administration d'annuaire Azure Active, sélectionnez ID Entra Microsoft.
-
Cliquez sur Inscriptions d'applications et sur Nouvelle inscription.
-
Saisissez les informations suivantes .
-
Nom : entrez
BaseDB-Server
. -
Qui peut utiliser cette application ou accéder à cette API ? : sélectionnez Comptes dans cet annuaire organisationnel uniquement.
-
-
Cliquez sur Inscrire.
-
Sous Application inscrite, cliquez sur Exposer une API.
-
Cliquez sur Ajouter en regard de URI d'ID d'application et Enregistrer. Conservez les autres valeurs par défaut.
-
Cliquez sur Ajouter une étendue et entrez les informations suivantes.
-
Nom de la portée : entrez
session:scope:connect
. -
Qui peut donner son consentement ? : entrez Administrateurs et utilisateurs.
-
Nom d'affichage du consentement administrateur : sélectionnez Se connecter à la base de données.
-
Description du consentement administrateur : sélectionnez Se connecter à la base de données.
-
Nom d'affichage du consentement utilisateur : sélectionnez Se connecter à la base de données.
-
Description du consentement utilisateur : sélectionnez Se connecter à la base de données.
-
Etat : sélectionnez Activé.
Cliquez Ajouter une portée. Une fois ajoutée, veillez à copier la valeur de Portée.
-
-
Sous Configuration de jeton, ajoutez Demande en tant que upn avec Type de jeton comme Accès.
Remarque : ceci est requis dans le cadre de l'activation du jeton v2 ID Entra Microsoft. Pour plus d'informations sur les jetons v2, reportez-vous à Activation des jetons d'accès v2 Microsoft Entra ID.
Vous devrez peut-être également modifier le manifeste de l'application dans Microsoft Entra ID pour obtenir un jeton v2.
-
Sous Rôles d'application, ajoutez les rôles d'application suivants.
-
Dans Présentation, copiez l'URI d'ID d'application, l'ID de répertoire (locataire) et l'ID d'application (client).
-
Accédez à l'accueil, aux applications Enterprise, au BaseDB-serveur et cliquez sur Ajouter un utilisateur/groupe pour affecter des utilisateurs.
-
Sous Utilisateurs, sélectionnez l'utilisateur. Lors de la génération du jeton d'accès, cet utilisateur affecté sera utilisé pour l'accès avec connexion unique.
-
Sous Sélectionner un rôle, sélectionnez pdb.users, cliquez sur Sélectionner et sur Affecter.
-
Répétez les étapes 13 et 14 pour le même utilisateur et affectez dba.role.
Tâche 2.2 : Inscrire le client de base de données dans Microsoft Azure
-
Enregistrez l'application client de base de données avec les informations suivantes.
-
Nom : entrez
BaseDB-Client
. -
Types de compte pris en charge : sélectionnez Comptes dans cet annuaire organisationnel uniquement.
-
URI de réacheminement : entrez Client public/natif -
<http://localhost>
.
-
-
Sous Gérer, cliquez sur Droits d'accès d'API et sur Ajouter un droit d'accès. Sélectionnez API utilisées par mon organisation, BaseDB-Serveur, Autorisations déléguées, Autorisation en tant que session:scope:connect et cliquez sur Ajouter des autorisations.
-
Dans Présentation, copiez l'URI d'ID d'application et l'ID de répertoire (locataire).
Tâche 2.3 : configurer le serveur de base de données pour Microsoft Azure
Exécutez les requêtes suivantes pour configurer Microsoft Azure AD en tant que fournisseur d'identités et créer des utilisateurs et des rôles globaux de base de données.
-
Vérifiez le fournisseur d'identités en cours dans la base de données pluggable.
SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME='identity_provider_type';
-
Définissez Microsoft Azure en tant que fournisseur d'identités.
ALTER SYSTEM SET IDENTITY_PROVIDER_TYPE=AZURE_AD SCOPE=BOTH;
-
Validez le fournisseur d'identités mis à jour.
SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME='identity_provider_type';
-
Définissez la configuration du fournisseur d'identités. Remplacez
application_id_uri
,tenant_id
etapp_id
par des valeurs copiées dans la tâche 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;
-
Créez des utilisateurs globaux et un rôle dans la base de données.
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';
-
Octroyer des privilèges aux utilisateurs et aux rôles.
GRANT CREATE SESSION TO allusers; GRANT CREATE SESSION TO hrapp; GRANT pdb_dba TO dba_azure;
Tâche 2.4 : configurer l'utilitaire Helper pour générer le jeton d'accès Microsoft Azure
Dans cette tâche, nous allons utiliser un utilitaire Python pour générer un jeton d'accès qui serait enregistré dans un fichier, puis référencé par SQL*Plus. Cet utilitaire requiert l'exécution du module MSAL.
-
Enregistrez l'utilitaire Python à partir de cet emplacement : Get-Token.py.
-
Dans le code Python suivant, remplacez la valeur de
scope
par la valeur copiée dans la tâche 2.1.8. De même, mettez à jour les valeurs declient_id
ettenant_id
avec les valeurs de la tâche 2.2.3. -
Exécutez le code Python à l'aide de la commande suivante.
python ./get-token.py
-
Si tout est configuré correctement, cela devrait déclencher une redirection du navigateur vers le portail Microsoft Azure pour l'authentification des utilisateurs. Lors de l'authentification, un fichier de jeton est généré dans le répertoire dans lequel la commande Python a été exécutée, qui contient le jeton d'accès. Le jeton d'accès et le jeton d'actualisation seront également imprimés dans la fenêtre de terminal.
-
(Facultatif), vous pouvez valider le jeton généré en accédant ici à : jwt.io et en collant la chaîne de jeton dans le champ Encodé. Le champ Décodé affiche des informations sur la chaîne de jeton.
Tâche 2.5 : Connexion à l'aide de SQL*PLUS
-
Testez la connexion par jeton Microsoft Azure à l'aide de 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)))
-
Vérifiez l'utilisateur connecté.
Remarque : une fois connecté, vous pouvez exécuter les requêtes suivantes pour extraire les informations propres à la session de l'utilisateur.
- La variable CURRENT_USER renvoie l'utilisateur actif.
- ALLUSERS est l'utilisateur de schéma partagé qui a été affecté via les rôles d'application Microsoft Entra ID.
- AUTHENTICATED_IDENTITY représente l'utilisateur authentifié à partir de l'ID Entra Microsoft.
- ENTERPRISE_IDENTITY renvoie le GUID de l'utilisateur authentifié à partir de l'ID Entra Microsoft.
- SESSION_ROLES renvoie la liste combinée des rôles octroyés localement et octroyés via des mappages globaux via les rôles d'application Microsoft Entra ID.
-
Exécutez la requête suivante pour vérifier l'utilisateur actuel.
SELECT SYS_CONTEXT ('USERENV','CURRENT_USER') FROM DUAL;
Sortie :
SYS_CONTEXT('USERENV','CURRENT_USER') ALLUSERS
-
Exécutez la requête suivante pour vérifier l'utilisateur authentifié.
SELECT SYS_CONTEXT ('USERENV','AUTHENTICATED_IDENTITY') FROM DUAL;
Sortie :
SYS_CONTEXT('USERENV','AUTHENTICATED_IDENTITY') <anujtrip.ai@gmail.com>
-
Exécutez la requête suivante pour vérifier le GUID de l'utilisateur authentifié.
SELECT SYS_CONTEXT ('USERENV','ENTERPRISE_IDENTITY') FROM DUAL;
Sortie :
SYS_CONTEXT('USERENV','ENTERPRISE_IDENTITY') 7eb35b90-dcxxx5-bc0b-48789368e9cf
-
Exécutez la requête suivante pour vérifier les rôles d'application.
SELECT * FROM SESSION_ROLES;
Sortie :
ROLE DBA_AZURE PDB_DBA CONNECT
Etapes suivantes
Avec l'authentification basée sur l'ID Microsoft Entra implémentée avec succès, vous pouvez aligner les rôles utilisateur et les stratégies d'accès via une gouvernance centralisée des identités. En exploitant les mappings globaux pour les rôles et les utilisateurs de schéma partagés, vous pouvez rationaliser le contrôle d'accès et réduire la complexité administrative. En outre, il est essentiel de surveiller les sessions utilisateur et les modèles d'accès pour améliorer la sécurité et assurer la conformité avec les politiques organisationnelles. Vous devriez également envisager d'étendre cette intégration à d'autres bases de données ou applications pour maintenir une gestion cohérente des identités dans l'ensemble de l'entreprise.
Liens connexes
-
Utilisation de l'authentification Azure Active Directory avec Base Database Service
-
Authentification et autorisation d'utilisateurs Microsoft Azure pour les bases de données Oracle
Remerciements
- Auteurs - Anuj Tripathi (architecte cloud principal, NA Solutions Engineering), Alex Kovuru (architecte cloud principal, NA Solutions Engineering)
Ressources de formation supplémentaires
Explorez d'autres ateliers sur docs.oracle.com/learn ou accédez à d'autres contenus de formation gratuits sur le canal Oracle Learning YouTube. De plus, visitez le site education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.
Pour obtenir la documentation produit, consultez le site Oracle Help Center.
Authenticate Oracle Database 23ai with Microsoft Entra ID
G33290-02
Copyright ©2025, Oracle and/or its affiliates.