顧客管理の暗号化キーを使用した保存時の暗号化
顧客管理の暗号化キー (CMEK) を使用すると、完全に制御できる暗号化キーを利用して、TiDB 専用クラスター内の静的データを保護できます。このキーは CMEK キーと呼ばれます。
プロジェクトで CMEK が有効になると、そのプロジェクト内で作成されたすべてのクラスターが CMEK キーを使用して静的データを暗号化します。さらに、これらのクラスターによって生成されたバックアップ データはすべて、同じキーを使用して暗号化されます。 CMEK が有効になっていない場合、 TiDB Cloud はエスクロー キーを使用して、クラスター内の静止時にすべてのデータを暗号化します。
注記:
現在、この機能はリクエストがあった場合にのみ利用可能です。この機能を試す必要がある場合は、 サポートにお問い合わせください。
制限
- 現在、 TiDB Cloudは、CMEK を提供するための AWS KMS の使用のみをサポートしています。
- CMEK を使用するには、プロジェクトの作成時に CMEK を有効にし、クラスターを作成する前に CMEK 関連の構成を完了する必要があります。既存のプロジェクトに対して CMEK を有効にすることはできません。
- 現在、CMEK 対応プロジェクトでは、AWS でホストされるクラスターをTiDB専用だけ作成できます。 Google Cloud でホストされる TiDB 専用クラスタとTiDB サーバーレスクラスタはサポートされていません。
- 現在、特定のプロジェクトでは、1 つの AWS リージョンに対してのみ CMEK を有効にすることができます。構成後は、同じプロジェクト内の他のリージョンにクラスターを作成することはできません。
CMEKを有効にする
アカウントが所有する KMS を使用してデータを暗号化する場合は、次の手順を実行します。
ステップ 1. CMEK 対応プロジェクトを作成する
組織のOrganization Owner
ロールに属している場合は、 TiDB Cloudコンソールまたは API を使用して CMEK 対応プロジェクトを作成できます。
- Use Console
- Use API
CMEK 対応プロジェクトを作成するには、次の手順を実行します。
- クリック
TiDB Cloudコンソールの左下隅にあります。 - [組織の設定]をクリックします。
- [組織の設定]ページで、 [新しいプロジェクトの作成]をクリックしてプロジェクト作成ダイアログを開きます。
- プロジェクト名を入力します。
- プロジェクトの CMEK 機能を有効にすることを選択します。
- 「確認」をクリックしてプロジェクトの作成を完了します。
このステップは、 TiDB Cloud API を使用してCMEK 対応プロジェクトを作成するエンドポイントを介して完了できます。 aws_cmek_enabled
フィールドがtrue
に設定されていることを確認してください。
現在、 TiDB Cloud API はまだベータ版です。詳細については、 TiDB CloudAPI ドキュメントを参照してください。
ステップ 2. プロジェクトの CMEK 構成を完了する
TiDB Cloudコンソールまたは API を使用して、プロジェクトの CMEK 構成を完了できます。
注記:
キーのポリシーが要件を満たしていること、および不十分な権限やアカウントの問題などのエラーがないことを確認してください。これらのエラーにより、このキーを使用してクラスターが誤って作成される可能性があります。
- Use Console
- Use API
プロジェクトの CMEK 構成を完了するには、次の手順を実行します。
- クリック
複数のプロジェクトがある場合は、左下隅でターゲット プロジェクトに切り替え、 [プロジェクト設定]をクリックします。 - 「暗号化アクセス」をクリックして、プロジェクトの暗号化管理ページに入ります。
- 「暗号化キーの作成」をクリックして、キー作成ページに入ります。
- キープロバイダーは AWS KMS のみをサポートします。暗号化キーを使用できる地域を選択できます。
- JSON ファイルをコピーして
ROLE-TRUST-POLICY.JSON
として保存します。このファイルには信頼関係が記述されています。 - この信頼関係を AWS KMS のキーポリシーに追加します。詳細については、 AWS KMS の主要なポリシーを参照してください。
- TiDB Cloudコンソールで、キー作成ページの一番下までスクロールし、AWS KMS から取得したKMS キー ARNを入力します。
- 「作成」をクリックしてキーを作成します。
AWS KMS でキー ポリシーを設定し、次の情報をキー ポリシーに追加します。
{ "Version": "2012-10-17", "Id": "cmek-policy", "Statement": [ // EBS-related policy { "Sid": "Allow access through EBS for all principals in the account that are authorized to use EBS", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:CreateGrant", "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:CallerAccount": "<pingcap-account>", "kms:ViaService": "ec2.<region>.amazonaws.com" } } }, // S3-related policy { "Sid": "Allow TiDB cloud role to use KMS to store encrypted backup to S3", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<pingcap-account>:root" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*" }, ... // user's own admin access to KMS ] }<pingcap-account>
は、クラスターが実行されるアカウントです。アカウントがわからない場合は、 TiDB Cloudのサポートにお問い合わせください。<region>
はクラスターを作成するリージョンです (例:us-west-2
)。地域を指定したくない場合は、<region>
ワイルドカード*
に置き換えて、StringLike
ブロックに置きます。- 前のブロックの EBS 関連のポリシーについては、 AWS ドキュメントを参照してください。
- 前のブロックの S3 関連のポリシーについては、 AWS ブログを参照してください。
TiDB Cloud API のAWS CMEK の構成エンドポイントを呼び出します。
現在、 TiDB Cloud API はまだベータ版です。詳細については、 TiDB CloudAPI ドキュメントを参照してください。
注記:
この機能は将来的にさらに強化される予定で、今後の機能では追加の権限が必要になる場合があります。したがって、このポリシー要件は変更される可能性があります。
ステップ 3. クラスターを作成する
ステップ1で作成したプロジェクトの下に、AWS でホストされる TiDB 専用クラスターを作成します。詳細な手順については、 このドキュメントを参照してください。クラスターが配置されているリージョンがステップ2のリージョンと同じであることを確認します。
注記:
CMEK が有効な場合、クラスターのノードによって使用される EBS ボリュームとクラスターのバックアップに使用される S3 は、CMEK を使用して暗号化されます。
CMEKを回転
自動 CMEK ローテーション AWS KMS で設定できます。このローテーションを有効にすると、 TiDB Cloudのプロジェクト設定で CMEK ID を含む暗号化アクセスを更新する必要はありません。
CMEK を取り消して復元する
TiDB Cloud の CMEK へのアクセスを一時的に取り消す必要がある場合は、次の手順に従ってください。
- AWS KMS コンソールで、対応するアクセス許可を取り消し、KMS キー ポリシーを更新します。
- TiDB Cloudコンソールで、プロジェクト内のすべてのクラスターを一時停止します。
注記:
AWS KMS で CMEK を取り消しても、実行中のクラスターは影響を受けません。ただし、クラスターを一時停止してからクラスターを復元すると、クラスターは CMEK にアクセスできないため、正常に復元できなくなります。
TiDB Cloud の CMEK へのアクセスを取り消した後、アクセスを復元する必要がある場合は、次の手順に従います。
- AWS KMS コンソールで、CMEK アクセス ポリシーを復元します。
- TiDB Cloudコンソールで、プロジェクト内のすべてのクラスターを復元します。