使用 Kerberos 验证自治 AI 数据库用户
您可以将专用 Exadata 基础结构上的自治 AI 数据库配置为使用 Kerberos 网络验证协议来验证数据库用户。Kerberos 是一种强大的网络验证协议。它使用密钥加密通过提供用户到服务器验证来启用强验证。
-
Autonomous AI Database on Dedicated Exadata Infrastructure Support for Kerberos 可为 Oracle 用户提供单点登录和集中身份验证的优势。Kerberos 是依赖共享密钥的可信第三方验证系统。它假定第三方是安全的,并提供单点登录功能、集中密码存储、数据库链接验证和增强的 PC 安全性。它通过 Kerberos 验证服务器执行此操作。
-
Kerberos 系统围绕票证的概念展开。票证是一组标识用户或服务的电子信息。票证标识您和您的网络访问权限。
-
在基于 Kerberos 的验证中,可以透明地将请求单发送到密钥分发中心 (Key Distribution Center,KDC)。密钥分发中心将验证您的身份,并授予您访问数据库的票证。
Kerberos 验证系统的组件
概述了 Kerberos 验证系统。
-
领域将建立验证管理域。每个领域都有自己的 Kerberos 数据库,其中包含该特定管理域的用户和服务。
-
门票由密钥分发中心 (KDC) 颁发。客户机向数据库服务器提供票证,以证明其身份的真实性。每个票证都有到期和续订时间。
-
Keytab 用于存储一个或多个主体的长期密钥。通过调用工具
kadmin.local(对于 MIT 密钥分发中心)或ktpass(对于 Active Directory 密钥分发中心)生成密钥表文件。 -
主用户是 Key Distribution Center 数据库中的条目。为每个用户、主机或服务指定一个主体。主体是密钥分发中心可以为其分配票证的唯一标识。
-
自治 AI 数据库中的 Kerberos 支持对构成服务主体名称的各种组件使用以下值:
| 服务主体组件 | 自治 AI 数据库的价值 |
|---|---|
kinstance |
可以从 使用以下查询获取 注意:这将是 TNS 连接字符串中找到的 |
kservice |
在自治 AI 数据库中,您可以选择
在自治 AI 数据库实例上启用 Kerberos 后,使用以下查询查看 Kerberos 服务名称: |
REALM |
KDC 支持的任何领域。REALM 必须始终为大写。 |
要为自治 AI 数据库启用 Kerberos 验证,必须使 Kerberos 配置文件 (krb.conf) 和服务密钥表文件 (v5srvtab) 保持就绪。有关这些文件和获取这些文件的步骤的更多信息,请参见 Configuring Kerberos Authentication 。
关于自治 AI 数据库上的 Kerberos 验证的注释
在专用 Exadata 基础结构上的自治 AI 数据库上继续进行 Kerberos 验证之前,请查看以下说明:
-
如果为自治 AI 数据库启用 Kerberos 验证,则仍可以为数据库使用基于密码的数据库验证。
-
随时只能对自治 AI 数据库使用一种外部验证方法。也就是说,您随时只能启用 Oracle Cloud Infrastructure (IAM)、Centrally Managed User with Active Directory (CMU-AD)、Azure AD 或 Kerberos 验证方案。
注:唯一的例外是在 CMU-AD 上配置 Kerberos 验证,以便为 Microsoft Active Directory 用户提供 CMU-AD Kerberos 验证。
-
以下工具不支持 Kerberos 验证:
-
Oracle Database API for MongoDB
-
Oracle REST Data Services
-
Oracle Machine Learning
-
APEX
-
Oracle Graph Studio
-
Oracle 数据库操作
-
-
可以启用 Kerberos 验证来验证 ADMIN 用户。您可以使用 Oracle Cloud Infrastructure (OCI) 控制台上的“重置密码”功能来重置 ADMIN 用户的密码,并在损坏的密钥表文件导致 ADMIN 用户的验证失败时重新获得访问权限。
-
自治 AI 数据库版本 19.27 或更高版本的 TCP 协议支持 Kerberos 验证。
-
DB_LINK 和具有 Autonomous Data Guard 的数据库不支持 Kerberos 验证。
在自治 AI 数据库上启用 Kerberos 验证
按照下面列出的步骤为专用 Exadata 基础结构上的自治 AI 数据库启用 Kerberos 验证:
-
由于在任何给定时间只能为自治 AI 数据库启用一个外部验证方案,因此请运行
DBMS_CLOUD_ADMIN.DISABLE_EXTERNAL_AUTHENTICATION过程以禁用已为您的数据库启用的任何外部验证方案。要运行该过程,您必须以 ADMIN 用户身份登录,或者对
DBMS_CLOUD_ADMIN具有EXECUTE权限。BEGIN DBMS_CLOUD_ADMIN.DISABLE_EXTERNAL_AUTHENTICATION; END; / -
获取 Kerberos 配置文件:
krb.conf和服务密钥表文件v5srvtab。有关这些文件以及获取这些文件所需的步骤的更多信息,请参见 Configuring Kerberos Authentication in Oracle Database 19c Security Guide 或 Oracle Database 26ai Security Guide 。 -
将 Kerberos 配置文件
krb.conf和v5srvtab复制到对象存储中的存储桶。注:Oracle 建议将 Kerberos 配置文件存储在对象存储的专用存储桶中。
如果您使用的是 Oracle Cloud Infrastructure 对象存储,请参阅将数据放置到对象存储以了解有关上载文件的详细信息。
-
要将 Kerberos 作为自治 AI 数据库的外部验证,请运行
DBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATION过程并使用paramsJSON 参数传入位置 URI。必须将配置文件krb.conf和v5srvtab放在location_uri参数中指定的对象存储位置。例如:
BEGIN DBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATION( type => 'KERBEROS', params => JSON_OBJECT('location_uri' value 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o', 'credential_name' value 'my_credential_name') ); END; /注:要为 Microsoft Active Directory 用户提供 CMU-AD Kerberos 验证,可以通过在上面的示例中将
type设置为CMU,在 CMU-AD 上启用 Kerberos 验证。在此示例中,
namespace-string是 Oracle Cloud Infrastructure 对象存储名称空间,bucketname是存储桶名称。有关详细信息,请参阅了解对象存储名称空间。在此步骤中使用的
credential_name是对象存储的身份证明。如果
location_uri是预先验证的 URL,则不需要提供credential_name。这将在数据库中创建一个名为
KERBEROS_DIR的目录对象,并使用凭证将 Kerberos 配置文件从对象存储位置下载到目录对象。可以使用
kerberos_service_name参数指定 Kerberos 服务名称。例如:BEGIN DBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATION( type =>'KERBEROS', params => JSON_OBJECT( 'location_uri' value 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o', 'credential_name' value 'my_credential_name' 'kerberos_service_name' value 'oracle' )); END; / -
启用 Kerberos 验证后,从对象存储中删除配置
krb.conf和v5srvtab。可以使用本地对象存储方法删除这些文件,或使用DBMS_CLOUD.DELETE_OBJECT从对象存储中删除文件。
有关对象存储的更多信息,请参见导航到 Oracle Cloud Infrastructure Object Storage and Create Bucket 。
有关更多信息,请参见 ENABLE_EXTERNAL_AUTHENTICATION Procedure 。
在自治 AI 数据库上禁用 Kerberos 验证
在数据库上启用任何其他外部验证方案之前,必须禁用运行 DBMS_CLOUD_ADMIN.DISABLE_EXTERNAL_AUTHENTICATION 过程的 Kerberos 验证。
要运行此过程,您必须以 ADMIN 用户身份登录,或者对 DBMS_CLOUD_ADMIN 具有 EXECUTE 权限。
BEGIN
DBMS_CLOUD_ADMIN.DISABLE_EXTERNAL_AUTHENTICATION;
END;
/
有关更多信息,请参见 DISABLE_EXTERNAL_AUTHENTICATION Procedure 。
注:要为 Microsoft Active Directory 用户提供 CMU-AD Kerberos 验证,必须继续配置 CMU-AD 验证而不禁用 Kerberos 验证。