オブジェクト・ストレージへのエクスポート中のデータの暗号化

オブジェクト・ストレージへのエクスポート中に表データを暗号化できます。

Autonomous AI Databaseからオブジェクト・ストレージへのエクスポート時にデータを暗号化するには、formatパラメータおよびencryptionオプションをDBMS_CLOUD.EXPORT_DATAとともに使用します。

暗号化されたデータをObject Storageにエクスポートする場合は、次の点に注意してください:

DBMS_CRYPTO暗号化アルゴリズムを使用したデータの暗号化

クラウド・オブジェクト・ストレージへのエクスポート中に、DBMS_CRYPTO暗号化アルゴリズムを使用してデータを暗号化するステップを示します。

クラウド・オブジェクト・ストレージへのエクスポート中にデータを暗号化するには、次のステップを実行します(この例では、表データをCSVファイルにエクスポートします)。

  1. Autonomous AI Databaseインスタンスに接続します。

  2. DBMS_CLOUD.CREATE_CREDENTIALを使用して、クラウド・オブジェクト・ストレージ資格証明を格納してください。

    たとえば:

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

    usernameおよびpasswordに指定する値は、使用しているクラウド・オブジェクト・ストレージ・サービスによって異なります

    詳細は、「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. Autonomous AI Databaseインスタンスに接続します。

  2. DBMS_CLOUD.CREATE_CREDENTIALを使用して、クラウド・オブジェクト・ストレージ資格証明を格納してください。

    たとえば:

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

    usernameおよびpasswordに指定する値は、使用しているクラウド・オブジェクト・ストレージ・サービスによって異なります

    詳細は、「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の操作上のノートを参照してください。

  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ファイルとしてデータがエクスポートされます。formatパラメータにencryption値を指定すると、データの暗号化に使用するユーザー定義の暗号化関数が指定されます。

    ノート:暗号化関数に対するEXECUTE権限が必要です。

    この例では、namespace-stringはOracle Cloud Infrastructureオブジェクト・ストレージ・ネームスペースで、bucketnameはバケット名です。詳細は、オブジェクト・ストレージ・ネームスペースの理解を参照してください。

    詳細は、「EXPORT_DATAプロシージャ」および「EXPORT_DATAのDBMS_CLOUDパッケージのフォーマット・オプション」を参照してください。

関連コンテンツ

オブジェクト・ストレージからのインポート中のデータの復号化