機械翻訳について

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

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

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

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

  • encryptionオプションは、データをAutonomous DatabaseからCSV、JSONまたはXMLとしてオブジェクト・ストレージにエクスポートする場合にのみサポートされます。

  • エクスポートに暗号化と圧縮の両方が含まれる場合、操作の順序は次のとおりです: 最初にデータが圧縮され、次にデータが暗号化されてから、Object Storageにアップロードされます。

  • サポートされている暗号化方式は2つあります:

    • ユーザー定義関数の使用。

    • DBMS_CRYPTO指定の暗号化アルゴリズムを使用します。

      暗号化および復号化の暗号化関数および手順については、DBMS_CRYPTOを参照してください。

トピック

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

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

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

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

    詳細については、「Autonomous Databaseに接続」を参照してください。

  2. DBMS_CLOUD.CREATE_CREDENTIALを使用してCloud Object Storage資格証明を保存します。

    たとえば:

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

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

    詳細については、「CREATE_CREDENTIALプロシージャ」を参照してください。

    リソース・プリンシパル資格証明を有効にした場合、Oracle Cloud Infrastructureオブジェクト・ストアにアクセスするための資格証明の作成は必要ありません。 詳細については、「リソース・プリンシパルを使用したOracle Cloud Infrastructureリソースへのアクセス」を参照してください。

  3. 暗号化キー(データの暗号化に使用される暗号化キー)を格納する資格証明を作成します。

    DBMS_CRYPTO暗号化アルゴリズムを使用してデータを暗号化する場合は、暗号化キーを資格証明に格納します。 キーは、DBMS_CLOUD.CREATE_CREDENTIALで作成する資格証明のpasswordフィールドに指定されます。

    たとえば:

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

    別の方法として、ボールトにキーを格納する資格証明を作成できます。 たとえば:

    BEGIN
      DBMS_CLOUD.CREATE_CREDENTIAL (
        credential_name  => 'ENC_CRED_NAME',
        params           => JSON_OBJECT ('username' value 'Any_username',
                                        'region'    value 'Region',
                                        'secret_id' value 'Secret_id_value'));
    END;
    /

    ノート:

    キーを格納する資格証明で指定するusernameパラメータは、任意の文字列です。

    これにより、ボールト・シークレット資格証明であるENC_CRED_NAME資格証明が作成されます。ここで、シークレット(復号化/暗号化キー)はシークレットとしてOracle Cloud Infrastructure Vaultに格納されます。

    詳細については、「CREATE_CREDENTIALプロシージャ」を参照してください。

  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/namespace-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プロシージャ」「DBMS_CLOUD EXPORT_DATAのパッケージ形式オプション」を参照してください。

DBMS_CLOUD.EXPORT_DATAを使用してファイルを暗号化した後、DBMS_CRYPTO暗号化アルゴリズムを使用してファイルを暗号化する場合は、エクスポートしたファイルを使用またはインポートするための次のオプションがあります:

  • DBMS_CLOUD.COPY_DATAまたはDBMS_CLOUD.COPY_COLLECTIONを同じ暗号化アルゴリズム・オプションおよびキーとともに使用して、ファイルを復号化できます。

    詳細については、「DBMS_CRYPTOアルゴリズムを使用したデータの復号化およびロード」を参照してください。

  • 次のいずれかの手順を使用して、同じ暗号化アルゴリズム・オプションとファイルを復号化するキーを指定して、外部表のデータを問い合せることができます:

    • DBMS_CLOUD.CREATE_EXTERNAL_TABLE

    • DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE

    • DBMS_CLOUD.CREATE_HYBRID_PART_TABLE

      DBMS_CLOUD.CREATE_HYBRID_PART_TABLEの場合、このオプションはオブジェクト・ストレージ・ファイルにのみ適用されます。

    詳細については、「DBMS_CRYPTOアルゴリズムを使用したデータの復号化およびロード」を参照してください。

  • Autonomous Databaseではないシステムでは、DBMS_CRYPTOパッケージを同じアルゴリズム・オプションとキーとともに使用して、ファイルを復号化できます。

    キーはAutonomous Databaseの資格証明にVARCHAR2として格納されますが、DBMS_CRYPTOはキー・パラメータにRAWタイプを使用します。

    暗号化アルゴリズムの詳細は、「DBMS_CRYPTOアルゴリズム」を参照してください。

ユーザー定義暗号化機能を使用したデータの暗号化

クラウド・オブジェクト・ストレージへのエクスポート中にユーザー定義の暗号化機能を使用してデータを暗号化するステップを示します。

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

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

    詳細については、「Autonomous Databaseに接続」を参照してください。

  2. DBMS_CLOUD.CREATE_CREDENTIALを使用してCloud Object Storage資格証明を保存します。

    たとえば:

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

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

    詳細については、「CREATE_CREDENTIALプロシージャ」を参照してください。

    リソース・プリンシパル資格証明を有効にした場合、Oracle Cloud Infrastructureオブジェクト・ストアにアクセスするための資格証明の作成は必要ありません。 詳細については、「リソース・プリンシパルを使用したOracle Cloud Infrastructureリソースへのアクセス」を参照してください。

  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/namespace-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プロシージャ」「DBMS_CLOUD EXPORT_DATAのパッケージ形式オプション」を参照してください。