注意:

将 Oracle Autonomous Database 与 Microsoft Entra ID 集成

简介

Oracle Autonomous Database 可以与 Microsoft Entra ID(ME-ID,以前称为 Azure Active Directory (Azure AD))集成。ME-ID 用户和应用程序可以使用 ME-ID 单点登录 (SSO) 身份证明登录,以获取 ME-ID OAuth2 访问令牌并访问数据库。

这是使用用户或应用程序首先从 ME-ID 请求的一个 ME-ID OAuth2 访问令牌完成的。此 OAuth2 访问令牌包含用户身份和数据库访问信息,然后发送到数据库。

目标读者

IAM 专业人员和管理员。

目标

先决条件

任务 1:使用 Microsoft Azure 应用程序注册注册 Oracle Autonomous Database

  1. 至少以云应用程序管理员身份登录到 Microsoft Azure 门户

    Microsoft Azure 门户

  2. 浏览到主页Azure Active Directory应用程序注册注册应用程序。输入名称作为 ADB-DB,然后单击注册。应用程序已创建。

    Microsoft Azure 门户

  3. 单击应用程序 ID URI:添加编辑应用程序 ID URI 并将 api: 替换为前面提到的租户域名,然后单击保存

    • 应用程序 ID URI:<tenancy_domain_name>/appid

      Microsoft Azure 门户

  4. 单击添加范围并输入以下详细信息,然后单击添加范围

    • 范围名称session:scope:connect

    • 谁可以同意?Admins and users

    • 管理同意书显示名称connect to database

    • 管理同意书说明connect to database

    • 用户内容显示名称connect to database

    • 用户内容说明connect to database

    • 状态Enabled

      Microsoft Azure 门户

  5. 单击概览应用程序角色创建应用程序角色,输入以下详细信息,然后单击应用

    • 显示名称pdb.users

    • 允许的成员类型Users/Groups

    • pdb.users

    • 说明all user access

    • 是否要启用此应用程序角色?Enabled

      Microsoft Azure 门户

      Microsoft Azure 门户

  6. 单击应用程序角色创建应用程序角色,输入以下详细信息,然后单击应用

    • 显示名称dba.role

    • 允许的成员类型Users/Groups

    • dba.role

    • 说明dba global role

    • 是否要启用此应用程序角色?Enabled

      Microsoft Azure 门户

  7. 单击应用程序角色创建应用程序角色,输入以下详细信息,然后单击应用

    • 显示名称hr.app

    • 允许的成员类型Applications

    • hr.app

    • 说明application

    • 是否要启用此应用程序角色?Enabled

      Microsoft Azure 门户

  8. 导航到主页企业应用程序ADB-DB分配用户和组

  9. 添加分配下,选择用户,然后选择您的用户。生成访问令牌时,此分配的用户将用于单点登录。

    • 选择角色下,选择 pdb.users

    • 单击选择

    • 单击分配

  10. 添加分配下,选择用户,然后选择您的用户。生成访问令牌时,此分配的用户将用于单点登录。

    • 选择角色下,选择 dba.role

    • 单击选择

    • 单击分配

任务 2:创建客户端应用程序注册

  1. 导航到主页应用程序注册注册应用程序,输入以下详细信息,然后单击注册

    • 名称ADB-Client

    • 支持的帐户类型Accounts in this organizational directory only

    • 重定向 URIPublic client/native - http://localhost

      Microsoft Azure 门户

  2. 导航到 API 权限,然后单击添加权限。在请求 API 权限下,选择我的组织使用的 APIADB-DB授权权限权限作为 session:scope:connect,然后单击添加权限

    Microsoft Azure 门户

  3. 单击公开 API应用程序 ID URI:添加编辑应用程序 ID URI 并将 api: 替换为租户域名

    Microsoft Azure 门户

任务 3:连接到 SQL 数据库

  1. 导航到 Oracle Autonomous Database 并单击 Database actions(数据库操作)下拉列表,选择 SQL 并输入以下查询。

    Microsoft Azure 门户

    SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME='identity_provider_type';
    

    OCI 门户

    identity_provider_type 当前设置为 NONE

  2. 运行数据库过程以将身份提供者设置为 Azure AD。

    BEGIN
    DBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATION(
    type =>'AZURE_AD',
    params => JSON_OBJECT('tenant_id' VALUE '<tenant_id>',
    'application_id' VALUE '<application_id>',
    'application_id_uri' VALUE '<application_id_uri>'),
    force => TRUE
    );
    END;
    

    OCI 门户

  3. 再次运行 SQL 查询以检查身份提供者。

    SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME='identity_provider_type';
    

    OCI 门户

    identity_provider_type 现在是 Azure AD

  4. 创建用户 - allusershrapp角色 - dba_azure

    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';
    
  5. 创建会话授予 - allusershrapp

    GRANT CREATE SESSION TO allusers;
    
    GRANT CREATE SESSION TO hrapp;
    
    GRANT pdb_dba TO dba_azure;
    

    OCI 门户

任务 4:导航到 Azure 门户

  1. 打开 Azure 门户并导航到主页应用程序注册ADB-Client 。复制应用程序(客户端)ID目录(租户)ID

    Microsoft Azure 门户

  2. 打开 Azure 门户并导航到主页应用程序注册ADB-DB 。复制范围

    Microsoft Azure 门户

任务 5:使用 MSAL Python 库获取 Microsoft 访问令牌

  1. 请参阅 Python 脚本以使用 AuthZ 流获取访问令牌,请参阅使用 MSAL Python 库获取 Microsoft Entra ID 令牌

  2. 在任务 4 中获取的脚本中替换 Client_idTenant_idScope

    修改 Python 脚本

任务 6:运行 Python 脚本

  1. 打开 PowerShell。验证 Python 版本和 pip 版本。

    python --version
    
    pip --version
    
  2. 使用以下命令执行 Python 脚本。您将被重定向到 Microsoft Azure Portal,您需要在其中验证自己。

    python ./get-token-for-user.py
    

    Windows Powershell

  3. 验证完成后,您将重定向到 PowerShell 并生成访问令牌。

    Azure

  4. 在本地计算机上保存访问令牌,提供名称为 token 并另存为文件类型 All Types

    Windows Powershell

  5. 根据您的环境使用连接字符串进行连接。按照 wallet 中的 TNS.ora 替换 hostnameaccess-token-path

    conn /@(description= (retry_count-20) (retry_delay=3) (address= (protocol=tcps) (port=1522) (host-adb. us-ashburn-1.oraclecloud. com)) (connect_data=(<hostname>))(security-(ss1_server_dn_match-yes)(TOKEN_AUTH-OAUTH)(TOKEN_LOCATION-"<access-token-path>")))
    

    您现在已成功连接到数据库。

    数据库连接

  6. 逐个执行以下 SQL 查询并观察输出以验证用户和角色。

    sqlplus /nolog
    
    SELECT SYS_CONTEXT ('USERENV','CURRENT_USER') FROM DUAL;
    
    SELECT SYS_CONTEXT ('USERENV','AUTHENTICATED_IDENTITY') FROM DUAL;
    
    SELECT SYS_CONTEXT ('USERENV','ENTERPRISE_IDENTITY') FROM DUAL;
    

    验证用户

    SELECT * FROM SESSION_ROLES;
    
    exit
    

    验证角色

    您已成功使用 OAuth ME-ID 访问令牌测试与 Autonomous Database 的连接。

确认

更多学习资源

浏览 docs.oracle.com/learn 上的其他实验室,或者通过 Oracle Learning YouTube 频道访问更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 以成为 Oracle Learning Explorer。

有关产品文档,请访问 Oracle 帮助中心