使用 Oracle Mobile Authenticator (OMA) 在 Oracle Database 23ai 中为本地用户启用 MFA

简介

Oracle 2025 年 7 月数据库发行版本更新 (DBRU) 引入了一项关键的安全增强功能:面向本地和混合数据库用户的原生多因素身份验证 (MFA) 。此新功能在 Oracle Database 23ai (23.9+) 中可用,并可向后移植到 19c(使用最新的 2025 年 7 月发行版更新),使您可以直接从移动设备使用第二个验证因素来保护传统数据库账户,例如“SCOTT”账户。这样就无需依赖外部身份提供者来支持 MFA。本指南将介绍使用 Oracle Mobile Authenticator (OMA) 应用程序实施 MFA 的步骤。

自治数据库

我们为什么需要此功能?

以前,为 Oracle Database 实施多因素身份验证需要与外部身份提供者(例如 Entra ID、OCI Identity and Access Management (IAM) 或 RADIUS)集成。对于无法访问这些支持 MFA 的目录(包括内部部署独立数据库、IaaS 部署或 Oracle Base Database Service 系统)的环境而言,此方法是一项重大挑战。

使用 2025 年 7 月数据库发行版更新 (DBRU) ,Oracle 现在可以在 Oracle Database 19c 和 23ai 中为本地数据库用户启用本机 MFA。此新功能支持使用 Oracle Mobile Authenticator (OMA)Cisco Duo 进行基于推送的验证,可提供强大而集成的安全解决方案。

主要优点

目标读者

本教程专门设计用于:

目标

本教程的主要目的是演示如何为本地 Oracle Database 用户启用多因素验证 (MFA)。虽然 Oracle 支持将 MFA 与 OCI Identity and Access Management 或 Cisco Duo 等外部提供商集成,但本指南将重点介绍使用 Oracle Mobile Authenticator (OMA) 应用程序的基于推送的本机验证工作流。

Prerequisites

要完成本教程,需要以下组件:

  1. Oracle Database Instance:运行 2025 年 7 月数据库发行更新 (DBRU) 的 Oracle Database 23ai 实例 (23.9+) 或数据库 19c 实例。本指南使用 23ai OCI 基本数据库服务实例。
  2. 移动设备:安装了 Oracle Mobile Authenticator (OMA) 应用程序的 Android 或 iOS 智能手机。
  3. OCI 电子邮件传送:要发送 MFA 注册的电子邮件邀请,需要 OCI 电子邮件传送。此服务需要:

任务 1:OCI 身份和访问管理配置

在启用多因素身份验证之前,必须在 OCI Identity and Access Management 身份域中配置 OAuth 应用程序。此应用程序至关重要,因为数据库的 MFA wallet 使用其凭证来验证身份验证令牌。

  1. 登录 OCI 控制台并导航到身份和安全、域

    自治数据库

  2. 选择当前域并查看其详细信息。记下域 URL(不包括端口号)。

    自治数据库

  3. 在身份域中注册 OAuth 客户端应用程序。这是 MFA 功能正常运行的必需步骤。单击 Integrated Applications(集成的应用程序),然后单击 Add application(添加应用程序)

    自治数据库

  4. 选择机密应用程序,然后单击启动工作流

    自治数据库

  5. 输入所需的应用程序详细信息,例如名称和说明,然后单击提交

    自治数据库

  6. 单击刚刚创建的应用程序以查看其详细信息。

    自治数据库

  7. 导航到 OAuth 配置选项卡,然后单击编辑 OAuth 配置

    自治数据库

  8. Client configuration(客户端配置)部分中,选择 Configure this application as a client now(立即将此应用程序配置为客户端)。** 在 Allowed types(允许的授权类型)下,确保 Client Credentials(客户端身份证明)是所选的唯一选项。尚未单击“提交”。

    自治数据库

  9. 向下滚动到应用程序角色部分并启用它。

    自治数据库

  10. 单击添加应用程序角色按钮。

    自治数据库

  11. 添加角色 User Administrator,Identity Domain Administration and MFA Client ,然后单击添加按钮。

    自治数据库

  12. 验证应用程序角色,然后单击提交

    自治数据库

  13. OAuth configuration 选项卡上, Client IDClient secret 现在可用。

任务 2:用于电子邮件传送的 OCI Identity and Access Management Group 配置

要利用 OCI 电子邮件传送来发送 MFA 通知,必须先创建一个具有必要权限的专用 IAM 组。

  1. 登录 OCI 控制台并导航到身份和安全。选择当前身份域。单击 User Management 选项卡,向下滚动到 Groups(组),然后单击 Create group(创建组)

    自治数据库

  2. 为新组提供名称(例如 EmailDeliveryServicesUsers)。添加将负责管理此组的电子邮件传送服务的相应用户。

    自治数据库

    自治数据库

  3. 为电子邮件传送创建 IAM 策略。要允许 IAM 组发送电子邮件通知,必须创建策略来为其授予必要的权限。登录到 OCI 控制台,导航到身份和安全、策略,然后单击创建策略

    自治数据库

  4. 提供策略的名称说明(例如 MFA_Email_Delivery_Policy)。在策略构建器部分中,输入以下策略语句,然后单击创建

    允许组‘ OracleIdentityCloudService ’/’ EmailDeliveryServicesUsers ’使用区间 AlexKovuru 中的电子邮件系列。

    自治数据库

  5. 最后,您需要创建数据库将使用的 SMTP 身份证明。登录到 OCI 控制台,导航到身份和安全我的概要信息,然后单击保存的密码选项卡。然后转到 SMTP 凭证,然后单击 Generate Credentials

    自治数据库

  6. 生成 SMTP 凭证,并确保立即复制 SMTP 用户名和密码。

    自治数据库

    重要提示:密码将仅显示一次,因此您必须先保存密码,然后才能关闭窗口。

    自治数据库

    自治数据库

  7. 登录到 OCI 控制台,然后导航到 Developer ServicesApplication IntegrationEmail DeliveryConfiguration 。查找分配给您区域的 SMTP 发送信息。请注意 Public EndpointSMTP Port 值。

    自治数据库

  8. 请注意,OCI 电子邮件传送仅允许从批准的发件人和注册的域发送电子邮件。(如先决条件 3 中所述)。

任务 3:为 MFA 配置数据库

此任务使用 Oracle Mobile Authenticator (OMA) 和 SMTP 集成为 Oracle 23ai 可插入数据库 (pluggable database,PDB) 配置多因素验证 (multi-factor authentication,MFA)。

  1. 使用 SYSDBA 权限连接到 PDB:

     sqlplus "/as sysdba"
    
  2. 为 MFA 配置可插入数据库 (Pluggable Database,PDB),您需要设置以下参数。MFA_SENDER_EMAIL_ID 参数必须设置为已在 OCI 电子邮件传送中配置的已批准发件人。

     ALTER SYSTEM SET MFA_OMA_IAM_DOMAIN_URL ='https://idcs-bc1a4xxxxxxxxxxxxxxxx3744.identity.oraclecloud.com'; (from Task 1- step 2)
     ALTER SYSTEM SET MFA_SMTP_HOST ='smtp.email.us-pxxxxix-1.oci.oraclecloud.com'; (from Task 2- step 7)
     ALTER SYSTEM SET MFA_SMTP_PORT = 5x7; (from Task 2- step 7)
        
     ALTER SYSTEM SET MFA_SENDER_EMAIL_ID ="alx.test@alxreviews.com"; (from Prerequisites - step 3)
            
     ALTER SYSTEM SET MFA_SENDER_EMAIL_DISPLAYNAME = 'DB Admin';
    
  3. 更新 sqlnet.ora:编辑文件并添加以下参数:

     SQLNET.INBOUND_CONNECT_TIMEOUT=120
    
  4. 配置 Oracle Wallet:Oracle Wallet 用于安全地存储 OAuth 和 SMTP 凭证。检查 PDB GUID 和 Wallet 根

     show parameter wallet_root;
     SELECT guid FROM v$containers WHERE name = 'DB23MFAPDB';
    
  5. 创建 MFA Wallet 目录:

     mkdir -p /opt/oracle/dcs/commonstore/wallets/DBS23MFA_k3x_phx/3B36E010Dxxxxxxxxxxxx40A7AC6/mfa
     cd /opt/oracle/dcs/commonstore/wallets/DBS23MFA_k3x_phx/3B36E010Dxxxxxxxxxxxx40A7AC6/mfa
    
  6. 创建 Oracle Wallet

     orapki wallet create -wallet ./ -pwd <user_password> -auto_login -compat_v12
    
  7. 将您的 MFA 身份证明安全地存储在 Oracle Wallet 中。数据库依赖于此 wallet 来访问 OAuth 客户端和 SMTP 身份证明。重要的是,每个身份证明的别名必须与下面列出的预定义值完全匹配。

    必需的别名及其对应的身份证明:

    • oracle.security.mfa.oma.clientid → OAuth 客户机 ID(来自任务 1 –步骤 12)
    • oracle.security.mfa.oma.clientsecret → OAuth 客户机密钥(来自任务 1- 步骤 12)
    • oracle.security.mfa.smtp.user →在 OCI 用户配置文件中生成的 SMTP 用户名(从任务 2 –步骤 6)
    • oracle.security.mfa.smtp.password →为用户生成的 SMTP 密码(从任务 2 到步骤 6)

    可以使用 orapki 实用程序创建 wallet 并添加这些凭证。

     orapki secretstore create_entry -wallet ./ -pwd <user_password> -alias oracle.security.mfa.oma.clientid    -secret a9cdb456cdxxxxxxxxxxxx31c316
        
     orapki secretstore create_entry -wallet ./ -pwd <user_password> -alias oracle.security.mfa.oma.clientsecret -secret idcscs-a263de20-xxxxxxxxxxxx-207f5e56e1ad
        
     orapki secretstore create_entry -wallet ./ -pwd <user_password> -alias oracle.security.mfa.smtp.user        -secret ocid1.user.oc1..aaaa...@ocid1.tenancy.oc1..aaaa....
        
     orapki secretstore create_entry -wallet ./ -pwd <user_password> -alias oracle.security.mfa.smtp.password    -secret '[4lnl0rxxxxxxxxxxxxUgobB'
    
  8. 创建启用 MFA 的用户:使用 MFA 因素验证创建用户:

     CREATE USER testmfa IDENTIFIED BY <user_password> 
     AND FACTOR ‘OMA_PUSH’ AS ‘registered_emailid’;
    

    注意:电子邮件必须是注册了 OMA 应用程序的有效账户。否则,无法传送推送通知。

  9. 授予所需的角色:

     GRANT CONNECT, RESOURCE TO testmfa;
    
  10. 用户将收到一封电子邮件,其中包含完成其 OMA 注册的说明。此电子邮件将包含他们必须使用 Oracle Mobile Authenticator 应用程序扫描才能设置 MFA 的二维码。

    自治数据库

任务 4:测试 MFA 验证

  1. 以新用户身份连接:

     sqlplus testmfa/<user_password>
    
  2. 批准 OMA 应用程序中的登录请求。

    自治数据库

  3. 验证连接的用户:

     SHOW USER;
     SELECT * FROM SESSION_ROLES;
    

确认

作者 — Alex Kovuru(首席云架构师)

贡献者 — Indiradarshni Balasundaram(高级云工程师)

更多学习资源

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

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