DBMS_DCAT 程序包
DBMS_DCAT 程序包提供了功能和过程,可帮助自治 AI 数据库用户利用 OCI Data Catalog 的数据发现和集中元数据管理系统。
注:从版本 19.30 开始,Oracle AI Database 19c 以及从版本 23.26.1 开始的 Autonomous AI Database 26ai 支持 DBMS_DCAT。
数据目录从数据湖的对象存储资产中获取元数据。收集过程创建逻辑实体,可以将其视为包含列和关联数据类型的表。DBMS_DCAT 过程和函数将自治 AI 数据库连接到数据目录,然后将资产与数据库同步,从而创建受保护方案和外部表。然后,您可以使用这些外部表查询对象存储,从而轻松地将外部数据与存储在自治 AI 数据库中的数据联接起来。这极大地简化了管理流程;在多个 OCI 服务(包括自治 AI 数据库)之间共享一个集中管理的元数据存储。此外,还提供了自治 AI 数据库字典视图,可用于使用 SQL 检查数据目录的内容,并向您展示这些数据目录实体如何映射到自治 AI 数据库方案和表。
数据目录用户和角色
DBMS_DCAT 软件包支持同步的用户/方案、dcat_admin 用户和本地用户。用户必须具有 dcat_sync 角色才能使用此程序包。
数据目录用户
-
已同步用户/方案
同步的外部表按与数据资产/桶组合对应的数据库方案或用户设置的定制属性进行组织。同步的方案将在数据目录同步期间自动创建/删除。它们被创建为没有
CREATE SESSION特权的验证用户。同步的方案也使用 protected 子句创建,因此本地用户(甚至 PDB 管理员)无法更改这些方案,并且只能通过同步进行修改。 -
用户
dcat_admin用户
dcat_admin是本地数据库用户,可以运行同步并将对已同步表的READ权限授予其他用户或角色。该用户将创建为不具有CREATE SESSION特权的验证用户。 -
本地使用者
查询外部表的数据库用户必须由用户
dcat_admin或 ADMIN 显式授予对已同步的外部表的READ权限。默认情况下,同步完成后,只有用户dcat_admin和ADMIN有权访问同步的外部表。
数据目录角色
-
dcat_syncdcat_sync角色具有使用DBMS_DCAT软件包所需的所有特权。用户必须具有此角色才能使用 API 导航数据目录并运行同步。
所需的身份证明和 IAM 策略
本主题介绍向 Autonomous AI Database 用户授予管理数据目录和从对象存储读取的权限所需的 Oracle Cloud Infrastructure Identity and Access Management (IAM) 用户身份证明和策略。
OCI 数据目录身份证明和策略要求:
-
需要具有管理数据目录实例的权限的身份证明对象。支持包含 OCI 本机验证的身份证明对象。不支持基于验证令牌用户主用户和资源主用户身份证明的身份证明对象。
有关管理凭证的信息,请参见 DBMS_CLOUD for Access Management 。
有关 OCI 本机验证示例,请参见 Example:Creating an OCI Native Authentication Credential Object 和 Autonomous AI Database Now Supports Accessing the Object Storage with OCI Native Authentication 。
-
必须具有“管理数据目录”权限,自治 AI 数据库才能将定制属性添加到数据目录名称空间。使用这些权限可以覆盖方案名称、表名、列名等。
有关数据目录权限的详细信息,请参阅每个 API 操作所需的权限。
-
需要对存储桶具有读取对象存储权限,以便自治 AI 数据库可以查询数据文件。
有关 Oracle 对象存储策略示例的详细信息,请参阅策略示例。
AWS Glue 数据目录身份证明和策略要求
为自治 AI 数据库用户授予访问 Amazon Web Services (AWS) Glue Data Catalogs 和从 S3 对象存储读取的权限时,需要以下用户身份证明和策略:
-
需要具有访问 AWS Glue 数据目录的权限的身份证明对象。有关管理凭证的信息,请参见 DBMS_CLOUD for Access Management 。
要访问 AWS Glue 数据目录,需要以下权限:glue:GetDatabases 、glue:GetTables 和 glue:GetTable。
此外,在同步期间需要特权 s3:GetBucketLocation 来生成指向底层 S3 对象的可解析 https URL。
-
需要具有访问 S3 中存储文件的权限的身份证明对象,以便自治 AI 数据库可以查询数据文件。
-
支持 AWS 凭据。AWS Amazon 资源名称 (ARN) 身份证明不受支持。
示例:创建 OCI 本机验证身份证明对象
在此示例中,创建可在创建数据目录或对象存储身份证明对象时使用的 OCI 本机验证身份证明。有关更多详细信息,请参见 DBMS_DCAT。SET_DATA_CATALOG_CREDENTIAL 过程和 DBMS_DCAT.SET_OBJECT_STORE_CREDENTIAL 过程分别。
在 OCI 本机验证中,DBMS_CLOUD.CREATE_CREDENTIAL 过程包括以下参数:credential_name、user_ocid、tenancy_ocid、private_key 和 fingerprint。有关此过程的完整说明,请参见 DBMS_CLOUD CREATE_CREDENTIAL Procedure 。
credential_name 是身份证明对象的名称。user_ocid 和 tenancy_ocid 参数分别对应于用户的 OCID 和租户的 OCID。
private_key 参数以 PEM 格式指定生成的私钥。不支持使用口令短语创建的私钥。因此,我们需要确保生成一个没有口令短语的密钥。有关如何创建不带口令短语的私钥的更多详细信息,请参见 How to Generate an API Signing Key 。此外,我们为此参数提供的私钥只能包含密钥本身,而不能包含任何页眉或页脚(例如‘—– BEGIN RSA PRIVATE KEY ——’,‘—– END RSA PRIVATE KEY —–’)。
fingerprint 参数指定在将公钥上载到控制台或使用 OpenSSL 命令后获取的指纹。有关获取指纹的更多详细信息,请参见 How to Upload the Public Key 和 How to Get the Key’s Fingerprint 。
收集所有必要的信息并生成私钥后,我们就可以运行以下 CREATE_CREDENTIAL 过程:
BEGIN
DBMS_CLOUD.CREATE_CREDENTIAL (
credential_name => 'OCI_NATIVE_CRED',
user_ocid => 'ocid1.user.oc1..aaaaaaaatfn77fe3fxux3o5lego7glqjejrzjsqsrs64f4jsjrhbsk5qzndq',
tenancy_ocid => 'ocid1.tenancy.oc1..aaaaaaaapwkfqz3upqklvmelbm3j77nn3y7uqmlsod75rea5zmtmbl574ve6a',
private_key => 'MIIEogIBAAKCAQEA...t9SH7Zx7a5iV7QZJS5WeFLMUEv+YbYAjnXK+dOnPQtkhOblQwCEY3Hsblj7Xz7o=',
fingerprint => '4f:0c:d6:b7:f2:43:3c:08:df:62:e3:b2:27:2e:3c:7a');
END;
/
创建身份证明对象后,它将显示在 dba_credentials 表中:
SELECT owner, credential_name
FROM dba_credentials
WHERE credential_name LIKE '%NATIVE%';
OWNER CREDENTIAL_NAME
----- ---------------
ADMIN OCI_NATIVE_CRED
示例:使用用户主体
在此示例中,user1 是组 adb-admins 的成员。向该组的所有成员授予了管理 mycompartment 中的所有数据目录以及从 mycompartment 中的对象存储读取的权限。
-
允许属于
adb-admins的用户管理mycompartment中的所有数据目录。allow group adb-admins to manage data-catalog-family in compartment mycompartment -
允许作为
adb-admins成员的用户读取mycompartment内任何存储桶中的任何对象。allow group adb-admins to read objects in compartment mycompartment