Note:
- Este tutorial requiere acceso a Oracle Cloud. Para registrarse para obtener una cuenta gratuita, consulte Introducción a la cuenta gratuita de Oracle Cloud Infrastructure.
- Utiliza valores de ejemplo para credenciales, arrendamiento y compartimentos de Oracle Cloud Infrastructure. Al finalizar la práctica, sustituya estos valores por otros específicos de su entorno en la nube.
Autenticación de Oracle Database 23ai con el ID de Microsoft Entra
Introducción
Oracle Database se puede integrar con Microsoft Entra ID (anteriormente Microsoft Azure Active Directory) para permitir un acceso seguro y sin contraseña a la base de datos. Con esta configuración, los usuarios y servicios pueden conectarse a la base de datos mediante sus credenciales de Microsoft Entra ID a través de Single Sign-On (SSO).
La autenticación se maneja mediante un token de acceso OAuth2 emitido por Microsoft Entra ID. Este token, que incluye la identidad del usuario y los detalles de acceso, se transfiere a Oracle Database. El cliente de base de datos valida el formato y la caducidad del token antes de permitir el acceso, lo que garantiza un proceso de conexión seguro y optimizado.
¿Por qué necesitamos esto?
A medida que las organizaciones priorizan cada vez más la seguridad, la gestión del acceso a datos confidenciales se vuelve fundamental. Oracle Database, en colaboración con Microsoft Entra ID, permite la autenticación segura sin contraseñas, aprovechando los modernos sistemas de gestión de identidad para un control de acceso fluido, escalable y sólido. Esta integración soporta una amplia gama de despliegues de Oracle, incluidos Oracle Autonomous Database, Oracle Exadata y Oracle Base Database Service, lo que garantiza un acceso consistente y seguro en diferentes entornos.
Clientes y herramientas de base de datos
Las aplicaciones y herramientas que soportan tokens de ID de Microsoft Entra pueden autenticar usuarios directamente a través del ID de Microsoft Entra y transferir el token de acceso a la base de datos a la instancia de Oracle Database a través de la API de cliente. Las herramientas de base de datos existentes, como SQL*Plus
, se pueden configurar para utilizar un token de ID de Microsoft Entra almacenado en un archivo. El token se puede recuperar mediante herramientas de ayuda como Microsoft PowerShell, Azure CLI o bibliotecas como Microsoft Authentication Library (MSAL) y se puede guardar en una ubicación de archivo especificada. Más adelante, SQL*Plus hace referencia a este token al establecer la conexión.
Nota: En este tutorial se utiliza un script de Python que utiliza MSAL para adquirir tokens de seguridad. Para obtener más información, consulte Visión general de la biblioteca de autenticación de Microsoft (MSAL).
Este tutorial le guiará a través de la configuración de la autenticación de Microsoft Entra ID para Oracle Base Database 23ai, incluida la configuración de TLS. Consulte la documentación específica de su tipo de base de datos: local, Exadata, DBaaS o Autonomous. Tenga en cuenta que TLS está preconfigurado para Autonomous Database, por lo que puede omitir ese paso.
Público Objetivo
Administradores de Oracle Database y administradores de Oracle Cloud Infrastructure Identity and Access Management (OCI IAM).
Objetivos
-
Configure la seguridad de capa de transporte (TLS) para la base de datos.
-
Registre el servidor de base de datos con Microsoft Azure.
-
Registre el cliente de base de datos con Microsoft Azure.
-
Configurar la integración de Database for Microsoft Azure.
-
Configure el cliente mediante una secuencia de comandos auxiliar.
-
Pruebe la conexión mediante SQL*Plus.
Requisitos
-
Una cuenta de Microsoft Azure con privilegios administrativos.
-
Oracle Database 23ai en el servicio Oracle Base Database.
-
Configuración de Red:
-
El servidor de Oracle Database debe poder solicitar la clave pública de Microsoft Entra ID para validar la autenticidad y validez de los tokens emitidos y confirmar que fueron emitidos por una autoridad de confianza.
-
En función de la configuración de conectividad de red, se deben configurar las reglas de enrutamiento y seguridad adecuadas. Un gateway de NAT se puede utilizar para enrutar el tráfico saliente y las reglas de salida deben restringirse solo a rangos de IP pública de Microsoft Azure en el puerto 443.
-
-
Configuración de TLS:
- Al enviar tokens de ID de Microsoft Entra desde el cliente de base de datos al servidor de base de datos, se debe establecer una conexión TLS. En este tutorial, configuraremos TLS unidireccional (configurando TLS con un certificado raíz autofirmado), donde solo el servidor proporciona un certificado al cliente para autenticarse. El cliente no necesita tener un certificado de cliente independiente para autenticarse en el servidor.
-
Configure un software de cliente de Oracle 23ai que se ejecute en Oracle Linux.
-
Instale Python 3.6 o posterior con el módulo MSAL. Aunque Python 3.6 funcionará, la versión recomendada es
3.7+
. Utilicepip
para instalar el módulo necesario.
Tarea 1: Configuración de TLS para Oracle Database 23ai
Tarea 1.1: Preparación del sistema operativo (SO) para la configuración de TLS
-
Conéctese al servidor de base de datos y cambie al usuario
root
para configurar el directorio.[opc@db23aigrid ~]$ sudo su - [root@db23aigrid ~]# mkdir -p /etc/ORACLE/WALLETS/oracle [root@db23aigrid ~]# cd /etc/ [root@db23aigrid etc]# chown -R oracle:oinstall ORACLE/
-
Obtenga el nombre de host como usuario
oracle
.[root@db23aigrid etc]# su - oracle [oracle@db23aigrid admin]$ hostname -f
Salida de ejemplo:
db23aigrid.sub10121249210.dbsecvcn.oraclevcn.com
-
Conéctese a la base de datos.
[oracle@db23aigrid admin]$ sqlplus "/as sysdba"
-
Verifique el directorio raíz de cartera.
SQL> show parameter wallet_root;
Salida de ejemplo:
NAME TYPE VALUE ---------- ------ ---------------------------------------------------- wallet_root string /opt/oracle/dcs/commonstore/wallets/DB23GRID_w54_iad
-
Compruebe el nombre y el GUID de la base de datos conectable (PDB).
SQL> show pdbs;
Salida de ejemplo:
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';
Salida de ejemplo:
GUID -- ----------------------------- 32435DD0A1EC55xxx0639400000A7225
-
Cree directorios locales para la cartera y los certificados.
[oracle@db23aigrid ~]$ mkdir -p /home/oracle/wallet_tls/certificates/rootCA [oracle@db23aigrid ~]$ mkdir -p /home/oracle/wallet_tls/certificates/db_wallet
-
Cree el directorio TLS de la base de datos en la ruta de acceso raíz de cartera mediante el GUID de PDB.
[oracle@db23aigrid ~]$ mkdir -p /opt/oracle/dcs/commonstore/wallets/DB23GRID_w54_iad/32435DDxxxxxx7E0639400000A7225/tls
-
Actualice
.bashrc
con variables de entorno relacionadas con TLS.[oracle@db23aigrid ~]$ vi ~/.bashrc
Agregue lo siguiente y ajuste los valores según su entorno.
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
-
Aplique los cambios.
[oracle@db23aigrid ~]$ . ~/.bashrc
Tarea 1.2: Configuración de Cartera y Certificado de TLS
-
Cree y configure la cartera raíz.
-
Cree la cartera raíz.
[oracle@db23aigrid ~]$ orapki wallet create -wallet ${ROOT_TLS_DIR} -pwd ${DBUSR_PWD} -auto_login
-
Ver el contenido de la cartera, debe estar vacío.
[oracle@db23aigrid ~]$ orapki wallet display -wallet ${ROOT_TLS_DIR}
-
Cree el certificado autofirmado para la cartera de CA raíz.
[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
-
El directorio debe tener ahora los archivos
cwallet.sso
yewallet.p12
.ls -l ${ROOT_TLS_DIR}
-
Vea el contenido de la cartera, debe tener un usuario y un certificado de confianza.
orapki wallet display -wallet ${ROOT_TLS_DIR}
-
Exporte el certificado de confianza de CA raíz para su uso en la creación de la cartera de base de datos.
[oracle@db23aigrid ~]$ orapki wallet export -wallet ${ROOT_TLS_DIR} -dn $TLS_DN -cert ${ROOT_TLS_DIR}/rootCA.crt -pwd ${DBUSR_PWD}
-
Consulte el contenido del archivo
rootCA.crt
.cat ${ROOT_TLS_DIR}/rootCA.crt
-
-
Cree y configure la cartera del servidor (base de datos).
-
Cree la cartera de base de datos.
[oracle@db23aigrid ~]$ orapki wallet create -wallet ${DB_TLS_DIR} -pwd ${DBUSR_PWD} -auto_login
-
Agregue el certificado raíz de confianza a la cartera (obtenga este certificado del administrador de certificados).
[oracle@db23aigrid ~]$ orapki wallet add -wallet ${DB_TLS_DIR} -trusted_cert -cert ${ROOT_TLS_DIR}/rootCA.crt -pwd ${DBUSR_PWD}
-
Cree una clave privada y una solicitud de certificado en la cartera.
[oracle@db23aigrid ~]$ orapki wallet add -wallet ${DB_TLS_DIR} -keysize 2048 -dn $TLS_DN -pwd ${DBUSR_PWD}-addext_san $TLS_SAN
-
Exporte la solicitud de certificado para firmarla.
[oracle@db23aigrid ~]$ orapki wallet export -wallet ${DB_TLS_DIR} -dn $TLS_DN -request ${DB_TLS_DIR}/db23gridpdb.csr -pwd ${DBUSR_PWD}
-
Muestre el contenido de la cartera. Habrá una entrada en Certificados solicitados.
orapki wallet display -wallet ${DB_TLS_DIR}
-
Visualice el contenido del archivo de solicitud de firma de certificado (CSR).
cat ${DB_TLS_DIR}/db23gridpdb.csr
-
-
Firme e importe el certificado del servidor.
-
Firme la CSR mediante la cartera raíz autofirmada.
[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}
-
Visualice el certificado de usuario del servidor firmado.
cat ${DB_TLS_DIR}/db23gridpdb-signed.crt
-
Importe el certificado de usuario del servidor de base de datos firmado a la cartera de base de datos.
[oracle@db23aigrid ~]$ orapki wallet add -wallet ${DB_TLS_DIR} -user_cert -cert ${DB_TLS_DIR}/db23gridpdb-signed.crt -pwd ${DBUSR_PWD}
-
Visualice el contenido de la cartera y asegúrese de que el certificado de usuario del servidor de base de datos ahora se muestra en Certificados de usuario. La cartera que utilizará para el servidor de base de datos y el listener ya están listos para su uso.
orapki wallet display -wallet ${DB_TLS_DIR}
-
-
Desplegar archivos de cartera.
-
Copie los archivos de cartera del servidor de base de datos.
[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}
-
Exportar el certificado.
[oracle@db23aigrid ~]$ orapki wallet export -wallet ${ROOT_TLS_DIR} -dn $TLS_DN -cert ${ROOT_TLS_DIR}/rootCA.crt -pwd ${DBUSR_PWD}
-
-
Confíe en el sistema de CA raíz como usuario
root
.-
Ejecute el comando
[root@db23ailvm etc]# cp -v /home/oracle/wallet_tls/certificates/rootCA/rootCA.crt /etc/pki/catrust/source/anchors/
. -
Ejecute el comando
[root@db23ailvm etc]# update-ca-trust extract
. -
Defina los permisos de archivo adecuados.
cd /etc/ORACLE/WALLETS/ chmod -R 755 oracle/
-
Tarea 1.3: Configuración de Oracle para Comunicación TLS
-
Edite
sqlnet.ora
para TLS unidireccional y agregue las siguientes líneas.[oracle@db23aigrid ~]$ cd $ORACLE_HOME/network/admin [oracle@db23aigrid ~]$ vi sqlnet.ora
SSL_CLIENT_AUTHENTICATION = FALSE
-
Edite
tnsnames.ora
y asegúrese de que se agregan entradas tanto para TCP como para TCPS para la base de datos PDB.Ajuste los valores según su entorno:
[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)))
Tarea 1.4: Configuración del Listener con TLS
-
Si utiliza Oracle Grid Infrastructure, siga estos pasos:
-
Ejecute los siguientes comandos.
sudo su - grid srvctl stop listener srvctl modify listener -p "TCP:1521/TCPS:1522" srvctl config listener | grep "End points"
-
Edite el archivo
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
-
Reinicie el listener.
``` $ srvctl start listener ```
O bien:
-
-
Si utiliza Oracle Linux Volume Manager, siga estos pasos:
-
Ejecute el siguiente comando.
cd $ORACLE_HOME/network/admin lsnrctl stop
-
Edite
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
-
Reinicie el listener.
lsnrctl start
-
Tarea 1.5: Validación de la conectividad TLS
-
Pruebe el TCP (no TLS).
$ sqlplus system/QAZxswedc123##@DB23GRIDPDB SQL> SELECT sys_context('USERENV', 'NETWORK_PROTOCOL') as network_protocol FROM dual; NETWORK_PROTOCOL Tcp
-
Prueba del TCPS (TLS activado)
$ sqlplus system/QAZxswedc123##@DB23GRIDPDB_TLS SQL> SELECT sys_context('USERENV', 'NETWORK_PROTOCOL') as network_protocol FROM dual; NETWORK_PROTOCOL Tcps
Tarea 1.6: Configuración del host de cliente para TLS
Nota: Requisitos para esta tarea.
Instancia informática de OCI que ejecuta Oracle Linux 8.
Cliente de Oracle Database 23ai para Linux. Para obtener información detallada, consulte Oracle 23ai client installation.
Copie los archivos de certificado del servidor de base de datos.
Siga los pasos para configurar el host de cliente:
-
Copie los archivos de cartera y certificado del servidor de base de datos. Puede utilizar cualquier herramienta de transferencia de archivos preferida para mover estos archivos del servidor de base de datos al cliente.
cd /home/oracle/wallet_tls/certificates/ tar -cvf rootCA.tar rootCA chmod 755 rootCA.tar cp rootCA.tar /tmp/
-
Configurar directorios de cliente.
[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
-
Transfiera los archivos de cartera y certificado del servidor de base de datos a la instancia de cliente.
[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
-
Extraer archivos de certificado.
[oracle@linuxclient23:~/wallet_db23aigrid_tls]$ tar -xvf rootCA.tar
-
Configure
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)))
-
Configure
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)))
Tarea 1.7: Prueba de la conexión desde la instancia de cliente
-
Pruebe el TCP (no TLS).
$ sqlplus system/QAZxswedc123##@DB23GRIDPDB SQL> SELECT sys_context('USERENV', 'NETWORK_PROTOCOL') as network_protocol FROM dual; NETWORK_PROTOCOL Tcp
-
Pruebe el TCPS (TLS activado).
$ sqlplus system/QAZxswedc123##@DB23GRIDPDB_TLS SQL> SELECT sys_context('USERENV', 'NETWORK_PROTOCOL') as network_protocol FROM dual; NETWORK_PROTOCOL Tcps
Tarea 2: Configuración de Microsoft Azure y la integración de bases de datos
Tarea 2.1: Registro del servidor de base de datos en Microsoft Azure
-
Inicie sesión en el portal de Microsoft Azure como administrador con privilegios de Microsoft Entra ID para registrar aplicaciones.
-
En la página Centro de administración del directorio activo de Azure, seleccione ID de Microsoft Entra.
-
Haga clic en Registros de aplicación y Nuevo registro.
-
Introduzca la siguiente información.
-
Nombre: introduzca
BaseDB-Server
. -
¿Quién puede utilizar esta aplicación o acceder a esta API?: seleccione Solo cuentas en este directorio organizativo.
-
-
Haga clic en Registrar.
-
En Aplicación registrada, haga clic en Exponer una API.
-
Haga clic en Agregar junto a URI de ID de aplicación y Guardar. Deje los demás valores por defecto.
-
Haga clic en Agregar un ámbito e introduzca la siguiente información.
-
Nombre de ámbito: introduzca
session:scope:connect
. -
¿Quién puede dar su consentimiento?: introduzca Administradores y usuarios.
-
Nombre mostrado de consentimiento de administrador: seleccione Conectar a base de datos.
-
Descripción de consentimiento de administrador: seleccione Conectar a base de datos.
-
Nombre mostrado de consentimiento de usuario: seleccione Conectar a base de datos.
-
Descripción de consentimiento de usuario: seleccione Conectar a base de datos.
-
Estado: seleccione Activado.
Haga clic en Agregar ámbito. Una vez agregado, asegúrese de copiar el valor de Ámbito.
-
-
En Configuración de token, agregue Reclamar como upn con Tipo de token como Acceso.
Nota: Esto es necesario como parte de la activación del token v2 del ID de Microsoft Entra. Para obtener más información sobre los tokens v2, consulte Enabling Microsoft Entra ID v2 Access Tokens.
También es posible que deba cambiar el manifiesto de la aplicación en el ID de Microsoft Entra para obtener un token v2.
-
En Roles de aplicación, agregue los siguientes roles de aplicación.
-
En Visión general, copie URI de ID de aplicación, ID de directorio (inquilino) e ID de aplicación (cliente).
-
Vaya a Inicio, Aplicaciones empresariales, BaseDB-Servidor y haga clic en Agregar usuario/grupo para asignar usuarios.
-
En Usuarios, seleccione el usuario. Al generar el token de acceso, este usuario asignado se utilizará para la conexión única.
-
En Seleccionar un rol, seleccione pdb.users, haga clic en Seleccionar y Asignar.
-
Repita los pasos 13 y 14 para el mismo usuario y asigne dba.role.
Tarea 2.2: Registro del cliente de base de datos en Microsoft Azure
-
Registre la aplicación cliente de base de datos con la siguiente información.
-
Nombre: introduzca
BaseDB-Client
. -
Tipos de cuenta soportados: seleccione Solo cuentas en este directorio organizativo.
-
Redirigir URI: introduzca Cliente público/nativo:
<http://localhost>
.
-
-
En Gestionar, haga clic en Permisos de API y en Agregar un permiso. Seleccione API que utiliza mi organización, BaseDB-Server, Permisos delegados, Permiso como session:scope:connect y haga clic en Agregar permisos.
-
En Visión general, copie el URI de ID de aplicación y el ID de directorio (inquilino).
Tarea 2.3: Configuración del servidor de base de datos para Microsoft Azure
Ejecute las siguientes consultas para configurar Microsoft Azure AD como proveedor de identidad y para crear usuarios y roles globales de base de datos.
-
Compruebe el proveedor de identidad actual en la base de datos PDB.
SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME='identity_provider_type';
-
Defina Microsoft Azure como proveedor de identidad.
ALTER SYSTEM SET IDENTITY_PROVIDER_TYPE=AZURE_AD SCOPE=BOTH;
-
Validar proveedor de identidad actualizado.
SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME='identity_provider_type';
-
Defina la configuración del proveedor de identidad. Sustituya
application_id_uri
,tenant_id
yapp_id
por valores copiados en la tarea 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;
-
Crear usuarios globales y roles en la base de datos.
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';
-
Otorgar privilegios a usuarios y roles.
GRANT CREATE SESSION TO allusers; GRANT CREATE SESSION TO hrapp; GRANT pdb_dba TO dba_azure;
Tarea 2.4: Configuración de la utilidad de ayuda para generar el token de acceso de Microsoft Azure
En esta tarea, utilizaremos una utilidad de Python para generar un token de acceso que se guardaría en un archivo y, posteriormente, SQL*Plus haría referencia a él. Esta utilidad requiere que se ejecute el módulo MSAL.
-
Guarde la utilidad Python desde aquí: Get-Token.py.
-
En el siguiente código de Python, sustituya el valor de
scope
por el valor copiado en la tarea 2.1.8. De forma similar, actualice los valores declient_id
ytenant_id
con los valores de la tarea 2.2.3. -
Ejecute el código Python con el siguiente comando.
python ./get-token.py
-
Si todo está configurado correctamente, debe disparar un redireccionamiento del explorador al portal de Microsoft Azure para la autenticación del usuario. Tras la autenticación, se generará un archivo de token en el directorio donde se ejecutó el comando de Python, que contiene el token de acceso. El token de acceso y el token de refrescamiento también se imprimirán en la ventana de terminal.
-
(Opcional), puede validar el token generado navegando aquí: jwt.io y pegando la cadena de token en el campo Codificado. El campo Decoded muestra información sobre la cadena de token.
Tarea 2.5: Conexión mediante SQL*PLUS
-
Pruebe la conexión del token de Microsoft Azure mediante 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)))
-
Verifique el usuario conectado.
Nota: Una vez conectado, puede ejecutar las siguientes consultas para recuperar la información específica de la sesión del usuario.
- La variable CURRENT_USER devuelve el usuario actual que está activo.
- ALLUSERS es el usuario de esquema compartido que se asignó mediante los roles de aplicación de Microsoft Entra ID.
- AUTHENTICATED_IDENTITY representa el usuario autenticado desde el ID de Microsoft Entra.
- ENTERPRISE_IDENTITY devuelve el GUID del usuario autenticado del ID de Microsoft Entra.
- SESSION_ROLES devuelve la lista combinada de roles otorgados localmente y otorgados mediante asignaciones globales mediante roles de aplicación de Microsoft Entra ID.
-
Ejecute la siguiente consulta para verificar el usuario actual.
SELECT SYS_CONTEXT ('USERENV','CURRENT_USER') FROM DUAL;
Salida:
SYS_CONTEXT('USERENV','CURRENT_USER') ALLUSERS
-
Ejecute la siguiente consulta para verificar el usuario autenticado.
SELECT SYS_CONTEXT ('USERENV','AUTHENTICATED_IDENTITY') FROM DUAL;
Salida:
SYS_CONTEXT('USERENV','AUTHENTICATED_IDENTITY') <anujtrip.ai@gmail.com>
-
Ejecute la siguiente consulta para verificar el GUID del usuario autenticado.
SELECT SYS_CONTEXT ('USERENV','ENTERPRISE_IDENTITY') FROM DUAL;
Salida:
SYS_CONTEXT('USERENV','ENTERPRISE_IDENTITY') 7eb35b90-dcxxx5-bc0b-48789368e9cf
-
Ejecute la siguiente consulta para verificar los roles de aplicación.
SELECT * FROM SESSION_ROLES;
Salida:
ROLE DBA_AZURE PDB_DBA CONNECT
Pasos Siguientes
Con la autenticación basada en Microsoft Entra ID implementada correctamente, puede alinear los roles de usuario y las políticas de acceso mediante una gobernanza de identidad centralizada. Al aprovechar las asignaciones globales para usuarios y roles de esquema compartido, puede optimizar el control de acceso y reducir la complejidad administrativa. Además, es esencial supervisar las sesiones de los usuarios y los patrones de acceso para mejorar la seguridad y garantizar el cumplimiento de las políticas de la organización. También debe considerar la posibilidad de ampliar esta integración a otras bases de datos o aplicaciones para mantener una gestión de identidad coherente en toda la empresa.
Enlaces relacionados
-
Uso de la autenticación de Azure Active Directory con Base Database Service
-
Autenticación y Autorización de Usuarios de Microsoft Azure para Bases de Datos Oracle
Agradecimientos
- Autores: Anuj Tripathi (arquitecto principal de nube, NA Solutions Engineering), Alex Kovuru (arquitecto principal de nube, NA Solutions Engineering)
Más recursos de aprendizaje
Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de formación gratuita en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en un explorador de Oracle Learning.
Para obtener documentación sobre el producto, visite Oracle Help Center.
Authenticate Oracle Database 23ai with Microsoft Entra ID
G33288-02
Copyright ©2025, Oracle and/or its affiliates.