オブジェクト・ストレージへのエクスポート中のデータの暗号化
オブジェクト・ストレージへのエクスポート中に表データを暗号化できます。
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暗号化アルゴリズムを使用してデータを暗号化するステップを示します。
クラウド・オブジェクト・ストレージへのエクスポート中にデータを暗号化するには、次のステップを実行します(この例では、表データをCSVファイルにエクスポートします)。
-
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プロシージャ」を参照してください。
-
暗号化キー(データの暗号化に使用する暗号化キー)を格納する資格証明を作成します。
DBMS_CRYPTO暗号化アルゴリズムを使用してデータを暗号化する場合は、暗号化キーを資格証明に格納します。キーは、DBMS_CLOUD.CREATE_CREDENTIALを使用して作成する資格証明のpasswordフィールドに指定されます。たとえば:
BEGIN DBMS_CLOUD.CREATE_CREDENTIAL ( credential_name => 'ENC_CRED_NAME', username => 'Any_username', password => 'password' ); END; / -
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暗号化アルゴリズムを使用してファイルを暗号化するときに、エクスポートしたファイルを使用またはインポートするための次のオプションがあります。
-
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アルゴリズム」を参照してください。
ユーザー定義暗号化機能によるデータの暗号化
クラウド・オブジェクト・ストレージへのエクスポート中に、ユーザー定義の暗号化関数を使用してデータを暗号化するステップを示します。
クラウド・オブジェクト・ストレージへのエクスポート中にデータを暗号化するには、次のステップを実行します(この例では、表データをCSVファイルにエクスポートします)。
-
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プロシージャ」を参照してください。
-
データを暗号化するユーザー定義のコールバック関数を作成します。
たとえば:
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/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パッケージのフォーマット・オプション」を参照してください。