TiDB CloudにてAWS KMSキーを使用した暗号化であるCMEKを使ってみた

TiDB CloudにてAWS KMSキーを使用した暗号化であるCMEKを使ってみた

Clock Icon2024.08.30

こんにちは、ゲームソリューション部のsoraです。
今回は、TiDB CloudにてAWS KMSキーを使用した暗号化であるCMEKを使ってみたことについて書いていきます。

CMEKとは

CMEK(Customer-Managed Encryption Key)とは、TiDB Cloudにおける顧客管理の暗号化キーのことです。
CMEKを有効にしたプロジェクトでTiDB CloudのDedicatedクラスタ(Serverlessは不可)を作成するとクラスタ内のノードで使用されるEBSやバックアップに使用されるS3が暗号化されます。
現状ではAWSで作成したKMSキーのみが使用可能であり、AWSでホストされるクラスタのみで使用可能となっています。(Google Cloudは不可)

CMEKを利用するには、サポートに問い合わせて機能を有効化する必要があります。
私の場合は有効化まで2週間程度かかったため、利用する場合はある程度余裕を持っての準備をおすすめします。

CMEKを使ってみた

以下を参考に進めていきます。
https://docs.pingcap.com/ja/tidbcloud/tidb-cloud-encrypt-cmek

プロジェクトの作成

TiDB CloudでCMEKを有効化したプロジェクトを作成します。
CMEKはプロジェクトごとに有効/無効を設定する必要があり、有効にした場合はプロジェクト内の全てのクラスタで有効になります。
sr-tidb-cloud-cmek01
また、プロジェクト作成後にCMEKの有効/無効を切り替えることはできません。
sr-tidb-cloud-cmek02
ちなみに、CMEKを有効化したプロジェクトを作成しても、この時点ではCMEKが登録されていないためクラスタを作成することができません。
sr-tidb-cloud-cmek03

KMSキーに設定するキーポリシーの確認

TiDB CloudのProject Settings>Encryption AccessでCMEKの作成画面に移動します。
sr-tidb-cloud-cmek04
現状で使用できるキーはAWS KMSのみで、リージョンのみを選択します。
Copy and save JSON file asの部分に表示されるポリシーを使用して後ほどKMSキーを作成します。
CMEKを利用するにはサポートに問い合わせて機能を有効化する必要があると最初の方で記載しましたが、有効化されていない場合はキーポリシー内のTiDB Cloud側でKMSキーを使用するアカウントIDが"kms:CallerAccount": "<pingcap-account>"のようになっていて使用できません。
機能を有効化することでアカウントIDが記述されたポリシーが表示されます。
sr-tidb-cloud-cmek05

KMSキーの作成

AWSにてKMSキーを作成します。
詳細な手順は割愛しますが、キーポリシーについて、共有するアカウントに先ほどTiDB Cloud側で確認したアカウントIDを入力して、コピペはせず作成しました。
TiDB Cloudにて表示されたポリシーをコピペするといくつかエラーが出たため、コピペして使用する場合はコメントアウト部分の削除・管理アカウント/ロール部分の修正などが必要です。

CMEKの作成

先ほど作成したKMSキーを使用してCMEKを作成します。
CMEKの作成画面にて、リージョンとKMSキーのARNを入力することで作成できます。
sr-tidb-cloud-cmek06
sr-tidb-cloud-cmek07
1つのプロジェクトにてCMEKは1つのみ作成することができ、作成時にリージョンを指定する必要があるため、1つのリージョンでのみ使用することが可能です。
別のリージョンでCMEKを有効化したクラスタを作成したい場合は、別プロジェクトを作成する必要があります。
また、キーのローテーションはKMSキーの自動ローテーションをすることでできます。
ちなみに、おそらく画面上では作成したCMEKは削除することができません。(サポートへの問い合わせでできるかもしれません)

TiDB Cloudクラスタの作成

CMEKの準備ができたため、クラスタを作成してみます。
「CMEK encryption is enabled on the current project. Yan can only create an AWS dedicated cluster.」と表示されている通り、Dedicatedクラスタのみが作成可能でServerlessクラスタは作成することができません。
sr-tidb-cloud-cmek08
クラスタ作成画面にてCMEKを使って暗号化する部分にもチェックが入っています。
sr-tidb-cloud-cmek09
また、CMEKを作成したリージョン以外でクラスタを作成しようとすると以下のようなエラーが出て、クラスタが作成できません。
sr-tidb-cloud-cmek10
ちなみに、CMEKを作成後にKMSキーを無効化した状態でTiDB Cloudクラスタを作成すると、Creatingのままステータスが動かなかったです。
CMEKで使用しているKMSキーを削除した場合、プロジェクトを新規に作成して再度CMEKを作成するか、もしくはサポートに問い合わせてCMEKを削除してもらうなどの対応が必要だと思います。

最後に

今回は、TiDB CloudにてAWS KMSキーを使用した暗号化であるCMEKを使ってみたことを記事にしました。
どなたかの参考になると幸いです。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.