Observação:
- Este tutorial requer acesso ao Oracle Cloud. Para se inscrever em uma conta gratuita, consulte Conceitos Básicos do Oracle Cloud Infrastructure Free Tier.
- Ele usa valores de exemplo para credenciais, tenancy e compartimentos do Oracle Cloud Infrastructure. Ao concluir seu laboratório, substitua esses valores por valores específicos do seu ambiente de nuvem.
Autenticar o Oracle Database 23ai com o Microsoft Entra ID
Introdução
O Oracle Database pode ser integrado ao Microsoft Entra ID (antigo Microsoft Azure Active Directory) para permitir acesso seguro e sem senha ao banco de dados. Com essa configuração, usuários e serviços podem se conectar ao banco de dados usando suas credenciais do Microsoft Entra ID por meio do Single Sign-On (SSO).
A autenticação é tratada por meio de um token de acesso OAuth2 emitido pelo ID Entra da Microsoft. Esse token, que inclui a identidade do usuário e os detalhes de acesso, é passado para o Oracle Database. O cliente de banco de dados valida o formato e a expiração do token antes de permitir o acesso, garantindo um processo de conexão seguro e simplificado.
Por que precisamos disso?
À medida que as organizações priorizam cada vez mais a segurança, o gerenciamento do acesso a dados confidenciais torna-se fundamental. O Oracle Database, em colaboração com o Microsoft Entra ID, permite autenticação segura sem senhas, aproveitando sistemas modernos de gerenciamento de identidades para controle de acesso contínuo, escalável e robusto. Essa integração oferece suporte a uma ampla variedade de implementações Oracle, incluindo Oracle Autonomous Database, Oracle Exadata e Oracle Base Database Service, garantindo acesso consistente e seguro em diferentes ambientes.
Clientes e Ferramentas de Banco de Dados
Aplicativos e ferramentas que suportam tokens de ID do Microsoft Entra podem autenticar usuários diretamente por meio do ID do Microsoft Entra e transmitir o token de acesso do banco de dados à instância do Oracle Database por meio da API do cliente. As ferramentas de banco de dados existentes, como SQL*Plus
, podem ser configuradas para usar um token do Microsoft Entra ID armazenado em um arquivo. O token pode ser recuperado usando ferramentas auxiliares como Microsoft PowerShell, Azure CLI ou bibliotecas como Microsoft Authentication Library (MSAL) e salvo em um local de arquivo especificado. Posteriormente, o SQL*Plus faz referência a esse token ao estabelecer a conexão.
Observação: Este tutorial usa um script Python aproveitando o MSAL para adquirir tokens de segurança. Para obter mais informações, consulte Visão Geral da Biblioteca de Autenticação da Microsoft (MSAL).
Este tutorial o orienta por meio da configuração da autenticação do Microsoft Entra ID para o Oracle Base Database 23ai, incluindo a configuração do TLS. Consulte a documentação específica do seu tipo de banco de dados: local, Exadata, DBaaS ou Autônomo. Observe que o TLS é pré-configurado para o Autonomous Database; portanto, você pode ignorar essa etapa.
Público-alvo
Administradores do Oracle Database e administradores do Oracle Cloud Infrastructure Identity and Access Management (OCI IAM).
Objetivos
-
Configure o TLS (Transport Layer Security) para o banco de dados.
-
Registre o Servidor de Banco de Dados no Microsoft Azure.
-
Registre o Cliente de Banco de Dados no Microsoft Azure.
-
Configure o Banco de Dados para integração do Microsoft Azure.
-
Configure o Cliente usando um script auxiliar.
-
Teste a conexão usando o SQL*Plus.
Pré-requisitos
-
Uma conta do Microsoft Azure com privilégios administrativos.
-
Oracle Database 23ai no serviço Oracle Base Database.
-
Definições da Rede:
-
O servidor do Oracle Database deve ser capaz de solicitar a chave pública do Microsoft Entra ID para validar a autenticidade e a validade dos tokens emitidos e confirmar que eles foram emitidos por uma autoridade confiável.
-
Dependendo da configuração de conectividade de rede, as regras de roteamento e segurança apropriadas devem ser configuradas. Um gateway NAT pode ser usado para rotear o tráfego de saída e as regras de saída devem ser restritas apenas a intervalos de IPs públicos do Microsoft Azure na porta 443.
-
-
Configuração de TLS:
- Ao enviar tokens do Microsoft Entra ID do cliente de banco de dados para o servidor de banco de dados, estabeleça uma conexão TLS. Neste tutorial, vamos configurar TLS unidirecional (configurando TLS com um certificado raiz autoassinado), onde apenas o servidor fornece um certificado para o cliente autenticar-se. O cliente não precisa ter um certificado de cliente separado para autenticar-se no servidor.
-
Configure um software cliente Oracle 23ai em execução no Oracle Linux.
-
Instale o Python 3.6 ou posterior, com o módulo MSAL. Mesmo que o Python 3.6 funcione, a versão recomendada é
3.7+
. Usepip
para instalar o módulo necessário.
Tarefa 1: Configurar o TLS para o Oracle Database 23ai
Tarefa 1.1: Preparar o Sistema Operacional (SO) para Configuração do TLS
-
Faça log-in no servidor de banco de dados e alterne para o usuário
root
para configurar o diretório.[opc@db23aigrid ~]$ sudo su - [root@db23aigrid ~]# mkdir -p /etc/ORACLE/WALLETS/oracle [root@db23aigrid ~]# cd /etc/ [root@db23aigrid etc]# chown -R oracle:oinstall ORACLE/
-
Obtenha o nome do host como o usuário
oracle
.[root@db23aigrid etc]# su - oracle [oracle@db23aigrid admin]$ hostname -f
Amostra de saída:
db23aigrid.sub10121249210.dbsecvcn.oraclevcn.com
-
Conectar-se ao banco de dados.
[oracle@db23aigrid admin]$ sqlplus "/as sysdba"
-
Verifique o diretório raiz da wallet.
SQL> show parameter wallet_root;
Amostra de saída:
NAME TYPE VALUE ---------- ------ ---------------------------------------------------- wallet_root string /opt/oracle/dcs/commonstore/wallets/DB23GRID_w54_iad
-
Verifique o nome e o GUID do Banco de Dados Plugável (PDB).
SQL> show pdbs;
Amostra de saída:
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';
Amostra de saída:
GUID -- ----------------------------- 32435DD0A1EC55xxx0639400000A7225
-
Crie diretórios locais para wallet e certificados.
[oracle@db23aigrid ~]$ mkdir -p /home/oracle/wallet_tls/certificates/rootCA [oracle@db23aigrid ~]$ mkdir -p /home/oracle/wallet_tls/certificates/db_wallet
-
Crie o diretório TLS do banco de dados no caminho raiz da wallet usando o GUID do PDB.
[oracle@db23aigrid ~]$ mkdir -p /opt/oracle/dcs/commonstore/wallets/DB23GRID_w54_iad/32435DDxxxxxx7E0639400000A7225/tls
-
Atualize
.bashrc
com variáveis de ambiente relacionadas ao TLS.[oracle@db23aigrid ~]$ vi ~/.bashrc
Adicione o seguinte e ajuste os valores de acordo com seu ambiente.
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
-
Aplicar as alterações
[oracle@db23aigrid ~]$ . ~/.bashrc
Tarefa 1.2: Configurar Wallet e Certificado TLS
-
Crie e configure a wallet raiz.
-
Crie o wallet raiz.
[oracle@db23aigrid ~]$ orapki wallet create -wallet ${ROOT_TLS_DIR} -pwd ${DBUSR_PWD} -auto_login
-
Exiba o conteúdo da wallet; ela deve estar vazia.
[oracle@db23aigrid ~]$ orapki wallet display -wallet ${ROOT_TLS_DIR}
-
Crie o certificado autoassinado para a wallet da CA raiz.
[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
-
O diretório agora deve ter arquivos
cwallet.sso
eewallet.p12
.ls -l ${ROOT_TLS_DIR}
-
Exiba o conteúdo da wallet; ela deve ter um usuário e um certificado confiável.
orapki wallet display -wallet ${ROOT_TLS_DIR}
-
Exporte o certificado confiável da CA raiz para uso na criação da wallet do banco de dados.
[oracle@db23aigrid ~]$ orapki wallet export -wallet ${ROOT_TLS_DIR} -dn $TLS_DN -cert ${ROOT_TLS_DIR}/rootCA.crt -pwd ${DBUSR_PWD}
-
Exiba o conteúdo do arquivo
rootCA.crt
.cat ${ROOT_TLS_DIR}/rootCA.crt
-
-
Crie e configure a wallet do servidor (banco de dados).
-
Crie a wallet do banco de dados.
[oracle@db23aigrid ~]$ orapki wallet create -wallet ${DB_TLS_DIR} -pwd ${DBUSR_PWD} -auto_login
-
Adicione o certificado raiz confiável à wallet (obtenha-o do administrador do certificado).
[oracle@db23aigrid ~]$ orapki wallet add -wallet ${DB_TLS_DIR} -trusted_cert -cert ${ROOT_TLS_DIR}/rootCA.crt -pwd ${DBUSR_PWD}
-
Crie uma chave privada e uma solicitação de certificado na wallet.
[oracle@db23aigrid ~]$ orapki wallet add -wallet ${DB_TLS_DIR} -keysize 2048 -dn $TLS_DN -pwd ${DBUSR_PWD}-addext_san $TLS_SAN
-
Exporte a solicitação de certificado para assiná-la.
[oracle@db23aigrid ~]$ orapki wallet export -wallet ${DB_TLS_DIR} -dn $TLS_DN -request ${DB_TLS_DIR}/db23gridpdb.csr -pwd ${DBUSR_PWD}
-
Exiba o conteúdo da wallet. Haverá uma entrada em Certificados Solicitados.
orapki wallet display -wallet ${DB_TLS_DIR}
-
Exiba o conteúdo do arquivo CSR (certificate ssigning request, solicitação de assinatura de certificado).
cat ${DB_TLS_DIR}/db23gridpdb.csr
-
-
Assine e importe o certificado do servidor.
-
Assine o CSR usando a wallet raiz autoassinada.
[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}
-
Exiba o certificado do usuário do servidor assinado.
cat ${DB_TLS_DIR}/db23gridpdb-signed.crt
-
Importe o certificado de usuário do servidor de banco de dados assinado para a wallet do banco de dados.
[oracle@db23aigrid ~]$ orapki wallet add -wallet ${DB_TLS_DIR} -user_cert -cert ${DB_TLS_DIR}/db23gridpdb-signed.crt -pwd ${DBUSR_PWD}
-
Exiba o conteúdo da wallet. Certifique-se de que o certificado do usuário do servidor de banco de dados agora seja exibido em Certificados do Usuário. A wallet que você usará para o servidor de banco de dados e o listener agora está pronta para ser implantada para uso.
orapki wallet display -wallet ${DB_TLS_DIR}
-
-
Implante arquivos de wallet.
-
Copie os arquivos da wallet do servidor de banco de dados.
[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}
-
Exporte o certificado.
[oracle@db23aigrid ~]$ orapki wallet export -wallet ${ROOT_TLS_DIR} -dn $TLS_DN -cert ${ROOT_TLS_DIR}/rootCA.crt -pwd ${DBUSR_PWD}
-
-
Confie no sistema da CA raiz como o usuário
root
.-
Execute o comando
[root@db23ailvm etc]# cp -v /home/oracle/wallet_tls/certificates/rootCA/rootCA.crt /etc/pki/catrust/source/anchors/
. -
Execute o comando
[root@db23ailvm etc]# update-ca-trust extract
. -
Defina as permissões de arquivo apropriadas.
cd /etc/ORACLE/WALLETS/ chmod -R 755 oracle/
-
Tarefa 1.3: Configurar o Oracle para TLS Communication
-
Edite
sqlnet.ora
para TLS unidirecional e anexe as linhas a seguir.[oracle@db23aigrid ~]$ cd $ORACLE_HOME/network/admin [oracle@db23aigrid ~]$ vi sqlnet.ora
SSL_CLIENT_AUTHENTICATION = FALSE
-
Edite
tnsnames.ora
e certifique-se de que as entradas de TCP e TCPS sejam adicionadas para o banco de dados do PDB.Ajuste os valores de acordo com seu 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)))
Tarefa 1.4: Configurar Listener com TLS
-
Se você estiver usando o Oracle Grid Infrastructure, siga as etapas:
-
Execute os comandos a seguir.
sudo su - grid srvctl stop listener srvctl modify listener -p "TCP:1521/TCPS:1522" srvctl config listener | grep "End points"
-
Edite o arquivo
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 o listener.
``` $ srvctl start listener ```
Ou
-
-
Se você estiver usando o Oracle Linux Volume Manager, siga as etapas:
-
Execute o seguinte 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 o listener.
lsnrctl start
-
Tarefa 1.5: Validar Conectividade de TLS
-
Teste o TCP (não TLS).
$ sqlplus system/QAZxswedc123##@DB23GRIDPDB SQL> SELECT sys_context('USERENV', 'NETWORK_PROTOCOL') as network_protocol FROM dual; NETWORK_PROTOCOL Tcp
-
Testar o TCPS (TLS ativado)
$ sqlplus system/QAZxswedc123##@DB23GRIDPDB_TLS SQL> SELECT sys_context('USERENV', 'NETWORK_PROTOCOL') as network_protocol FROM dual; NETWORK_PROTOCOL Tcps
Tarefa 1.6: Configurar Host do Cliente para TLS
Observação: Pré-requisitos para esta tarefa.
Instância do OCI Compute executando o Oracle Linux 8.
Cliente 23ai do Oracle Database para Linux. Para obter informações detalhadas, consulte instalação do cliente Oracle 23ai.
Copie os arquivos de Certificado do servidor de banco de dados.
Siga as etapas abaixo para configurar o host do cliente:
-
Copie os arquivos de certificado e wallet do servidor de banco de dados. Você pode usar qualquer ferramenta de transferência de arquivos preferencial para mover esses arquivos do servidor de banco de dados para o cliente.
cd /home/oracle/wallet_tls/certificates/ tar -cvf rootCA.tar rootCA chmod 755 rootCA.tar cp rootCA.tar /tmp/
-
Definir diretórios 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
-
Transfira os arquivos de certificado e wallet do servidor de banco de dados para a instância do 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
-
Extrair arquivos 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)))
Tarefa 1.7: Testar a Conexão da Instância do Cliente
-
Teste o TCP (não TLS).
$ sqlplus system/QAZxswedc123##@DB23GRIDPDB SQL> SELECT sys_context('USERENV', 'NETWORK_PROTOCOL') as network_protocol FROM dual; NETWORK_PROTOCOL Tcp
-
Teste o TCPS (TLS ativado).
$ sqlplus system/QAZxswedc123##@DB23GRIDPDB_TLS SQL> SELECT sys_context('USERENV', 'NETWORK_PROTOCOL') as network_protocol FROM dual; NETWORK_PROTOCOL Tcps
Tarefa 2: Configurar o Microsoft Azure e a Integração de Banco de Dados
Tarefa 2.1: Registrar Servidor de Banco de Dados no Microsoft Azure
-
Faça log-in no portal do Microsoft Azure como administrador que tem privilégios do Microsoft Entra ID para registrar aplicativos.
-
Na página Central de administração do diretório Ativo do Azure, selecione Microsoft Entra ID.
-
Clique em Registros do aplicativo e em Novo registro.
-
Digite as seguintes informações.
-
Nome: Digite
BaseDB-Server
. -
Quem pode usar este aplicativo ou acessar esta API?: Selecione Contas somente neste diretório organizacional.
-
-
Clique em Registrar.
-
Em Aplicativo Registrado, clique em Expor uma API.
-
Clique em Adicionar ao lado de URI do ID do Aplicativo e Salvar. Deixe os outros valores como padrão.
-
Clique em Adicionar um escopo e especifique as informações a seguir.
-
Nome do escopo: Digite
session:scope:connect
. -
Quem pode consentir?: Digite Admins e usuários.
-
Nome para exibição do consentimento do administrador: Selecione Estabelecer conexão com o banco de dados.
-
Descrição do consentimento do administrador: Selecione Estabelecer conexão com o banco de dados.
-
Nome para exibição do consentimento do usuário: Selecione Estabelecer conexão com o banco de dados.
-
Descrição do consentimento do usuário: Selecione Estabelecer conexão com o banco de dados.
-
Estado: Selecione Ativado.
Clique em Adicionar escopo. Uma vez adicionado, certifique-se de copiar o valor do Escopo.
-
-
Em Configuração de token, adicione Claim como upn com Token type como Access.
Observação: Isso é necessário como parte da ativação do token v2 do Microsoft Entra ID. Para obter mais informações sobre tokens v2, consulte Ativando Tokens de Acesso do Microsoft Entra ID v2.
Talvez você também precise alterar o manifesto do aplicativo no Microsoft Entra ID para obter um token v2.
-
Em Atribuições de aplicativo, adicione as seguintes atribuições de aplicativo.
-
Em Visão Geral, copie URI do ID do Aplicativo, ID do Diretório (tenant) e ID do Aplicativo (cliente).
-
Navegue até Home, Aplicativos empresariais, BaseDB-Server e clique em Adicionar usuário/grupo para designar usuários.
-
Em Usuários, selecione seu usuário. Ao gerar o token de acesso, esse usuário designado será usado para sign-on único.
-
Em Selecionar uma atribuição, selecione pdb.users, clique em Selecionar e Designar.
-
Repita as etapas 13 e 14 para o mesmo usuário e designe dba.role.
Tarefa 2.2: Registrar Cliente de Banco de Dados no Microsoft Azure
-
Registre o aplicativo cliente de banco de dados com as informações a seguir.
-
Nome: Digite
BaseDB-Client
. -
Tipos de Conta Suportados: Selecione Contas somente neste diretório organizacional.
-
URI de Redirecionamento: Digite Cliente/nativo público -
<http://localhost>
.
-
-
Em Gerenciar, clique em Permissões de API e Adicionar uma permissão. Selecione APIs que minha organização usa, BaseDB-Server, Permissões delegadas, Permissão como session:scope:connect e clique em Adicionar permissões.
-
Em Visão Geral, copie URI do ID do Aplicativo e ID do Diretório (tenant).
Tarefa 2.3: Configurar Servidor de Banco de Dados para o Microsoft Azure
Execute as consultas a seguir para configurar o Microsoft Azure AD como provedor de identidades e para criar usuários e atribuições globais de banco de dados.
-
Verifique o provedor de identidades atual no banco de dados PDB.
SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME='identity_provider_type';
-
Defina o Microsoft Azure como o provedor de identidades.
ALTER SYSTEM SET IDENTITY_PROVIDER_TYPE=AZURE_AD SCOPE=BOTH;
-
Valide o provedor de identidades atualizado.
SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME='identity_provider_type';
-
Defina a configuração do provedor de identidades. Substitua
application_id_uri
,tenant_id
eapp_id
por valores copiados na Tarefa 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;
-
Criar usuários globais e atribuição no banco de dados.
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';
-
Conceda privilégios aos usuários e atribuições.
GRANT CREATE SESSION TO allusers; GRANT CREATE SESSION TO hrapp; GRANT pdb_dba TO dba_azure;
Tarefa 2.4: Configurar o Utilitário Auxiliar para Gerar o Token de Acesso do Microsoft Azure
Nesta tarefa, faremos uso de um utilitário Python para gerar um token de acesso que seria salvo em um arquivo e, posteriormente, referido pelo SQL*Plus. Este utilitário requer a execução do módulo MSAL.
-
Salve o utilitário Python aqui: Get-Token.py.
-
No código Python a seguir, substitua o valor de
scope
pelo valor copiado na Tarefa 2.1.8. Da mesma forma, atualize os valores declient_id
etenant_id
com os valores da Tarefa 2.2.3. -
Execute o código Python usando o comando a seguir.
python ./get-token.py
-
Se tudo estiver configurado corretamente, isso deverá acionar um redirecionamento do navegador para o portal do Microsoft Azure para autenticação do usuário. Na autenticação, um arquivo de token será gerado no diretório em que o comando Python foi executado, que contém o token de acesso. O Token de acesso e o Token de atualização também serão impressos na janela do terminal.
-
(Opcional), Você pode validar o token gerado navegando aqui: jwt.io e colando a string de token no campo Codificado. O campo Decodificado exibe informações sobre a string de token.
Tarefa 2.5: Fazer log-in usando SQL*PLUS
-
Teste o log-in do token do Microsoft Azure usando 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 o usuário conectado.
Observação: Depois de fazer log-in, você poderá executar as consultas a seguir para recuperar informações específicas da sessão do usuário.
- A variável CURRENT_USER retorna o usuário atual que está ativo.
- ALLUSERS é o usuário do esquema compartilhado que foi designado por meio das atribuições do aplicativo Microsoft Entra ID.
- AUTHENTICATED_IDENTITY representa o usuário autenticado do Microsoft Entra ID.
- ENTERPRISE_IDENTITY retorna o GUID do usuário autenticado do Microsoft Entra ID.
- SESSION_ROLES retorna a lista combinada de atribuições concedidas localmente e concedidas por meio de mapeamentos globais por meio de atribuições do aplicativo Microsoft Entra ID.
-
Execute a consulta a seguir para verificar o usuário atual.
SELECT SYS_CONTEXT ('USERENV','CURRENT_USER') FROM DUAL;
Saída:
SYS_CONTEXT('USERENV','CURRENT_USER') ALLUSERS
-
Execute a consulta a seguir para verificar o usuário autenticado.
SELECT SYS_CONTEXT ('USERENV','AUTHENTICATED_IDENTITY') FROM DUAL;
Saída:
SYS_CONTEXT('USERENV','AUTHENTICATED_IDENTITY') <anujtrip.ai@gmail.com>
-
Execute a consulta a seguir para verificar o GUID do usuário autenticado.
SELECT SYS_CONTEXT ('USERENV','ENTERPRISE_IDENTITY') FROM DUAL;
Saída:
SYS_CONTEXT('USERENV','ENTERPRISE_IDENTITY') 7eb35b90-dcxxx5-bc0b-48789368e9cf
-
Execute a consulta a seguir para verificar as atribuições do aplicativo.
SELECT * FROM SESSION_ROLES;
Saída:
ROLE DBA_AZURE PDB_DBA CONNECT
Próximas Etapas
Com a autenticação baseada em ID do Microsoft Entra implementada com sucesso, você pode alinhar funções de usuário e políticas de acesso por meio de governança de identidade centralizada. Aproveitando mapeamentos globais para usuários e atribuições de esquema compartilhado, você pode agilizar o controle de acesso e reduzir a complexidade administrativa. Além disso, é essencial monitorar as sessões do usuário e os padrões de acesso para melhorar a segurança e garantir a conformidade com as políticas organizacionais. Você também deve considerar estender essa integração a outros bancos de dados ou aplicativos para manter um gerenciamento de identidade consistente em toda a empresa.
Links Relacionados
-
Usar Autenticação do Azure Active Directory com o Base Database Service
-
Autenticando e Autorizando Usuários do Microsoft Azure para Bancos de Dados Oracle
Confirmações
- Autors - Anuj Tripathi (Arquiteto de Nuvem Principal, Engenharia de Soluções da NA), Alex Kovuru (Arquiteto de Nuvem Principal, Engenharia de Soluções da NA)
Mais Recursos de Aprendizagem
Explore outros laboratórios em docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal Oracle Learning YouTube. Além disso, visite education.oracle.com/learning-explorer para se tornar um Oracle Learning Explorer.
Para obter a documentação do produto, visite o Oracle Help Center.
Authenticate Oracle Database 23ai with Microsoft Entra ID
G33294-02
Copyright ©2025, Oracle and/or its affiliates.