存取管理適用的 DBMS_CLOUD

本節涵蓋用於存取管理的 DBMS_CLOUD 子程式。

必備條件

身為開發人員,您可以將 DBMS_CLOUD 程序與部署在 Oracle Public Cloud多重雲端Exadata Cloud@Customer 上的 Autonomous Database 搭配使用。

視部署選擇而定,必須符合下列先決條件,才能將 DBMS_CLOUD 程序與 Amazon S3Azure Blob StorageGoogle Cloud Storage 服務提供者搭配使用。

機組管理員必須使用 NAT 閘道設定輸出連線,如下所述:
  • 請依照 Oracle Cloud Infrastructure 文件建立 NAT 閘道的指示,在 Autonomous Database 資源所在的虛擬雲端網路 (VCN) 中建立 NAT 閘道。
  • 建立 NAT 閘道之後,請在 Autonomous Database 資源所在的每個子網路新增路由規則和傳出安全規則 (在 VCN 中),以便這些資源能夠使用此閘道從您的 Azure AD 執行處理取得公開金鑰:
    1. 移至子網路的子網路詳細資訊頁面。
    2. 子網路資訊頁籤中,按一下子網路的路由表名稱,以顯示其路由表詳細資訊頁面。
    3. 在現有路由規則的表格中,檢查是否已有具有下列特性的規則:
      • 目標:0.0.0.0/0
      • 目標類型:NAT 閘道
      • 目標:剛在 VCN 中建立的 NAT 閘道名稱

      如果沒有這類規則,請按一下新增路由規則,然後新增具有這些特性的路由規則。

    4. 返回子網路的子網路詳細資訊頁面。
    5. 在子網路的安全清單表格中,按一下子網路安全清單的名稱,以顯示其安全清單詳細資訊頁面。
    6. 在側邊功能表的資源下,按一下傳出規則
    7. 在現有傳出規則的表格中,檢查是否已有具有下列特性的規則:
      • 目標類型: CIDR
      • 目的地:0.0.0.0/0
      • IP 協定: TCP
      • 來源連接埠範圍: 443
      • 目的地連接埠範圍:全部

      如果該規則不存在,請按一下新增輸出規則,然後新增具有這些特性的輸出規則。

您環境中的 HTTP 代理主機設定值必須允許資料庫存取雲端服務提供者。

這些設定值是由機組管理員在建立 Exadata Cloud@Customer 基礎架構時定義的,如使用主控台在 Cloud@Customer 上佈建 Exadata 資料庫服務中所述。

附註:

必須等到 Exadata 基礎架構為需要啟用狀態後,才能編輯網路組態 (包括 HTTP 代理主機)。啟用之後,您就無法編輯這些設定值。

在 My Oracle Support 中設定已啟動設定之 Exadata 基礎架構的 HTTP 代理主機時,必須要有服務要求 (SR)。請參閱 在 My Oracle Support 中建立服務要求瞭解詳細資訊。

存取管理適用的 DBMS_CLOUD 子程式

DBMS_CLOUD 套裝程式內用於證明資料管理的子程式,包括建立、刪除及更新證明資料。

子程式 描述

CREATE_CREDENTIAL 程序

此程序會將雲端服務證明資料儲存在 Autonomous Database 中。

DROP_CREDENTIAL 程序

此程序會從 Autonomous Database 移除現有的證明資料。

UPDATE_CREDENTIAL 程序

此程序會更新 Autonomous Database 中的雲端服務證明資料屬性。

CREATE_CREDENTIAL 程序

此程序會將雲端服務證明資料儲存在 Autonomous Database 中。

使用預存雲端服務證明資料存取雲端服務以進行資料載入、查詢位於雲端的外部資料,或者使用 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

usernamepassword 引數會同時指定您的雲端服務證明資料。請參閱用法注意事項,瞭解針對不同雲端服務的 usernamepassword 指定的用法注意事項。

password

usernamepassword 引數會同時指定您的雲端服務證明資料。

user_ocid

指定使用者的 OCID。請參閱取得租用戶 OCID 和使用者 OCID 的位置,瞭解取得使用者 OCID 的詳細資訊。

tenancy_ocid

指定租用戶的 OCID。請參閱取得租用戶 OCID 和使用者 OCID 的位置,瞭解取得租用戶 OCID 的詳細資訊。

private_key

指定產生的私密金鑰。不支援以密碼詞組產生私密金鑰。您必須產生不含密碼詞組的私密金鑰。如需以 PEM 格式產生金鑰組的詳細資訊,請參閱 How to Generate an API Signing Key

fingerprint

指定指紋。將產生的公開金鑰上傳至使用者的帳戶後,主控台中就會顯示指紋。對此引數使用顯示的指紋。如需詳細資訊,請參閱 How to Get the Key's FingerprintHow to Generate an API Signing Key

使用注意事項

  • 此作業會以加密格式將證明資料儲存在資料庫中。

  • 您可以查詢 user_credentials 表格來查看綱要中的證明資料。

  • ADMIN 使用者可以透過查詢 dba_credentials 表格來查看所有證明資料。

  • 除非您的雲端服務證明資料變更,否則您只需要建立證明資料一次。儲存證明資料之後,您就可以對需要 credential_name 參數的 DBMS_CLOUD 程序使用相同的證明資料名稱。

  • 此程序已超載。如果您提供其中一個以金鑰為基礎的認證屬性 (user_ocidtenancy_ocidprivate_keyfingerprint),則呼叫會假設為以 Oracle Cloud Infrastructure 簽署金鑰為基礎的證明資料。

  • 您可以從檢視 ALL_CREDENTIALS 列出證明資料。例如,執行下列命令以列出證明資料:

    SELECT credential_name, username, comments FROM all_credentials;

Oracle Cloud Infrastructure 證明資料 (認證權杖)

對於 Oracle Cloud Infrastructureusername 是您的 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 簽署金鑰型證明資料

使用 Oracle Cloud Infrastructure 簽署金鑰相關參數,包括:user_ocidtenancy_ocidprivate_keyfingerprintOracle 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 儲存體中,或者您正在呼叫 Azure API,則 username 會是您的 Azure 儲存體帳戶名稱,而 password 則是 Azure 儲存體帳戶存取金鑰。請參閱關於 Azure 儲存體帳戶

Amazon S3 相容 憑證

服務 證明資料資訊

Google Cloud Storage

如果您的來源檔案位於 Google Cloud Storage 中,或者您正在呼叫 Google Cloud Storage API,則您需要設定預設的 Google 專案並取得 HMAC 金鑰,以建立證明資料來提供與 Google Cloud Storage S3 相容的 URL。使用 HMAC 金鑰 ID 作為使用者名稱,使用 HMAC 加密密碼作為密碼。

請參閱專案HMAC 金鑰以瞭解詳細資訊。

管理 DBMS_CLOUD 證明資料以認證 C3 物件儲存

您可以使用 DBMS_CLOUD.CREATE_CREDENTIAL 程序為 Autonomous Database 提供連線至 C3 物件儲存的儲存桶所需的認證資訊。使用與 Oracle Cloud Infrastructure 簽署金鑰認證相關的 Oracle Cloud Infrastructure 簽署金鑰參數,包括 user_ocidtenancy_ocidprivate_keyfingerprint

範例:
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 程序

此程序會從 Autonomous Database 移除現有的證明資料。

語法

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

要更新的屬性名稱。

對於使用者名稱 / 密碼類型證明資料,有效的 attribute 值為:USERNAMEPASSWORD

如需詳細資訊,請參閱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;
/