すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB RDS:rds_tde_utils拡張機能を使用して、一度に複数のデータレコードを暗号化および復号化する

最終更新日:Jan 11, 2024

透過的データ暗号化 (TDE) では、ALTERステートメントを使用して、テーブルとインデックスを暗号化および復号します。 暗号化と復号化を簡素化するために、ApsaraDB RDS for PostgreSQLは、一度に複数のデータレコードを暗号化および復号化するためのrds_tde_utils拡張機能を提供しています。

前提条件

ApsaraDB RDS for PostgreSQLインスタンスは、次の要件を満たしています。
  • RDSインスタンスのメジャーバージョンはPostgreSQL 10以降です。
  • RDSインスタンスのマイナーエンジンバージョンが20221030以降です。
    説明 RDSインスタンスのマイナーエンジンバージョンを更新する方法の詳細については、「マイナーエンジンバージョンの更新」をご参照ください。
  • TDEは有効です。 詳細については、「TDEの設定」をご参照ください。

使用上の注意

一度に複数のデータレコードを暗号化または復号化するステートメントを実行した場合、結果はすべてのデータレコードが暗号化または復号化された後にのみ返されます。 データベース内に多数のテーブルが存在する場合、暗号化または復号化が完了するまでに時間がかかる。 注意して進めてください。

拡張機能の作成または削除

説明 このセクションで提供されているステートメントを実行するには、特権アカウントを使用することを推奨します。
  • エクステンションを作成します。
    拡張の作成rds_tde_utils;
  • 拡張子を削除します。
    ドロップ延長rds_tde_utils;

  1. テストデータを作成します。
    CREATE TABLE table_a(id int);
    CREATE INDEX index_a1 ON table_a(id);
    CREATE INDEX index_a2 ON table_a USING hash(id);
    CREATE TABLE table_b(id int);
    CREATE INDEX index_b1 ON table_b(id);
    CREATE INDEX index_b2 ON table_b USING hash(id); 
  2. 一度に複数のデータレコードを暗号化します。
    説明
    暗号化プロセスは、テーブルを書き換える。 rds_tde_lazy_encrypt_tableまたはrds_tde_encrypt_table関数を呼び出して、テーブルを暗号化します。 次のリストに、関数の書き換えロジックを示します。
    • rds_tde_lazy_encrypt_table関数の書き換えロジックは、LAZY VACUUMと同様です。
    • rds_tde_encrypt_table関数の書き換えロジックは、VACUUM FULLと同様です。 ピーク時にはデータを暗号化しないことを推奨します。
    • table_aという名前のテーブルとそのインデックス (index_a1およびindex_a2) を一度に暗号化します。
      • SELECT rds_tde_lazy_encrypt_table('table_a'::regclass);
      • SELECT rds_tde_encrypt_table('table_a'::regclass);
    • データベース内のすべてのテーブル (table_aおよびtable_b) とテーブルのインデックスを一度に暗号化します。
      • SELECT rds_tde_lazy_encrypt_database();
      • SELECT rds_tde_encrypt_database();
  3. 一度に複数のデータレコードを復号化します。
    説明
    解読プロセスはテーブルを書き換える。 rds_tde_lazy_decryp_tableまたはrds_tde_decryp_table関数を呼び出して、テーブルを復号します。 次のリストに、関数の書き換えロジックを示します。
    • rds_tde_lazy_decryp_table関数の書き換えロジックは、LAZY VACUUMと同様です。
    • rds_tde_decryp_table関数の書き換えロジックは、VACUUM FULLと同様です。 ピーク時にはデータを復号化しないことを推奨します。
    • table_aという名前のテーブルとそのインデックス (index_a1およびindex_a2) を一度に復号します。
      • SELECT rds_tde_lazy_decrypt_table('table_a'::regclass);
      • SELECT rds_tde_decrypt_table('table_a'::regclass);
    • データベース内のすべてのテーブル (table_aおよびtable_b) とテーブルのインデックスを一度に復号します。
      • SELECT rds_tde_lazy_decrypt_database();
      • SELECT rds_tde_decrypt_database();