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

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

從自治式 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 套裝程式格式選項,瞭解詳細資訊。

相關內容

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