透過的なデータ暗号化 (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 の有効化時に [詳細設定] スイッチをオンにします。
この設定は、以下で利用できます。
-
マイナーエンジンバージョンが 8.0.1.1.15 以降の PolarDB for MySQL 8.0
-
マイナーエンジンバージョンが 5.7.1.0.35 以降の PolarDB for MySQL 5.7
既存テーブルの暗号化
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 ユーザーがコンソールまたは API 経由でクラスターを作成する際に TDE の有効化を強制するように、RAM ポリシーを設定できます。
次のステップ
関連 API
| API | 説明 |
|---|---|
| DescribeDBClusterTDE | PolarDB クラスターの TDE 設定を照会します |
| DescribeUserEncryptionKeyList | PolarDB クラスターのカスタムキーを一覧表示します |
| CheckKMSAuthorized | PolarDB に KMS へのアクセスが認可されているかを確認します |
| ModifyDBClusterTDE | PolarDB クラスターの TDE を有効にします |