透過的データ暗号化 (TDE) は、ストレージ層でデータベースファイルをリアルタイムに暗号化します。データはディスクに書き込まれる前に暗号化され、メモリに読み込まれる際に復号されます。アプリケーションは通常どおり接続してクエリを実行でき、コード変更は不要です。
TDE の仕組み
TDE は、256ビットキーを使用する Advanced Encryption Standard (AES) アルゴリズムを採用しています。暗号化と復号は I/O レベルで行われ、データベースエンジンが両方の操作を透過的に処理します。
キー管理は Alibaba Cloud Key Management Service (KMS) を通じて行われます。TDE を有効にする前に、以下の 2 種類のキータイプから選択してください。
| キータイプ | 管理者 | コスト | 最適な用途 |
|---|---|---|---|
| サービスキー | Alibaba Cloud (自動) | 無料 | 最もシンプルなセットアップ。キーの所有権に関するコンプライアンス要件がない場合 |
| カスタムキー | お客様 (KMS 経由) | KMS キー料金が適用されます | キーのライフサイクル (ローテーション、無効化、削除) を完全に制御したい場合。規制コンプライアンスが必要な場合 |
適用範囲
開始する前に、以下の条件を満たしていることを確認してください。
-
クラスターが最小マイナーエンジンバージョンの要件を満たしていること。
MySQL 8.0.2 を実行しているサーバーレスクラスターでは、TDE を有効にすることはできません。
製品シリーズ データベースエンジン 最小マイナーエンジンバージョン Cluster Edition MySQL 5.6 5.6.1.0.21 MySQL 5.7 5.7.1.0.3 MySQL 8.0.1、MySQL 8.0.2 8.0.1.1.1 Standard Edition MySQL 5.7 5.7.1.0.3 MySQL 8.0.1、MySQL 8.0.2 8.0.1.1.1 Multi-master Cluster (Limitless) MySQL 8.0.1 8.0.1.0.42 MySQL 8.0.2 8.0.2.0.6 -
カスタムキーを使用する予定がある場合は、以下も必要です。
-
アクティブな Alibaba Cloud KMS インスタンス
-
PolarDB に KMS へのアクセスが許可されていること (PolarDB に KMS へのアクセスを許可する)
-
AliyunSTSAssumeRoleAccess権限を持つ Alibaba Cloud アカウントまたは Resource Access Management (RAM) ユーザー
-
課金
| 料金タイプ | 詳細 |
|---|---|
| ストレージ | TDE によってデータファイルのサイズが増加することはありません。追加のストレージ料金は発生しません。 |
| サービスキー | 無料です。 |
| カスタムキー | PolarDB の料金は発生しません。KMS の キー料金 が適用されます。 |
制限事項
TDE を有効にする前に、以下の制限事項を確認してください。
-
不可逆性: TDE は一度有効にすると無効にできません。
-
クラスターの再起動が必要: TDE を有効にすると、クラスターが再起動され、短時間 (約 10 分間) のサービス中断が発生します。オフピーク時間帯にスケジュールしてください。
-
パフォーマンスへの影響: I/O 集約型のシナリオでは、暗号化と復号により少量の CPU リソースが消費され、データベースのパフォーマンスにわずかな影響を与える可能性があります。
-
サーバーレスの制限: MySQL 8.0.2 を実行しているサーバーレスクラスターでは、TDE を有効にすることはできません。
-
カスタムキーのリスク: カスタムキーが利用できなくなった場合、次回の再起動時にクラスターも利用できなくなります。詳細については、「カスタムキーのリスク」をご参照ください。
-
グローバルデータベースネットワーク (GDN): プライマリクラスターで TDE を有効にすると、すべてのセカンダリクラスターでも自動的に有効になります。GDN 内のすべてのクラスターは、プライマリクラスターのリージョンにある同じキーを共有します。セカンダリクラスターで個別に TDE を有効にすることはできず、キーのリージョンを変更することもできません。
TDE の有効化
TDE を有効にするとクラスターが再起動され、この操作は元に戻せません。慎重に操作してください。
-
PolarDB コンソールにログインします。 左側のナビゲーションペインで、[設定と管理] > [セキュリティ] をクリックします。 [TDE 設定] タブで、[TDE ステータス] スイッチをオンにします。
-
ダイアログボックスで、キータイプを選択します。
-
サービスキー (Alibaba Cloud が自動生成):[OK] をクリックします。追加の設定は不要です。
-
既存のカスタムキーを使用:ドロップダウンリストからキーを選択し、[OK] をクリックします。キーがリストにない場合は、まず KMS でキーを作成します。
TDE 用の KMS キーを作成する際は、暗号化アルゴリズムに
Aliyun_AES_256またはAliyun_SM4を選択します。 TDE は、この 2 つのアルゴリズムのみをサポートしています。 -
-
TDE の有効化が完了するまで待ちます。このプロセスには約 10 分かかり、クラスターが再起動されます。
(オプション) 新しいテーブルの自動暗号化
TDE を有効にした後に作成されるすべてのテーブルを暗号化するには、TDE の有効化時に [詳細設定] スイッチをオンにします。
この設定は、以下で利用できます。
-
PolarDB for MySQL 8.0 (マイナーエンジンバージョン 8.0.1.1.15 以降)
-
PolarDB for MySQL 5.7 (マイナーエンジンバージョン 5.7.1.0.35 以降)
既存テーブルの暗号化
TDE を有効にしても、既存のテーブルは自動的に暗号化されません。手動で暗号化するには、ALTER TABLE を実行します。
ALTER TABLE の実行中は、テーブルがロックされ、読み取りも書き込みもできません。
| データベースバージョン | テーブルの暗号化 | テーブルの復号 |
|---|---|---|
| MySQL 5.6 | ALTER TABLE <table_name> BLOCK_FORMAT=ENCRYPTED; |
ALTER TABLE <table_name> BLOCK_FORMAT=DEFAULT; |
| MySQL 5.7、MySQL 8.0 | ALTER TABLE <table_name> ENCRYPTION = 'Y'; |
ALTER TABLE <table_name> ENCRYPTION = 'N'; |
暗号化ステータスの確認
SHOW CREATE TABLE <table_name>;を実行すると、テーブルが暗号化されているかどうかを確認できます。
-
MySQL 5.7、MySQL 8.0: 出力に
ENCRYPTION='Y'が含まれている場合、テーブルは暗号化されています。 -
MySQL 5.6: 出力に
BLOCK_FORMAT=ENCRYPTEDが含まれている場合、テーブルは暗号化されています。
カスタムキーのリスク
カスタムキーを使用する場合、キーの可用性はクラスターの可用性に直結します。以下のいずれかが発生すると、クラスターが使用できなくなります。
-
KMS でキーが無効化された場合
-
KMS でキーの削除がスケジュールされた場合
-
KMS でキーマテリアルが削除された場合
-
PolarDB の KMS へのアクセス許可が取り消された場合
よくある質問
TDE を有効にすると、ビジネスにどのような影響がありますか?
TDE を有効にすると、クラスターが再起動され、短時間のサービス中断が発生します。オフピーク時間帯に操作をスケジュールしてください。I/O 集約型のワークロードでは、暗号化と復号の操作によりわずかなパフォーマンスオーバーヘッドが発生することが予想されます。
TDE はどのようなセキュリティ問題を解決しますか?
TDE は、ディスクに保存されているデータを保護します。これにより、物理メディアが取り外された場合や、データベースエンジンの外部からストレージファイルにアクセスされた場合など、権限のないユーザーがストレージから直接データベースファイルを読み取ることを防ぎます。この保護はアプリケーションに対して完全に透過的です。
クラスター作成時に RAM ユーザーに TDE の有効化を要求できますか?
はい。RAM ポリシー を設定して、RAM ユーザーがコンソールまたは API 経由でクラスターを作成する際に TDE の有効化を強制することができます。
次のステップ
関連 API
| API | 説明 |
|---|---|
| DescribeDBClusterTDE | PolarDB クラスターの TDE 設定を照会します |
| DescribeUserEncryptionKeyList | PolarDB クラスターのカスタムキーを一覧表示します |
| CheckKMSAuthorized | KMS へのアクセスが承認されているかどうかを確認します |
| ModifyDBClusterTDE | PolarDB クラスターの TDE を有効にします |