匯出至物件儲存時加密資料

您可以在匯出至物件儲存時加密表格資料。

從自治式 AI 資料庫匯出至物件儲存時,請使用 format 參數和 encryption 選項搭配 DBMS_CLOUD.EXPORT_DATA 來加密資料。

將加密的資料匯出至物件儲存時,請注意下列事項:

使用 DBMS_CRYPTO 加密演算法加密資料

顯示在匯出至雲端物件儲存時,使用 DBMS_CRYPTO 加密演算法加密資料的步驟。

在匯出至雲端物件儲存時,執行下列步驟以加密資料 (此範例會將表格資料匯出至 CSV 檔案):

  1. 連線至您的自治式 AI 資料庫執行處理。

  2. 使用 DBMS_CLOUD.CREATE_CREDENTIAL 儲存您的雲端物件儲存證明資料。

    舉例而言:

    BEGIN
      DBMS_CLOUD.CREATE_CREDENTIAL(
        credential_name => 'OBJ_STORE_CRED',
        username        => 'user1@example.com',
        password        => 'password'
      );
    END;
    /

    您為 usernamepassword 提供的值取決於使用的雲端物件儲存服務。

    請參閱 CREATE_CREDENTIAL 程序以瞭解詳細資訊。

  3. 建立證明資料以儲存加密金鑰 (用於加密資料的加密金鑰)。

    當您使用 DBMS_CRYPTO 加密演算法加密資料時,會將加密金鑰儲存在證明資料中。金鑰是在您以 DBMS_CLOUD.CREATE_CREDENTIAL 建立之證明資料的 password 欄位中指定。

    舉例而言:

    BEGIN
      DBMS_CLOUD.CREATE_CREDENTIAL (
        credential_name => 'ENC_CRED_NAME',
        username        => 'Any_username',
        password        => 'password'
      );
    END;
    /
  4. 執行 DBMS_CLOUD.EXPORT_DATA

    使用 format 參數搭配 encryption 選項。encryption 類型會指定用來加密表格資料的 DBMS_CRYPTO 加密演算法,而 credential_name 值則是指定加密密碼 (加密金鑰) 的證明資料。

    舉例而言:

    BEGIN
        DBMS_CLOUD.EXPORT_DATA (
            credential_name => 'OBJ_STORE_CRED',
            file_uri_list   => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namepace-string/b/bucketname/o/encrypted.csv',
            query           => 'SELECT * FROM ADMIN.employees',
            format          => json_object(
                   'type' value 'csv',
                   'encryption' value  json_object(
                           'type' value DBMS_CRYPTO.ENCRYPT_AES256 + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5,
                           'credential_name' value 'ENC_CRED_NAME'))
          );
    END;
    /

    這會將資料從 EMPLOYEES 表格加密並匯出成 CSV 檔案。

    如需加密演算法的詳細資訊,請參閱 DBMS_CRYPTO 演算法

    在此範例中,namespace-string 是 Oracle Cloud Infrastructure 物件儲存命名空間,而 bucketname 是儲存桶名稱。請參閱瞭解物件儲存命名空間以瞭解詳細資訊。

    請參閱 EXPORT_DATA 程序EXPORT_DATA 的 DBMS_CLOUD 套裝程式格式選項,瞭解詳細資訊。

使用 DBMS_CLOUD.EXPORT_DATA 加密檔案之後,當您使用 DBMS_CRYPTO 加密演算法來加密檔案時,您可以使用這些選項來使用或匯入您匯出的檔案:

使用使用者定義的加密功能加密資料

顯示在匯出至雲端物件儲存時,使用使用者定義的加密函數加密資料的步驟。

在匯出至雲端物件儲存時,執行下列步驟以加密資料 (此範例會將表格資料匯出至 CSV 檔案):

  1. 連線至您的自治式 AI 資料庫執行處理。

  2. 使用 DBMS_CLOUD.CREATE_CREDENTIAL 儲存您的雲端物件儲存證明資料。

    舉例而言:

    BEGIN
      DBMS_CLOUD.CREATE_CREDENTIAL(
        credential_name => 'OBJ_STORE_CRED',
        username        => 'user1@example.com',
        password        => 'password'
      );
    END;
    /

    您為 usernamepassword 提供的值取決於您使用的雲端物件儲存服務。

    請參閱 CREATE_CREDENTIAL 程序以瞭解詳細資訊。

  3. 建立使用者定義的回呼函數以加密資料。

    舉例而言:

    CREATE OR REPLACE FUNCTION encryption_func (data IN BLOB)
      RETURN BLOB
      IS
          l_encrypted_data BLOB;
           BEGIN
         DBMS_LOB.CREATETEMPORARY (l_encrypted_data, TRUE, DBMS_LOB.CALL);
         DBMS_CRYPTO.ENCRYPT (
             dst => l_encrypted_data,
             src => data,
             typ => DBMS_CRYPTO.ENCRYPT_AES256 + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5,
             key => 'encryption key'
          );
         RETURN l_encrypted_data;
    END encryption_func;
    /

    這會建立 ENCRYPTION_FUNC 加密功能。此功能會使用使用者提供的金鑰,以串流或區塊加密方式加密資料。

    注意:您必須建立加密金鑰,作為 KEY 參數中的值。如需產生加密金鑰的詳細資訊,請參閱 DBMS_CRYPTO Operational Notes

  4. 使用 format 參數執行 DBMS_CLOUD.EXPORT_DATA,包括 encryption 選項,並指定 user_defined_function

    舉例而言:

    BEGIN
          DBMS_CLOUD.EXPORT_DATA (
            credential_name => 'OBJ_STORE_CRED',
            file_uri_list   => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namepace-string/b/bucketname/o/encrypted.csv',
            query           => 'SELECT * FROM ADMIN.emp',
            format          => json_object(
                                  'type' value 'csv',
                                  'encryption' value json_object('user_defined_function' value 'admin.encryption_func'))
          );
    END;
    /

    這會加密 EMP 表格上指定查詢的資料,並將資料匯出為雲端物件儲存上的 CSV 檔案。具有 encryption 值的 format 參數會指定用來加密資料的使用者定義加密函數。

    注意:您必須要有加密功能的 EXECUTE 權限。

    在此範例中,namespace-string 是 Oracle Cloud Infrastructure 物件儲存命名空間,而 bucketname 是儲存桶名稱。請參閱瞭解物件儲存命名空間以瞭解詳細資訊。

    請參閱 EXPORT_DATA 程序EXPORT_DATA 的 DBMS_CLOUD 套裝程式格式選項,瞭解詳細資訊。

從物件儲存匯入時解密資料