このトピックでは、ApsaraDB RDS for PostgreSQLインスタンスの透過的データ暗号化 (TDE) 機能を有効にする方法について説明します。 TDEを使用して、データファイルに対してリアルタイムのI/O暗号化および復号化を実行したり、データベースレイヤーで保存中のデータ暗号化を実行したりして、攻撃者がデータベースをバイパスして機密情報をストレージから読み取ることを防ぐことができます。 これにより、データベース内の機密データのセキュリティが効果的に向上します。
前提条件
RDSインスタンスは次の要件を満たしています。
RDSインスタンスはPostgreSQL 10以降を実行します。
RDSインスタンスはクラウドディスクを使用しています。
マイナーエンジンのバージョンは20221030以降です。 RDSインスタンスのマイナーエンジンバージョンを表示する方法の詳細については、「マイナーエンジンバージョンの更新」をご参照ください。
読み取り専用RDSインスタンスがRDSインスタンスにアタッチされている場合は、読み取り専用RDSインスタンスも上記の要件を満たしていることを確認してください。
説明詳細については、「マイナーエンジンバージョンの更新」をご参照ください。
Alibaba Cloudアカウントを使用して、ApsaraDB RDSにKey Management Service (KMS) へのアクセスを許可します。 詳細については、「ApsaraDB RDS For MySQLインスタンスのKMSへのアクセス許可」をご参照ください。
KMS が有効化されていること。 KMSがアクティブ化されていない場合、TDEを有効にするとKMSをアクティブ化できます。
使用上の注意
読み取り専用RDSインスタンスがRDSインスタンスにアタッチされている場合は、プライマリRDSインスタンスと読み取り専用RDSインスタンスのマイナーエンジンバージョンが20221030以降であることを確認してください。 それ以外の場合、TDEを有効にできません。
TDEを有効にすると、RDSインスタンスが再起動し、インスタンスの切り替えが発生します。 影響を最小限に抑えるため、RDSインスタンスを再起動する前にビジネスを手配することを推奨します。 作業は慎重に行ってください。 インスタンスの切り替えの影響の詳細については、「インスタンスの切り替えの影響」をご参照ください。
TDEを有効にすると、TDEを無効にすることはできません。
TDEを有効にすると、I/Oバウンドのワークロードシナリオでデータベースのパフォーマンスが影響を受ける可能性があります。
プライマリRDSインスタンスに対してTDEが有効になっている場合、プライマリRDSインスタンスと自己管理型セカンダリインスタンス間のストリーミングレプリケーションはサポートされません。
KMSが期限切れの場合、RDSインスタンスのクラウドディスクは復号化できず、インスタンスは使用できなくなります。 KMSが正常に実行されることを確認します。
TDEに既存のカスタムキーを使用する場合は、次の項目に注意してください。
カスタムキーを無効または削除した場合、RDSインスタンスは期待どおりに実行できません。 影響を受ける操作には、スナップショットの作成、スナップショットを使用したデータの復元、セカンダリRDSインスタンスの再構築が含まれます。
カスタムキーを無効にした後にRDSインスタンスを再起動すると、RDSインスタンスは使用できなくなります。
Alibaba CloudアカウントまたはAliyunSTSAssumeRoleAccessポリシーがアタッチされているアカウントを使用する必要があります。
説明詳細については、次をご参照ください: KMSとは何ですか?
TDE を有効化する
[インスタンス] ページに移動します。 上部のナビゲーションバーで、RDS インスタンスが存在するリージョンを選択します。 次に、RDSインスタンスを見つけ、インスタンスのIDをクリックします。
表示されるページの左側のナビゲーションウィンドウで、セキュリティコントロール をクリックします。
TDEタブで、TDEステータスをオンにします。
表示されるダイアログボックスで、キーの種類を選択し、[OK] をクリックします。
自動生成キーの使用: このメソッドで使用されるキー暗号化キー (KEK) は、KMSによって提供されるサービスキーです。
既存のカスタムキーの使用: このメソッドで使用されるKEKは、KMSにアップロードする顧客マスターキー (CMK) です。 カスタムキーがない場合は、[KMSコンソールに移動] をクリックしてカスタムキーを作成し、独自のキーマテリアルをインポートする必要があります。 詳細については、「CMKの作成」をご参照ください。
説明暗号化の原則の詳細については、「概要」をご参照ください。
オプションです。 キーを置き換えます。
TDEタブで、TDEステータスの右側にある [置換キー] をクリックします。
表示されるダイアログボックスで、[自動生成キーを使用] または [既存のカスタムキーを使用] を選択し、[OK] をクリックします。
TDEを使用したテーブルまたはインデックスの暗号化または復号化
RDSインスタンスでTDEを有効にした後、TDEを使用してRDSインスタンスのテーブルを暗号化または復号化する必要があります。
暗号化および復号化は、性能損失を引き起こす可能性がある。 パフォーマンスの低下を最小限に抑えるために、適切な暗号化範囲を選択することを推奨します。
暗号化
グローバル設定
ApsaraDB RDSコンソールで、rds_default_table_encryptionパラメーターをonに設定します。 このパラメーターを有効にすると、新しいテーブルとインデックスはデフォルトで暗号化されます。
説明このパラメーターは、PostgreSQL 13、PostgreSQL 14、およびPostgreSQL 15を実行するRDSインスタンスにのみ適用できます。 詳細については、「ApsaraDB RDS For PostgreSQLインスタンスのパラメーターの変更」をご参照ください。
このパラメーターが見つからない場合は、RDSインスタンスのマイナーエンジンバージョンを最新バージョンに更新し、再試行してください。 マイナーエンジンバージョンの更新方法の詳細については、「マイナーエンジンバージョンの更新」をご参照ください。
rds_default_table_encryptionパラメーターの値をonからoffに変更した場合、変更は新しいテーブルまたはインデックスに対してのみ有効になります。 変更前に作成された暗号化されたテーブルとインデックスは影響を受けません。
テーブルとインデックスの暗号化
テーブルを暗号化します。
-- Create an encrypted table. CREATE TABLE <tablename> WITH (encryption=on); -- Set the encryption parameter to on for a table. ALTER TABLE <tablename> SET (encryption=on);
インデックスを暗号化します。
-- Create an encrypted index. CREATE INDEX <indexname> ... WITH (encryption=on); -- Set the encryption parameter to on for an index. ALTER INDEX <indexname> SET (encryption=on);
説明以下のタイプのインデックスを暗号化することができる: Bツリー、ハッシュ、SP − GiST、GIN、GiST、およびBRIN。
解読
次のALTERステートメントは、VACUUM FULLステートメントと同様に、テーブルまたはインデックスの書き換えをトリガーします。 オフピーク時に次のステートメントを実行することを推奨します。
暗号化されたテーブルを復号化します。
ALTER TABLE <tablename> SET (encryption=off);
暗号化されたインデックスを復号化します。
ALTER INDEX <indexname> SET(encryption=off);
テーブルまたはインデックスの暗号化ステータスの表示
SELECT relname, reloptions FROM pg_class WHERE relname IN ('<tablename>', '<indexname>');
よくある質問
TDEを有効にした後、pgAdminなどの一般的なデータベースツールを使用できますか?
はい、TDEを有効にすると、pgAdminなどの一般的なデータベースツールを使用できます。
TDEを有効にした後、RDSインスタンスから別のRDSインスタンスにデータを移行できますか。
はい。TDEを有効にすると、RDSインスタンスから別のRDSインスタンスにデータを移行できます。
TDEを有効にした後、データがまだ平文であるのはなぜですか?
TDEを有効にすると、データは暗号文で保存されます。 しかし、データが照会されると、データは解読され、平文でメモリにロードされる。 TDEはバックアップファイルを暗号化してデータ漏洩を防ぎます。 暗号化されたバックアップファイルを使用してRDSインスタンスのデータをコンピューターに復元する前に、ファイルを復号化する必要があります。
関連ドキュメント
詳細については、次をご参照ください: KMSとは何ですか?
rds_default_table_encryptionパラメーターの値を変更する方法の詳細については、「ApsaraDB RDS For PostgreSQLインスタンスのパラメーターの変更」をご参照ください。
rds_tde_utils拡張機能を使用して一度に複数のインデックス、テーブル、およびデータベースオブジェクトを暗号化および復号する方法の詳細については、「rds_tde_utils拡張機能を使用して一度に複数のデータレコードを暗号化および復号する」をご参照ください。
SSLを使用してRDSインスタンスへの接続を暗号化する方法の詳細については、「SSL暗号化」をご参照ください。
常に機密データベース機能を使用してデータベーステーブルの機密データ列を暗号化する方法の詳細については、「常に機密データベース」をご参照ください。 暗号化後、機密データは送信され、計算され、暗号文に格納される。
操作を呼び出してTDEを有効にする方法の詳細については、次の表を参照してください。
API 操作
説明
インスタンスのTDEを有効にします。