DBMS_CLOUD 用于访问管理
Prerequisites
作为开发人员,您可以将 DBMS_CLOUD 过程与部署在 Oracle Public Cloud 、 Multicloud 或 Exadata Cloud@Customer 上的 Autonomous Database 结合使用。
根据部署选择,必须满足以下先决条件,才能将 DBMS_CLOUD 过程与 Amazon S3 、Azure Blob Storage 和 Google Cloud Storage 服务提供商一起使用。
- 按照 Oracle Cloud Infrastructure 文档中的创建 NAT 网关中的说明,在 Autonomous Database 资源所在的虚拟云网络 (Virtual Cloud Network,VCN) 中创建 NAT 网关。
- 创建 NAT 网关后,向 每个子网(在 VCN 中)添加路由规则和出站安全规则,Autonomous Database 资源位于其中,以便这些资源可以使用网关从 Azure AD 实例获取公钥:
- 转到子网的子网详细信息页。
- 在子网信息选项卡中,单击子网的路由表的名称以显示其路由表详细信息页。
- 在现有路由规则表中,检查是否已存在具有以下特征的规则:
- 目标:0.0.0.0/0
- 目标类型:NAT 网关
- 目标:刚在 VCN 中创建的 NAT 网关的名称
如果不存在此类规则,请单击添加路由规则并添加具有这些特征的路由规则。
- 返回到子网的子网详细信息页。
- 在子网的安全列表表中,单击子网的安全列表的名称以显示其安全列表详细信息页。
- 在侧边菜单的资源下,单击出站规则。
- 在现有出站规则表中,检查是否已存在具有以下特征的规则:
- 目标类型: CIDR
- 目标:0.0.0.0/0
- IP 协议: TCP
- 源端口范围: 443
- 目标端口范围:全部
如果不存在此类规则,请单击添加出站规则并添加具有这些特征的出站规则。
环境中的 HTTP 代理设置必须允许数据库访问云服务提供商。
注意:
只有在 Exadata 基础结构处于 Requires Activation 状态之前,才能编辑包括 HTTP 代理的网络配置。一旦激活,就无法编辑这些设置。为已预配的 Exadata 基础结构设置 HTTP 代理需要在 My Oracle Support 中创建服务请求 (SR)。有关详细信息,请参见在 My Oracle Support 中创建服务请求。
访问管理的 DBMS_CLOUD 子程序
DBMS_CLOUD 程序包中用于身份证明管理的子程序,包括创建、删除和更新身份证明。
子程序 | 说明 |
---|---|
此过程将云服务身份证明存储在 Autonomous Database 中。 | |
此过程从 Autonomous Database 中删除现有身份证明。 | |
此过程更新 Autonomous Database 中的云服务身份证明属性。 |
CREATE_CREDENTIAL 过程
此过程将云服务身份证明存储在 Autonomous Database 中。
使用存储的云服务身份证明访问云服务以进行数据加载、查询驻留在云中的外部数据,或者使用带有 credential_name
参数的 DBMS_CLOUD
过程的其他情况。
语法
DBMS_CLOUD.CREATE_CREDENTIAL
(
credential_name IN VARCHAR2,
username IN VARCHAR2,
password IN VARCHAR2 DEFAULT NULL);
DBMS_CLOUD.CREATE_CREDENTIAL
(
credential_name IN VARCHAR2,
user_ocid IN VARCHAR2,
tenancy_ocid IN VARCHAR2,
private_key IN VARCHAR2,
fingerprint IN VARCHAR2);
参数
Parameter (参数) | 说明 |
---|---|
|
要存储的身份证明的名称。 |
|
|
|
|
|
指定用户的 OCID。有关获取用户的 OCID 的详细信息,请参见 Where to Get the Tenancy's OCID and User's OCID 。 |
|
指定租户的 OCID。有关获取租户的 OCID 的详细信息,请参见 Where to Get the Tenancy's OCID and User's OCID 。 |
|
指定生成的私有密钥。不支持。您需要生成没有口令短语的私有密钥。有关以 PEM 格式生成密钥对的详细信息,请参见 How to Generate an API Signing Key 。 |
|
指定指纹。将生成的公钥上载到用户帐户后,指纹将显示在控制台中。对此参数使用显示的指纹。有关更多详细信息,请参见 How to Get the Key's Fingerprint 和 How to Generate an API Signing Key 。 |
使用说明
-
此操作以加密格式将身份证明存储在数据库中。
-
可以通过查询
user_credentials
表来查看方案中的身份证明。 -
ADMIN
用户可以通过查询dba_credentials
表来查看所有凭证。 -
除非云服务身份证明发生更改,否则只需创建一次身份证明。存储凭证后,您可以为需要
credential_name
参数的DBMS_CLOUD
过程使用相同的凭证名称。 -
此过程重载。如果您提供基于密钥的验证属性之一
user_ocid
、tenancy_ocid
、private_key
或fingerprint
,则假定调用是基于 Oracle Cloud Infrastructure 签名密钥的身份证明。 -
可以从
ALL_CREDENTIALS
视图中列出身份证明。例如,运行以下命令列出凭证:SELECT credential_name, username, comments FROM all_credentials;
Oracle Cloud Infrastructure 身份证明(Auth 标记)
对于 Oracle Cloud Infrastructure ,username
是您的 Oracle Cloud Infrastructure 用户名。password
是您的 Oracle Cloud Infrastructure 验证令牌。请参见 Working with Auth Tokens 。
例如:
BEGIN
DBMS_CLOUD.CREATE_CREDENTIAL
(
credential_name => 'DEF_CRED_NAME',
username => 'adb_user@example.com',
password => 'password' );
END;
/
验证对 OCI 对象存储的调用时,使用基于验证令牌的身份证明。对于对任何其他类型的 Oracle Cloud Infrastructure 云服务的调用,请使用基于密钥的 Oracle Cloud Infrastructure 签名身份证明。
Oracle Cloud Infrastructure 签署基于密钥的身份证明
使用 Oracle Cloud Infrastructure 签名密钥相关参数,包括 user_ocid
、tenancy_ocid
、private_key
和 fingerprint
以及 Oracle Cloud Infrastructure 签名密钥验证。
例如:
BEGIN
DBMS_CLOUD.CREATE_CREDENTIAL (
credential_name => ‘OCI_KEY_CRED’,
user_ocid => ‘ocid1.user.oc1..aaaaaaaauq54mi7zdyfhw33ozkwuontjceel7fok5nq3bf2vwetkpqsoa’,
tenancy_ocid => ‘ocid1.tenancy.oc1..aabbbbbbaafcue47pqmrf4vigneebgbcmmoy5r7xvoypicjqqge32ewnrcyx2a’,
private_key => ‘MIIEogIBAAKCAQEAtUnxbmrekwgVac6FdWeRzoXvIpA9+0r1.....wtnNpESQQQ0QLGPD8NM//JEBg=’,
fingerprint => ‘f2:db:f9:18:a4:aa:fc:94:f4:f6:6c:39:96:16:aa:27’);
END;
/
不支持。您需要生成没有口令短语的私有密钥。有关更多信息,请参见 How to Generate an API Signing Key 。
Amazon Web Services (AWS) 身份证明
如果源文件位于 Amazon S3 中,或者您正在调用 AWS API,则 username
是您的 AWS 访问密钥 ID,password
是您的 AWS 密钥访问密钥。请参见 AWS Identity and Access Management 。
Microsoft Azure 身份证明
如果源文件位于 Azure Blob Storage 中,或者您正在调用 Azure API,则 username
是您的 Azure 存储账户名称,password
是 Azure 存储账户访问密钥。请参阅关于 Azure 存储账户。
DROP_CREDENTIAL 过程
此过程从 Autonomous Database 中删除现有身份证明。
语法
DBMS_CLOUD.DROP_CREDENTIAL
(
credential_name IN VARCHAR2);
参数
Parameter (参数) | 说明 |
---|---|
|
要删除的身份证明的名称。 |
UPDATE_CREDENTIAL 过程
此过程使用指定 credential_name
的新值更新属性。
使用存储的身份证明进行数据加载、查询驻留在云中的外部数据,或者将 DBMS_CLOUD
过程与 credential_name
参数一起使用。
语法
DBMS_CLOUD.UPDATE_CREDENTIAL
(
credential_name IN VARCHAR2,
attribute IN VARCHAR2,
value IN VARCHAR2);
参数
Parameter (参数) | 说明 |
---|---|
|
要更新的身份证明的名称。 |
|
要更新的属性的名称。 对于用户名/口令类型身份证明,有效的 有关更多信息,请参见CREATE_CREDENTIAL Procedure 。 |
|
指定属性的新值。 |
使用说明
-
用户名值敏感。它不能包含双引号或空格。
-
ADMIN
用户可以通过查询dba_credentials
查看所有凭证。 -
除非云服务身份证明发生更改,否则只需创建一次身份证明。存储凭证后,您可以为需要
credential_name
参数的DBMS_CLOUD
过程使用相同的凭证名称。 -
可以从
ALL_CREDENTIALS
视图中列出身份证明。例如,运行以下命令列出凭证:SELECT credential_name, username, comments FROM all_credentials;
示例
BEGIN
DBMS_CLOUD.UPDATE_CREDENTIAL
(
credential_name => 'OBJ_STORE_CRED',
attribute => 'PASSWORD',
value => 'password');
END;
/
BEGIN
DBMS_CLOUD.UPDATE_CREDENTIAL
(
credential_name => 'ARN_CRED',
attribute => 'aws_role_arn',
value => 'NEW_AWS_ARN');
END;
/