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

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

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パッケージのフォーマット・オプション」を参照してください。

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