セキュリティコンプライアンス要件を満たすため、または保存データの暗号化を実行するために、TDE (透過的データ暗号化) 機能を使用できます。TDE は、データファイルに対してリアルタイムの I/O 暗号化と復号を実行します。データベースレイヤーで静的データを暗号化して、攻撃者がストレージから機密情報を読み取るのを防ぎ、データのセキュリティを向上させます。
背景
TDE の仕組みの詳細については、「TDE の暗号化と復号の仕組み」をご参照ください。
前提条件
ApsaraDB RDS for PostgreSQL インスタンスが次の要件を満たしている必要があります。
インスタンスのメジャーバージョンが PostgreSQL 10 以降である。
ストレージタイプがディスクである。
インスタンスのマイナーエンジンバージョンが 20221030 以降である。マイナーエンジンバージョンの表示方法とアップグレード方法の詳細については、「マイナーエンジンバージョンのアップグレード」をご参照ください。
インスタンスに読み取り専用インスタンスがある場合、読み取り専用インスタンスも前述の要件を満たす必要があります。
Alibaba Cloud アカウントを使用して、ApsaraDB RDS に Key Management Service (KMS) へのアクセス権限を付与していること。詳細については、「ApsaraDB RDS に KMS へのアクセス権限を付与する」をご参照ください。
Key Management Service (KMS) が有効化されていること。KMS が有効化されていない場合は、TDE を有効化するときに有効化できます。
使用上の注意
プライマリインスタンスとその読み取り専用インスタンスのマイナーエンジンバージョンが 20221030 以降であることを確認してください。そうでない場合、TDE の有効化は失敗します。
TDE を有効にすると、I/O 集中型 (I/O バウンド) のシナリオでデータベースのパフォーマンスが影響を受ける可能性があります。
TDE が有効なインスタンスは、物理ストリーミングレプリケーションを使用して作成された自己管理のセカンダリデータベースをサポートしません。
TDE は一度有効にすると無効にできません。
Key Management Service (KMS) が通常の状態であることを確認してください。そうでない場合、ディスクを復号できず、インスタンス全体が利用できなくなります。
既存のカスタムキーを使用する場合は、次の点に注意してください。
KMS でカスタムキーを無効化または削除すると、RDS インスタンスが正しく機能しない場合があります。影響を受ける操作には、スナップショットの作成、スナップショットからの復元、セカンダリデータベースの再構築が含まれます。
権限付与を取り消した後に RDS インスタンスを再起動すると、RDS インスタンスは利用できなくなります。
Alibaba Cloud アカウントまたは AliyunSTSAssumeRoleAccess 権限を持つアカウントを使用する必要があります。
説明キー関連の操作の詳細については、「Key Management Service」をご参照ください。
TDE 暗号化の有効化
RDS インスタンス ページに移動し、上部のナビゲーションバーでリージョンを選択してから、対象インスタンスの ID をクリックします。
左側のナビゲーションウィンドウで、セキュリティコントロール をクリックします。
[TDE] タブで、[無効] の左側にあるスライダーをクリックします。
キータイプを選択し、[OK] をクリックして TDE を有効にします。
自動生成キーを使用: このメソッドは、KMS のサービスキーをキー暗号化キー (KEK) として使用します。
既存のカスタムキーを使用: このメソッドは、KMS にアップロードしたカスタマーマスターキー (CMK) を KEK として使用します。カスタムキーがない場合は、[作成] をクリックして KMS コンソールに移動します。次に、キーを作成し、独自のキーマテリアルをインポートします。詳細については、「キーの作成」をご参照ください。
キーの置換
RDS インスタンス ページに移動し、上部のナビゲーションバーでリージョンを選択してから、対象インスタンスの ID をクリックします。
左側のナビゲーションウィンドウで、セキュリティコントロール をクリックします。
[TDE] タブで、[TDE ステータス] の右側にある [キーの置換] をクリックします。
[自動生成キーを使用] または [既存のカスタムキーを使用] を選択し、キーを選択してから [OK] をクリックします。
TDE を使用したテーブルまたはインデックスの暗号化と復号
インスタンスレベルで TDE を有効にした後、テーブルも暗号化する必要があります。
暗号化と復号はパフォーマンスのオーバーヘッドを引き起こします。必要に応じて暗号化の範囲を制御することをお勧めします。
暗号化
グローバル設定
RDS コンソールで rds_default_table_encryption パラメーターを ON に設定できます。このパラメーターを有効にすると、新しいテーブル (CREATE TABLE) とインデックス (CREATE INDEX) はデフォルトで暗号化されます。
説明このパラメーターは、ApsaraDB RDS for PostgreSQL 13、14、および 15 インスタンスにのみ適用されます。パラメーターの変更方法の詳細については、「インスタンスパラメーターの設定」をご参照ください。
このパラメーターが見つからない場合は、マイナーエンジンバージョンを最新バージョンにアップグレードして、もう一度お試しください。詳細については、「マイナーエンジンバージョンのアップグレード」をご参照ください。
rds_default_table_encryption パラメーターの値を ON から OFF に変更した場合、この変更は新しいテーブルまたはインデックスにのみ影響します。この変更は、既存の暗号化されたテーブルおよびインデックスには影響しません。
特定のテーブルまたはインデックスの暗号化
テーブルの暗号化
-- 暗号化されたテーブルを作成します。 CREATE TABLE <tablename> WITH (encryption=on); -- テーブルを暗号化タイプに変更します。 ALTER TABLE <tablename> SET (encryption=on);インデックスの暗号化
-- 暗号化されたインデックスを作成します。 CREATE INDEX <indexname> ... WITH (encryption=on); -- インデックスを暗号化タイプに変更します。 ALTER INDEX <indexname> SET (encryption=on);説明暗号化できるインデックスは、btree、hash、spgist、gin、gist、brin の 6 種類です。
復号
次の 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 を有効にした後でも、他の RDS インスタンスにデータを移行できますか。
はい、できます。
暗号化後もデータがプレーンテキストで表示されるのはなぜですか。
データをクエリすると、データは復号されてメモリに読み込まれます。そのため、データはプレーンテキストで表示されます。TDE は、バックアップファイル内のデータが暗号化されているため、バックアップファイルの漏洩によるデータ侵害を防ぎます。オンプレミスデバイスにデータを復元する場合は、復旧プロセス中にデータを復号する必要があります。
関連ドキュメント
キー関連の操作の詳細については、「Key Management Service」をご参照ください。
グローバル暗号化を設定する際に rds_default_table_encryption パラメーターを変更する方法の詳細については、「インスタンスパラメーターの設定」をご参照ください。
ApsaraDB RDS for PostgreSQL は、インデックス、テーブル、およびデータベースオブジェクトの一括暗号化と復号を実行するための rds_tde_utils 拡張機能を提供します。
アクセスリンクの SSL 暗号化を有効にする方法の詳細については、「SSL リンク暗号化」をご参照ください。
機密データを含む特定の列を暗号化するには、Confidential database (パブリックプレビュー) を有効にできます。この機能が有効になると、機密データは暗号文で送信、計算、保存されます。
API を使用して TDE (透過的データ暗号化) を有効にすることもできます。
API
説明
RDS インスタンスの TDE (透過的データ暗号化) を有効にします。