TiDB CloudにてAWS KMSキーを使用した暗号化であるCMEKを使ってみた
こんにちは、ゲームソリューション部の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を使ってみた
以下を参考に進めていきます。
プロジェクトの作成
TiDB CloudでCMEKを有効化したプロジェクトを作成します。
CMEKはプロジェクトごとに有効/無効を設定する必要があり、有効にした場合はプロジェクト内の全てのクラスタで有効になります。
また、プロジェクト作成後にCMEKの有効/無効を切り替えることはできません。
ちなみに、CMEKを有効化したプロジェクトを作成しても、この時点ではCMEKが登録されていないためクラスタを作成することができません。
KMSキーに設定するキーポリシーの確認
TiDB CloudのProject Settings>Encryption Access
でCMEKの作成画面に移動します。
現状で使用できるキーはAWS KMSのみで、リージョンのみを選択します。
Copy and save JSON file as
の部分に表示されるポリシーを使用して後ほどKMSキーを作成します。
CMEKを利用するにはサポートに問い合わせて機能を有効化する必要があると最初の方で記載しましたが、有効化されていない場合はキーポリシー内のTiDB Cloud側でKMSキーを使用するアカウントIDが"kms:CallerAccount": "<pingcap-account>"
のようになっていて使用できません。
機能を有効化することでアカウントIDが記述されたポリシーが表示されます。
KMSキーの作成
AWSにてKMSキーを作成します。
詳細な手順は割愛しますが、キーポリシーについて、共有するアカウントに先ほどTiDB Cloud側で確認したアカウントIDを入力して、コピペはせず作成しました。
TiDB Cloudにて表示されたポリシーをコピペするといくつかエラーが出たため、コピペして使用する場合はコメントアウト部分の削除・管理アカウント/ロール部分の修正などが必要です。
CMEKの作成
先ほど作成したKMSキーを使用してCMEKを作成します。
CMEKの作成画面にて、リージョンとKMSキーのARNを入力することで作成できます。
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クラスタは作成することができません。
クラスタ作成画面にてCMEKを使って暗号化する部分にもチェックが入っています。
また、CMEKを作成したリージョン以外でクラスタを作成しようとすると以下のようなエラーが出て、クラスタが作成できません。
ちなみに、CMEKを作成後にKMSキーを無効化した状態でTiDB Cloudクラスタを作成すると、Creatingのままステータスが動かなかったです。
CMEKで使用しているKMSキーを削除した場合、プロジェクトを新規に作成して再度CMEKを作成するか、もしくはサポートに問い合わせてCMEKを削除してもらうなどの対応が必要だと思います。
最後に
今回は、TiDB CloudにてAWS KMSキーを使用した暗号化であるCMEKを使ってみたことを記事にしました。
どなたかの参考になると幸いです。