オブジェクト・ストレージへのエクスポート中のデータの暗号化
Object Storageへのエクスポート中に表データを暗号化できます。
Autonomous AI Databaseからオブジェクト・ストレージへのエクスポート時にデータを暗号化するには、formatパラメータおよびencryptionオプションをDBMS_CLOUD.EXPORT_DATAとともに使用します。
暗号化されたデータをObject Storageにエクスポートする際には、次の点に注意してください。
-
encryptionオプションは、Autonomous AIデータベースからCSV、JSONまたはXMLとしてオブジェクト・ストレージにデータをエクスポートする場合にのみサポートされます。 -
エクスポートに暗号化と圧縮の両方が含まれる場合、操作の順序は、最初にデータが圧縮され、次にデータが暗号化されてから、Object Storageにアップロードされます。
-
サポートされている暗号化方法は2つあります。
-
ユーザー定義関数の使用。
-
DBMS_CRYPTO指定の暗号化アルゴリズムを使用します。暗号化および復号化の暗号化関数および手順の詳細は、DBMS_CRYPTOを参照してください。
-
DBMS_CRYPTO暗号化アルゴリズムを使用したデータの暗号化
クラウド・オブジェクト・ストレージへのエクスポート中に、DBMS_CRYPTO暗号化アルゴリズムを使用してデータを暗号化するステップを示します。
Cloud Object Storageへのエクスポート中にデータを暗号化するには、次のステップを実行します(この例では、表データをCSVファイルにエクスポートします)。
-
Autonomous AI Databaseインスタンスに接続します。
詳細は、Autonomous AI 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_CREDENTIALプロシージャ」を参照してください。
リソース・プリンシパル資格証明を有効にする場合、Oracle Cloud Infrastructureオブジェクト・ストアにアクセスするための資格証明の作成は必要ありません。詳細は、リソース・プリンシパルを使用したOracle Cloud Infrastructureリソースへのアクセスを参照してください。
-
暗号化キー(データの暗号化に使用される暗号化キー)を格納する資格証明を作成します。
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プロシージャ」を参照してください。
-
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プロシージャ」および「EXPORT_DATAのDBMS_CLOUDパッケージのフォーマット・オプション」を参照してください。
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_TABLEDBMS_CLOUD.CREATE_HYBRID_PART_TABLEの場合、このオプションはオブジェクト・ストレージ・ファイルにのみ適用されます。
詳細は、「DBMS_CRYPTOアルゴリズムを使用したデータの復号化とロード」を参照してください。
-
-
Autonomous AI Databaseではないシステムでは、
DBMS_CRYPTOパッケージを同じアルゴリズム・オプションとキーとともに使用してファイルを復号化できます。キーはAutonomous AI Databaseの資格証明に
VARCHAR2として格納されますが、DBMS_CRYPTOはキー・パラメータにRAWタイプを使用します。暗号化アルゴリズムの詳細は、「DBMS_CRYPTOアルゴリズム」を参照してください。
ユーザー定義暗号化機能によるデータの暗号化
クラウド・オブジェクト・ストレージへのエクスポート中に、ユーザー定義の暗号化機能を使用してデータを暗号化するステップを示します。
Cloud Object Storageへのエクスポート中にデータを暗号化するには、次のステップを実行します(この例では、表データをCSVファイルにエクスポートします)。
-
Autonomous AI Databaseインスタンスに接続します。
詳細は、Autonomous AI 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_CREDENTIALプロシージャ」を参照してください。
リソース・プリンシパル資格証明を有効にする場合、Oracle Cloud Infrastructureオブジェクト・ストアにアクセスするための資格証明の作成は必要ありません。詳細は、リソース・プリンシパルを使用したOracle Cloud Infrastructureリソースへのアクセスを参照してください。
-
データを暗号化するためのユーザー定義のコールバック関数を作成します。
たとえば:
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の操作上のノートを参照してください。 -
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プロシージャ」および「EXPORT_DATAのDBMS_CLOUDパッケージのフォーマット・オプション」を参照してください。