使用 Kerberos 验证 Autonomous Database 用户
可以将 Autonomous Database on Dedicated Exadata Infrastructure 配置为使用 Kerberos 网络验证协议来验证数据库用户。Kerberos 是一种强大的网络验证协议。它使用密钥加密,通过提供用户到服务器的验证来启用强验证。
-
Autonomous Database on Dedicated Exadata Infrastructure 对 Kerberos 的支持为 Oracle 用户提供单点登录和集中身份验证的优势。Kerberos 是受信任的依赖于共享密钥的第三方验证系统。它假设第三方是安全的,并提供单点登录功能,集中式密码存储,数据库链接验证和增强的 PC 安全性。它通过 Kerberos 验证服务器执行此操作。
-
Kerberos 系统围绕票证的概念运行。票证是标识用户或服务的一组电子信息。票证标识您和您的网络访问权限。
-
在基于 Kerberos 的验证中,您可以透明地将票证请求发送到密钥分发中心 (Key Distribution Center,KDC)。密钥分发中心对您进行验证并授予您访问数据库的票证。
Kerberos 验证系统的组件
提供 Kerberos 验证系统的概述。
-
领域建立验证管理域。每个领域都有自己的 Kerberos 数据库,其中包含该特定管理域的用户和服务。
-
票证由密钥分发中心 (Key Distribution Center,KDC) 发布。客户机提供指向数据库服务器的票证,以演示其身份的真实性。每个票证都有到期和续订时间。
-
Keytabs 存储一个或多个主体的长期密钥。通过调用工具
kadmin.local
(对于 MIT 密钥分发中心)或ktpass
(对于 Active Directory 密钥分发中心)生成密钥表文件。 -
主体是密钥分发中心数据库中的条目。每个用户、主机或服务都有一个主体。主体是密钥分发中心可以向其分配门票的唯一标识。
-
Autonomous Database 中的 Kerberos 支持对构成服务主体名称的各种组件使用以下值:
服务主体组件 | Autonomous Database 的价值 |
---|---|
kinstance |
可以从 使用以下查询获取
注意: 这将是 TNS 连接字符串中找到的host 参数的值。
|
kservice |
在 Autonomous Database 上,您有两种
在 Autonomous Database 实例上启用 Kerberos 后,使用以下查询查看 Kerberos 服务名称:
|
REALM |
KDC 支持的任何领域。REALM 必须始终为大写。
|
要为 Autonomous Database 启用 Kerberos 验证,必须使 Kerberos 配置文件 (krb.conf
) 和服务密钥表文件 (v5srvtab
) 保持就绪。有关这些文件和获取这些文件的步骤的更多信息,请参见 Configuring Kerberos Authentication 。
有关 Autonomous Database 上的 Kerberos 验证的说明
在 Autonomous Database on Dedicated Exadata Infrastructure 上继续进行 Kerberos 验证之前,请查看以下说明:
- 如果为 Autonomous Database 启用 Kerberos 验证,您仍然可以为数据库使用基于密码的数据库验证。
- 随时只能对 Autonomous Database 使用一种外部验证方法。也就是说,您随时只能启用 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 用户验证失败时重新获得访问权限。
- 对于 Autonomous Database 版本 19.27 或更高版本,TCP 协议支持 Kerberos 验证。
- DB_LINKs 和具有 Autonomous Data Guard 的数据库不支持 Kerberos 验证。
在 Autonomous Database 上启用 Kerberos 验证
-
由于在任何给定时间只能为 an Autonomous Database 启用一个外部验证方案,因此请运行
DBMS_CLOUD_ADMIN.DISABLE_EXTERNAL_AUTHENTICATION
过程以禁用已为数据库启用的任何外部验证方案。要运行该过程,您必须以 ADMIN 用户身份登录,或者对DBMS_CLOUD_ADMIN
具有EXECUTE
特权。BEGIN DBMS_CLOUD_ADMIN.DISABLE_EXTERNAL_AUTHENTICATION; END; /
-
获取 Kerberos 配置文件:
krb.conf
和服务密钥表文件v5srvtab
。有关这些文件和获取这些文件所需的步骤的详细信息,请参见Oracle Database 19c Security Guide 或Oracle Database 23ai Security Guide 中的 Configuring Kerberos Authentication 。 -
将 Kerberos 配置文件
krb.conf
和v5srvtab
复制到对象存储中的存储桶。注意:
Oracle 建议将 Kerberos 配置文件存储在对象存储的专用存储桶中。如果您使用的是 Oracle Cloud Infrastructure 对象存储,请参阅将数据放入对象存储以了解有关上载文件的详细信息。
-
要启用 Kerberos 作为 Autonomous Database 的外部验证,请运行
DBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATION
过程并使用params
JSON 参数传入位置 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
是存储桶名称。有关更多信息,请参见 Understanding Object Storage Namespaces 。在此步骤中使用的
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 和创建存储桶。
有关更多信息,请参见ENABLE_EXTERNAL_AUTHENTICATION Procedure 。
在 Autonomous Database 上禁用 Kerberos 验证
在数据库上启用任何其他外部验证方案之前,必须禁用运行 DBMS_CLOUD_ADMIN.DISABLE_EXTERNAL_AUTHENTICATION
过程的 Kerberos 验证。
DBMS_CLOUD_ADMIN
具有 EXECUTE
特权。 BEGIN
DBMS_CLOUD_ADMIN.DISABLE_EXTERNAL_AUTHENTICATION;
END;
/
注意:
要为 Microsoft Active Directory 用户提供 CMU-AD Kerberos 验证,必须继续配置 CMU-AD 验证而不禁用 Kerberos 验证。