透過的データ暗号化 (TDE) は、リアルタイムの I/O 暗号化と復号を使用して、RDS インスタンスの保管時のデータファイルを保護します。基盤となるストレージへの不正アクセスはブロックされるため、物理メディアが侵害された場合でもデータは保護されたままになります。
TDE は一度有効にすると無効にできません。続行する前に、キータイプを慎重に選択してください。
背景情報
TDE の詳細については、「原理」をご参照ください。
前提条件
開始する前に、以下を確認してください。
-
PostgreSQL 10 以降を実行している RDS インスタンス
-
クラウドディスクを使用している RDS インスタンス
-
20221030 以降のマイナーエンジンバージョン — 「マイナーエンジンバージョンの更新」をご参照ください
-
接続されているすべての読み取り専用インスタンスが同じ要件を満たしていること
-
ApsaraDB RDS が Key Management Service (KMS) にアクセスすることを承認した Alibaba Cloud アカウント — 「ApsaraDB RDS への KMS のアクセス承認」をご参照ください
-
KMS が有効化されていること (TDE の有効化時に有効化できます)
使用上の注意
-
プライマリ RDS インスタンスと読み取り専用 RDS インスタンスのマイナーエンジンバージョンが 20221030 以降であることを確認してください。そうでない場合、TDE は有効にできません。
-
TDE を有効にすると、I/O バウンドのワークロードシナリオではデータベースのパフォーマンスに影響が出る可能性があります。
-
プライマリ RDS インスタンスで TDE が有効になっている場合、プライマリ RDS インスタンスと自己管理のセカンダリインスタンス間のストリーミングレプリケーションはサポートされません。
-
KMS は常に有効かつ稼働中の状態にしてください。KMS が利用できなくなると、RDS インスタンスのクラウドディスクが復号できなくなり、インスタンスが利用できなくなります。
-
カスタムキーを使用する場合は、次の点に注意してください。
-
カスタムキーを無効化または削除すると、RDS インスタンスが期待どおりに動作しなくなります。影響を受ける操作には、スナップショットの作成、スナップショットからのデータ復元、セカンダリ RDS インスタンスの再構築などがあります。
-
カスタムキーを無効にした後に RDS インスタンスを再起動すると、インスタンスは利用できなくなります。
-
Alibaba Cloud アカウント、または [AliyunSTSAssumeRoleAccess] ポリシーがアタッチされたアカウントを使用する必要があります。
-
KMS の詳細については、「KMS とは」をご参照ください。
キータイプの選択
TDE は、キー暗号化キー (KEK) を使用してデータ暗号化キーを保護します。利用可能なキータイプは 2 種類です。
| 自動生成キー | 既存のカスタムキー | |
|---|---|---|
| キーソース | KMS が提供するサービスキー | KMS にアップロードするカスタマーマスターキー (CMK) |
| 使用場面 | 運用上のオーバーヘッドを最小限に抑えたい場合 | コンプライアンスやセキュリティポリシー上の理由でキーアクセスを制御する必要がある場合 |
| リスク | 追加の運用リスクなし | キーを無効化または削除すると、インスタンスが利用できなくなります |
カスタムキーがない場合は、TDE を有効にする前に KMS コンソールでキーを作成してください — 「CMK の作成」をご参照ください。
TDE の有効化
-
「インスタンス」ページに移動します。上部メニューで、RDS インスタンスが存在するリージョンを選択し、インスタンス ID をクリックします。
-
左側メニューで、[データセキュリティ] をクリックします。
-
[TDE] タブで、[TDE ステータス] をオンにします。
-
ダイアログボックスでキータイプを選択し、[OK] をクリックします。
-
[自動生成キーの使用]:KMS が提供するサービスキーを KEK として使用します。
-
[既存のカスタムキーの使用]:KMS にアップロードした CMK を使用します。カスタムキーがない場合は、[KMS コンソールへ] をクリックしてキーを作成し、キーマテリアルをインポートします。
-
キーの置換
-
「インスタンス」ページに移動します。上部メニューで、RDS インスタンスが存在するリージョンを選択し、インスタンス ID をクリックします。
-
左側メニューで、[データセキュリティ] をクリックします。
-
[TDE] タブで、[TDE ステータス] の右側にある [キーの置換] をクリックします。
-
ダイアログボックスで [自動生成キーの使用] または [既存のカスタムキーの使用] を選択し、[OK] をクリックします。
テーブルとインデックスの暗号化または復号
TDE を有効にした後、オブジェクトレベルで暗号化するテーブルとインデックスを制御できます。
暗号化および復号操作は、パフォーマンスの低下を引き起こす可能性があります。ワークロードに基づいて適切な暗号化範囲を選択してください。
テーブルとインデックスの暗号化
グローバルデフォルトの設定 (PostgreSQL 13、14、15 のみ)
ApsaraDB RDS コンソールで [rds_default_table_encryption] パラメーターを on に設定すると、デフォルトですべての新しいテーブルとインデックスが暗号化されます。このパラメーターを on から off に変更しても、影響を受けるのは新しいオブジェクトのみです。既存の暗号化されたテーブルとインデックスは影響を受けません。
コンソールにパラメーターが表示されない場合は、マイナーエンジンバージョンを最新バージョンに更新して再試行してください。「ApsaraDB RDS for PostgreSQL インスタンスのパラメーターの変更」をご参照ください。
個々のテーブルとインデックスの暗号化
-- 暗号化テーブルの作成
CREATE TABLE <tablename> WITH (encryption=on);
-- 既存テーブルの暗号化
ALTER TABLE <tablename> SET (encryption=on);
-- 暗号化インデックスの作成
CREATE INDEX <indexname> ... WITH (encryption=on);
-- 既存インデックスの暗号化
ALTER INDEX <indexname> SET (encryption=on);
次のインデックスタイプは暗号化に対応しています:B-tree、hash、SP-GiST、GIN、GiST、BRIN。
テーブルとインデックスの復号
以下のステートメントは、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 インスタンスから別のインスタンスにデータを移行できますか?
はい。TDE は RDS インスタンス間のデータ移行をブロックしません。
TDE を有効にした後、データがプレーンテキストで表示されます — 何か問題がありますか?
いいえ。TDE はディスク上のデータ (暗号文) を暗号化しますが、クエリのためにデータをメモリに読み込む際に自動的に復号します。クエリ結果に表示されるのは復号されたプレーンテキストであり、これは意図された動作です。TDE はバックアップファイルも暗号化します。暗号化されたバックアップをローカルマシンに復元するには、まずバックアップファイルを復号してください。
次のステップ
-
SSL 暗号化 — RDS インスタンスへの接続を暗号化します
-
完全暗号化データベース — 機密データ列を暗号化し、データが暗号文で送信、計算、保存されるようにします
関連 API
| 操作 | 説明 |
|---|---|
| ModifyDBInstanceTDE | インスタンスの TDE を有効にします |