使用 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 进行基于推送的验证,可提供强大而集成的安全解决方案。
主要优点
- 增强安全性:针对基于密码的攻击和凭证盗窃提供更强大的保护。
- 简化用户体验:提供便捷的基于推送的身份验证,无需用户手动输入一次性代码。
- 全面覆盖:将安全性扩展到 CDB 根和 PDB 中的关键管理帐户(SYSDBA、SYSOPER 等)。
- 监管合规性:帮助满足严格的合规性要求,例如 PCI DSS 和 DORA。
- 细粒度控制:允许基于每个用户进行选择性 MFA 启用,从而提供灵活的部署策略。
- 无缝集成:无需对客户端进行任何更改或修改。
目标读者
本教程专门设计用于:
- IAM(Identity and Access Management,ID 和访问管理)专家
- 数据库管理员 (DBA)
- 安全分析师和审计员
目标
本教程的主要目的是演示如何为本地 Oracle Database 用户启用多因素验证 (MFA)。虽然 Oracle 支持将 MFA 与 OCI Identity and Access Management 或 Cisco Duo 等外部提供商集成,但本指南将重点介绍使用 Oracle Mobile Authenticator (OMA) 应用程序的基于推送的本机验证工作流。
Prerequisites
要完成本教程,需要以下组件:
- Oracle Database Instance:运行 2025 年 7 月数据库发行更新 (DBRU) 的 Oracle Database 23ai 实例 (23.9+) 或数据库 19c 实例。本指南使用 23ai OCI 基本数据库服务实例。
- 移动设备:安装了 Oracle Mobile Authenticator (OMA) 应用程序的 Android 或 iOS 智能手机。
- OCI 电子邮件传送:要发送 MFA 注册的电子邮件邀请,需要 OCI 电子邮件传送。此服务需要:
- 已批准的发件人和已验证的域
- 从数据库主机到 OCI 电子邮件传送端点的出站 Internet 访问。
-
有关详细信息,请参阅 OCI 电子邮件传送文档
电子邮件域:

批准的发件人:

任务 1:OCI 身份和访问管理配置
在启用多因素身份验证之前,必须在 OCI Identity and Access Management 身份域中配置 OAuth 应用程序。此应用程序至关重要,因为数据库的 MFA wallet 使用其凭证来验证身份验证令牌。
-
登录 OCI 控制台并导航到身份和安全、域。

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

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

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

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

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

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

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

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

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

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

-
验证应用程序角色,然后单击提交。

-
在 OAuth configuration 选项卡上, Client ID 和 Client secret 现在可用。
- 复制并安全存储:复制客户端 ID 和客户端密钥并将它们存储在安全位置。要显示密钥,请使用值旁边的菜单中的显示或复制选项。
-
激活应用程序:从操作下拉菜单中,选择激活以启用应用程序。

任务 2:用于电子邮件传送的 OCI Identity and Access Management Group 配置
要利用 OCI 电子邮件传送来发送 MFA 通知,必须先创建一个具有必要权限的专用 IAM 组。
-
登录 OCI 控制台并导航到身份和安全、域。选择当前身份域。单击 User Management 选项卡,向下滚动到 Groups(组),然后单击 Create group(创建组)。

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


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

-
提供策略的名称和说明(例如 MFA_Email_Delivery_Policy)。在策略构建器部分中,输入以下策略语句,然后单击创建。
允许组‘ OracleIdentityCloudService ’/’ EmailDeliveryServicesUsers ’使用区间 AlexKovuru 中的电子邮件系列。

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

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

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


-
登录到 OCI 控制台,然后导航到 Developer Services 、 Application Integration 、 Email Delivery 和 Configuration 。查找分配给您区域的 SMTP 发送信息。请注意 Public Endpoint 和 SMTP Port 值。

-
请注意,OCI 电子邮件传送仅允许从批准的发件人和注册的域发送电子邮件。(如先决条件 3 中所述)。
任务 3:为 MFA 配置数据库
此任务使用 Oracle Mobile Authenticator (OMA) 和 SMTP 集成为 Oracle 23ai 可插入数据库 (pluggable database,PDB) 配置多因素验证 (multi-factor authentication,MFA)。
-
使用 SYSDBA 权限连接到 PDB:
sqlplus "/as sysdba" -
为 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'; -
更新 sqlnet.ora:编辑文件并添加以下参数:
SQLNET.INBOUND_CONNECT_TIMEOUT=120 -
配置 Oracle Wallet:Oracle Wallet 用于安全地存储 OAuth 和 SMTP 凭证。检查 PDB GUID 和 Wallet 根
show parameter wallet_root; SELECT guid FROM v$containers WHERE name = 'DB23MFAPDB'; -
创建 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 -
创建 Oracle Wallet
orapki wallet create -wallet ./ -pwd <user_password> -auto_login -compat_v12 -
将您的 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' -
创建启用 MFA 的用户:使用 MFA 因素验证创建用户:
CREATE USER testmfa IDENTIFIED BY <user_password> AND FACTOR ‘OMA_PUSH’ AS ‘registered_emailid’;注意:电子邮件必须是注册了 OMA 应用程序的有效账户。否则,无法传送推送通知。
-
授予所需的角色:
GRANT CONNECT, RESOURCE TO testmfa; -
用户将收到一封电子邮件,其中包含完成其 OMA 注册的说明。此电子邮件将包含他们必须使用 Oracle Mobile Authenticator 应用程序扫描才能设置 MFA 的二维码。

任务 4:测试 MFA 验证
-
以新用户身份连接:
sqlplus testmfa/<user_password> -
批准 OMA 应用程序中的登录请求。

-
验证连接的用户:
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 帮助中心。
Enable MFA for Local Users in Oracle Database 23ai Using Oracle Mobile Authenticator (OMA)
G42857-01