存取管理的 DBMS_CLOUD
本節涵蓋用於存取管理的 DBMS_CLOUD 子程式。
必備條件
身為開發人員,您可以將 DBMS_CLOUD 程序與部署在 Oracle Public Cloud、Multicloud 或 Exadata Cloud@Customer 上的 Autonomous AI 資料庫搭配使用。
視部署選項而定,必須符合下列先決條件,才能將 DBMS_CLOUD 程序與 Amazon S3、Azure Blob Storage 及 Google Cloud Storage 服務提供者搭配使用。
您的機組管理員必須使用 NAT 閘道設定輸出連線,如下所述:
-
請依照 Oracle Cloud Infrastructure 文件中 Create a NAT Gateway 的指示,在您自治式 AI 資料庫資源所在的虛擬雲端網路 (VCN) 中建立 NAT 閘道。
-
建立 NAT 閘道之後,請在自治式 AI 資料庫資源所在的每個子網路 (VCN 中) 新增路由規則和輸出安全規則,讓這些資源能夠使用閘道從您的 Azure AD 執行處理取得公開金鑰:
-
移至子網路的子網路詳細資訊頁面。
-
在子網路資訊頁籤中,按一下子網路的路由表名稱,以顯示其路由表詳細資訊頁面。
-
在現有路由規則的表格中,檢查是否已有具有下列特性的規則:
-
目的地:0.0.0.0/0
-
目標類型:NAT 閘道
-
目標:您剛剛在 VCN 中建立的 NAT 閘道名稱
如果沒有這樣的規則,請按一下新增路由規則,然後新增具有這些特性的路由規則。
-
-
返回子網路的子網路詳細資訊頁面。
-
在子網路的安全清單表格中,按一下子網路安全清單的名稱,以顯示其安全清單詳細資訊頁面。
-
在側邊功能表的資源底下,按一下傳出規則。
-
在現有傳出規則的表格中,檢查是否已有具有下列特性的規則:
-
目的地類型: CIDR
-
目的地:0.0.0.0/0
-
IP 協定: TCP
-
來源連接埠範圍:443
-
目的地連接埠範圍:全部
如果沒有這類規則,請按一下新增傳出規則,然後新增含有這些特性的傳出規則。
-
-
您環境中的 HTTP 代理主機設定值必須允許資料庫存取雲端服務提供者。
這些設定值是由機組管理員在建立 Exadata Cloud@Customer 基礎架構時所定義,如使用主控台在 Cloud@Customer 上佈建 Exadata 資料庫服務中所述。
注意:只有在 Exadata 基礎架構為需要啟用狀態時,才能編輯包含 HTTP 代理主機的網路組態。啟用之後,就無法編輯這些設定值。
若為已經佈建的 Exadata 基礎架構設定 HTTP 代理主機,在 My Oracle Support 中需要服務要求 (SR)。請參閱 在 My Oracle Support 中建立服務要求,瞭解詳細資訊。
存取管理的 DBMS_CLOUD 子程式摘要
DBMS_CLOUD 套裝程式內證明資料管理的子程式,包括建立、刪除以及更新證明資料。
| 子程式 | 描述 |
|---|---|
| CREATE_CREDENTIAL 程序 | 此程序會將雲端服務證明資料儲存在自治式 AI 資料庫中。 |
| DROP_CREDENTIAL 程序 | 此程序會從自治式 AI 資料庫移除現有的證明資料。 |
| UPDATE_CREDENTIAL 程序 | 此程序會更新自治式 AI 資料庫中的雲端服務證明資料屬性。 |
CREATE_CREDENTIAL 程序
此程序會將雲端服務證明資料儲存在自治式 AI 資料庫中。
使用預存雲端服務證明資料存取雲端服務以進行資料載入、查詢位於雲端的外部資料,或針對使用 DBMS_CLOUD 程序搭配 credential_name 參數的其他情況。
語法
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 - 參數 | 描述 |
|---|---|
credential_name |
要儲存之證明資料的名稱。credential_name 參數必須符合 Oracle 物件命名慣例,此慣例不允許空格或連字號。 |
username |
username 和 password 引數一起指定您的雲端服務證明資料。請參閱 username 的使用注意事項,以及 password 的不同雲端服務使用注意事項。 |
password |
username 和 password 引數一起指定您的雲端服務證明資料。 |
user_ocid |
指定使用者的 OCID。請參閱從何處取得租用戶的 OCID 和使用者的 OCID ,瞭解取得使用者 OCID 的詳細資訊。 |
tenancy_ocid |
指定租用戶的 OCID。請參閱從何處取得租用戶的 OCID 和使用者的 OCID ,瞭解取得租用戶 OCID 的詳細資訊。 |
private_key |
指定產生的私密金鑰。不支援使用密碼詞組產生的私密索引鍵。您需要產生不含密碼詞組的私密金鑰。請參閱如何產生 API 簽署金鑰,瞭解以 PEM 格式產生金鑰組的詳細資訊。 |
fingerprint |
指定指紋。將產生的公開金鑰上傳至使用者帳戶之後,主控台中就會顯示指紋。對此引數使用顯示的指紋。請參閱如何取得金鑰的指紋和如何產生 API 簽署金鑰以瞭解詳細資訊。 |
使用注意事項
-
此作業會以加密格式將證明資料儲存在資料庫中。
-
您可以查詢
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 認證權杖。請參閱使用認證權杖。
舉例而言:
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 簽署金鑰型證明資料
Use the Oracle Cloud Infrastructure signing key related parameters, including: user_ocid, tenancy_ocid, private_key, and fingerprint with Oracle Cloud Infrastructure Signing Keys authentication.
舉例而言:
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;
/
不支援使用密碼詞組產生的私密索引鍵。您需要產生不含密碼詞組的私密金鑰。請參閱如何產生 API 簽署金鑰瞭解詳細資訊。
Amazon Web Services (AWS) 證明資料
如果您的來源檔案位於 Amazon S3 或您正在呼叫 AWS API,則 username 是您的 AWS 存取金鑰 ID,而 password 則是您的 AWS 密碼存取金鑰。AWS 識別和存取管理。
Microsoft Azure 證明資料
如果您的來源檔案位於 Azure Blob 儲存體中,或您正在呼叫 Azure API,則 username 是您的 Azure 儲存體帳戶名稱,而 password 是 Azure 儲存體帳戶存取金鑰。請參閱關於 Azure 儲存體帳戶。
Amazon S3 - 相容憑證
| 服務 | 憑證資訊 |
|---|---|
| Google 雲端儲存 | 如果您的來源檔案位於 Google Cloud Storage,或您正在呼叫 Google Cloud Storage API,則您需要設定預設的 Google 專案並取得 HMAC 金鑰,以建立提供 Google Cloud Storage S3 相容 URL 的證明資料。請使用 HMAC 金鑰 ID 作為使用者名稱,並使用 HMAC 加密密碼作為密碼。 |
管理要向 C3 物件儲存認證的 DBMS_CLOUD 證明資料
您可以使用 DBMS_CLOUD.CREATE_CREDENTIAL 程序為 Autonomous AI 資料庫提供連線到 C3 物件儲存的儲存桶所需的認證資訊。使用與 Oracle Cloud Infrastructure 簽署金鑰認證相關的 Oracle Cloud Infrastructure 簽署金鑰參數,包括 user_ocid、tenancy_ocid、private_key 和 fingerprint。
範例:
BEGIN
DBMS_CLOUD.CREATE_CREDENTIAL (
credential_name => 'OBJECT_STORAGE_CREDENTIAL',
user_ocid => 'ocid1.user.oc1..abcdedfxxxxx',
tenancy_ocid => 'ocid1.tenancy.oc1..abcdefxyyyyyy',
private_key => 'MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDku_Rest_of_PrivateKey_no_spaces_no_newlines',
fingerprint => '3d:ba:f9:aa:bb:cc:dd:ee:ff:gg:hh:ii:jj:xa:xb:xc'
);
END;
/
DROP_CREDENTIAL 程序
此程序會從自治式 AI 資料庫移除現有的證明資料。
語法
DBMS_CLOUD.DROP_CREDENTIAL (
credential_name IN VARCHAR2);
參數
| Parameter - 參數 | 描述 |
|---|---|
credential_name |
要移除之證明資料的名稱。 |
UPDATE_CREDENTIAL 程序
此程序會以指定之 credential_name 的新值更新屬性。
使用儲存的證明資料來載入資料、查詢位於雲端的外部資料,或將 DBMS_CLOUD 程序與 credential_name 參數搭配使用。
語法
DBMS_CLOUD.UPDATE_CREDENTIAL (
credential_name IN VARCHAR2,
attribute IN VARCHAR2,
value IN VARCHAR2);
參數
| Parameter - 參數 | 描述 |
|---|---|
credential_name |
要更新之證明資料的名稱。 |
attribute |
要更新的屬性名稱。 若為使用者名稱 / 密碼類型證明資料,有效的 請參閱 CREATE_CREDENTIAL 程序以瞭解詳細資訊。 |
value |
指定屬性的新值。 |
使用注意事項
-
使用者名稱值區分大小寫。不能包含雙引號或空格。
-
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;
/