オブジェクト・ストレージからのインポート中のデータの復号化
このコンテンツを正しく表示するには、JavaScriptを有効にする必要があります
オブジェクト・ストレージからのインポート中のデータの復号化
オブジェクト・ストレージに格納されている暗号化されたファイルから、データを復号化およびロードできます。外部表で使用するオブジェクト・ストレージ上の暗号化されたデータを復号化することもできます。
このオプションは、ソース・ファイルのデータが暗号化されている場合、オンプレミス・データベースから
Autonomous Database に移行する際に便利です。
ノート:
このオプションは、4 GB未満のオブジェクト・ストレージ・ファイルでのみサポートされています。
このオプションは、次の手順に適用されます。
DBMS_CLOUD.COPY_DATA
DBMS_CLOUD.CREATE_EXTERNAL_TABLE
DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE
DBMS_CLOUD.CREATE_HYBRID_PART_TABLE
DBMS_CLOUD.CREATE_HYBRID_PART_TABLE
の場合、このオプションはオブジェクト・ストレージ・ファイルにのみ適用されます。
DBMS_CLOUD.COPY_COLLECTION
DBMS_CRYPTOアルゴリズムを使用したデータの復号化とロード
オブジェクト・ストレージから暗号化されたファイルを復号化し、データをAutonomous Database の表にロードするステップを示します(復号化ステップではDBMS_CRYPTO
アルゴリズムを使用します)。
前提条件として、暗号化されたファイルが存在し、そのファイルがオブジェクト・ストレージにアップロードされている必要があります。この例ではCSVファイルを使用し、ファイルはDBMS_CRYPTO.ENCRYPT_AES256 + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5
アルゴリズムを使用して暗号化され、クラウド・オブジェクト・ストレージにアップロードされていると想定しています。
ENCRYPT
ファンクションの詳細は、ENCRYPTファンクション を参照してください。
暗号化キーの生成の詳細は、DBMS_CRYPTOの操作上のノート を参照してください。
オブジェクト・ストレージからAutonomous Database 上の既存の表にデータを復号化してロードするには:
Autonomous Database インスタンスに接続します。
DBMS_CLOUD.CREATE_CREDENTIAL
を使用して、クラウド・オブジェクト・ストレージ資格証明を格納します。
たとえば次のようにします。
BEGIN
DBMS_CLOUD.CREATE_CREDENTIAL
(
credential_name => 'OBJ_STORE_CRED',
username => 'user1@example.com',
password => 'password '
);
END;
/
username
およびpassword
に指定する値は、使用しているクラウド・オブジェクト・ストレージ・サービスによって異なります
DBMS_CLOUD.CREATE_CREDENTIAL
を使用して、キーを格納する資格証明を作成します。次に例を示します。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プロシージャ に関する項を参照してください。
DBMS_CLOUD.COPY_DATA
を実行し、復号化方法としてDBMS_CRYPTO
暗号化アルゴリズムを指定します。BEGIN
DBMS_CLOUD.COPY_DATA
(
table_name => 'CSV_COPY_DATA',
credential_name => 'OBJ_STORE_CRED',
file_uri_list => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namepace-string /b/bucketname /o/encrypted.csv',
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;
/
これにより、オブジェクト・ストレージのENCRYPTED.CSV
ファイルが復号化されます。その後、CSV_COPY_DATA
表にデータがロードされます。format
パラメータのencryption
オプション値は、データの復号化に使用するDBMS_CRYPTO
暗号化アルゴリズムを指定します。
暗号化アルゴリズムの詳細は、DBMS_CRYPTOアルゴリズム を参照してください。
この例では、namespace-string
はOracle Cloud Infrastructureオブジェクト・ストレージ・ネームスペースで、bucketname
はバケット名です。詳細は、オブジェクト・ストレージ・ネームスペースの理解 を参照してください。
パラメータの詳細は、COPY_DATAプロシージャ を参照してください。
使用可能なformat
パラメータの詳細は、DBMS_CLOUD.COPY_DATA
とともに使用できます。 を参照してください。
ユーザー定義関数を使用したデータの復号化とロード
オブジェクト・ストレージのファイルを復号化し、ユーザー定義の復号化関数を使用してデータを表にロードするステップを示します。
これらのステップの前提条件として、ファイルを暗号化し、ファイルをオブジェクト・ストレージにアップロードする必要があります。この例ではCSVファイルを使用し、ファイルはDBMS_CRYPTO.ENCRYPT_AES256 + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5
アルゴリズムを使用して暗号化され、クラウド・オブジェクト・ストレージにアップロードされていると想定しています。
ENCRYPT
ファンクションの詳細は、ENCRYPTファンクション を参照してください。
暗号化キーの生成の詳細は、DBMS_CRYPTOの操作上のノート を参照してください。
オブジェクト・ストレージからAutonomous Database 上の既存の表にデータを復号化してロードするには:
Autonomous Database インスタンスに接続します。
DBMS_CLOUD.CREATE_CREDENTIAL
を使用して、クラウド・オブジェクト・ストレージ資格証明を格納します。
たとえば次のようにします。
BEGIN
DBMS_CLOUD.CREATE_CREDENTIAL
(
credential_name => 'OBJ_STORE_CRED',
username => 'user1@example.com',
password => 'password '
);
END;
/
username
およびpassword
に指定する値は、使用しているクラウド・オブジェクト・ストレージ・サービスによって異なります
ユーザー定義関数の復号化コールバック関数を作成します。
たとえば次のようにします。
CREATE OR REPLACE FUNCTION decryption_func(data IN BLOB)
RETURN BLOB
IS
l_decrypted_data BLOB;
BEGIN
DBMS_LOB.createtemporary(l_decrypted_data, TRUE, DBMS_LOB.CALL);
DBMS_CRYPTO.decrypt(
dst => l_decrypted_data,
src => data,
typ => DBMS_CRYPTO.ENCRYPT_AES256 + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5,
key => 'encryption key'
);
RETURN l_decrypted_data;
END decryption_callback;
/
これにより、DECRYPTION_FUNC
復号化関数が作成されます。このファンクションは、ユーザーが指定するキーを使用して、ストリーム暗号またはブロック暗号を使用してデータを復号化します。この例でユーザーが指定したキーはOracle Cloud Infrastructure Vaultに格納され、Oracle Cloud Infrastructure VaultサービスへのRESTコールによって動的に取得されます。
DBMS_CLOUD.COPY_DATA
を実行し、format
オプションencryption
を指定して、データを復号化するために作成したユーザー定義関数を指定します。
BEGIN
DBMS_CLOUD.COPY_DATA
(
table_name => 'CSV_COPY_DATA',
credential_name => 'OBJ_STORE_CRED',
file_uri_list => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namepace-string /b/bucketname /o/encrypted.csv',
format => json_object(
'type' value 'csv',
'encryption' value json_object('user_defined_function' value 'admin.decryption_func'))
);
end;
/
これにより、オブジェクト・ストレージのENCRYPTED.CSV
ファイルが復号化されます。その後、CSV_COPY_DATA
表にデータがロードされます。format
パラメータのencryption
オプション値は、データの復号化に使用するユーザー定義関数名を指定します。
ノート:
ユーザー定義関数に対する
EXECUTE
権限が必要です。