[アップデート] Amazon Cognito ユーザープールの保管時の暗号化にカスタマーマネージドキーを使用できるようになっていました

[アップデート] Amazon Cognito ユーザープールの保管時の暗号化にカスタマーマネージドキーを使用できるようになっていました

2026.06.30

いわさです。

Amazon Cognito はユーザー認証・認可を提供するマネージドサービスです。
ユーザープールに保存されるユーザー属性データは保管時に暗号化されています。

https://docs.aws.amazon.com/cognito/latest/developerguide/data-protection.html

これまでは暗号化に使用されるキーは AWS 所有キー(AWS owned key)のみで、ユーザー側でキーのライフサイクルやアクセスポリシーを管理することはできませんでした。
そのため組織のデータガバナンスポリシーとして暗号化キーを自社管理する必要がある場合に対応が難しい状態でした。

これが、先日のアナウンスされたのですが Amazon Cognito ユーザープールの保管時の暗号化に AWS KMS のカスタマーマネージドキーを使用できるようになりました。

https://aws.amazon.com/about-aws/whats-new/2026/06/amazon-cognito-customer-managed-key

カスタマーマネージドキーを使用することで、暗号化キーのポリシー定義やローテーション、無効化・削除によるアクセス取り消しが可能になります。
また、AWS CloudTrail でキーの使用状況を監査できるため、いつどのようにデータにアクセスされたかの可視性も得られます。
カスタマーマネージドキーが必要なコンプライアンス要件に Cognito が対応できるようになりましたね。

また、公式ドキュメントの更新履歴や他のアップデート情報を確認すると、この機能自体は 5/28 にマルチリージョンレプリケーション(MRR)と同時にリリースされていたみたいです。アナウンスよりもだいぶ前ですね
MRR の前提条件としてカスタマーマネージドキーでの暗号化が必要なため、同時に実装されたようですね。
以下の記事でも MRR を既存ユーザープールに有効化する際の前提として、カスタマーマネージドキーの設定について触れられています。

https://dev.classmethod.jp/articles/amazon-cognito-multi-region-replication-existing-pool/

なお、Essentials ティアおよび Plus ティアのユーザープールで追加費用なく利用可能で、標準の AWS KMS 料金のみが適用されるとのこと。
新規ユーザープールの作成時に設定できるほか、既存のユーザープールにも後から適用できるみたいです。

今回こちらを確認してみたので紹介します。

設定してみる

Cognito コンソールでユーザープールを開き、左メニューの「設定」>「ユーザープールのセキュリティ」を選択します。
「保管中の暗号化」セクションが表示され、デフォルトではキーのタイプが「AWS マネージドキー」になっています。

B0FC901F-942D-4A40-8179-9EFE9947448D.png

なお、Lite プランのユーザープールでは「この機能のロックを解除」と表示され、カスタマーマネージドキーの設定ができませんでした。
ドキュメント記載のとおり Essentials または Plus の機能プランが必要ですね。

8D0E355A-F2C7-49D2-9257-8FBC8073909F.png

キーポリシーなしで設定してみる

まずは KMS キーを作成してキーポリシーを設定せずに、カスタマーマネージドキーを適用してみました。
「保管中の暗号化を編集」画面で「別の AWS KMS キーを選択する (詳細)」を選び、KMS キーの ARN を入力します。

42901C71-5904-4600-8D48-EF322E442FCC.png

この状態で保存しようとしたところ、InvalidParameterException が発生しました。

B4ED13BB-8C08-4353-9600-6818B4653D3B_4_5005_c.jpeg

エラーの詳細を確認すると、Cognito is not authorized to perform: kms:DescribeKey on KMS Key と出力されており、Cognito がキーに対して kms:DescribeKey を実行する権限がないため、キーポリシーの事前設定が必須であることがわかります。なるほどね。

1FBCD929-F948-47B8-BFE3-FBC874637164_4_5005_c.jpeg

キーポリシーの設定

Cognito コンソールの暗号化設定画面には「KMS キーポリシーの拡張」というセクションがあり、必要なキーポリシーのテンプレートが表示されます。
「キーポリシー: ユーザープールのみ」と「キーポリシー: ユーザープールとログのエクスポート」の 2 種類から選択でき、クリップボードにコピーできるようになっています。

E228CB89-34C5-4F63-B589-9C3AAC9C196F.png

ログのエクスポートを使用していない場合は「キーポリシー: ユーザープールのみ」で十分です。
公式ドキュメントによると、キーポリシーには cognito-idp.amazonaws.comidentitystore.amazonaws.com の 2 つのサービスプリンシパルに対して権限を付与する必要があるみたいです。

なお、使用できるキーにはいくつか制約があります。
ユーザープールと同じリージョンの対称キーのみサポートされ、非対称キーは使用できないとのこと。
また、キーの指定にはエイリアスではなく ARN を使用する必要があります。

Amazon Cognito supports only symmetric KMS keys in the same AWS Region as your user pool for user pool encryption at rest. You can't configure user pool encryption at rest with asymmetric keys.

You can configure user pool encryption only with a KMS key ARN, not an alias.

KMS コンソールでキーポリシーを編集し、Cognito コンソールで表示されたポリシーを反映します。

2E2147B8-7F79-430B-80B0-55AFA829A18F.png

カスタマーマネージドキーの適用

キーポリシーを設定した状態で再度保存すると、正常に更新されました。
「ユーザープールのセキュリティ」画面でキーのタイプが「カスタマーマネージドキー」に変わり、キー ARN やキーのステータス、プライマリリージョンなどの情報が表示されることが確認できます。

82755629-87DD-4888-9A36-5043CF581A3C.png

さいごに

本日は Amazon Cognito ユーザープールの保管時の暗号化にカスタマーマネージドキーを使用できるようになったアップデートを確認してみました。

地味なアップデートですが、これまで非対応だったために Cognito が採用できないケースもあったのではないだろうか。
Essentials ティアと Plus ティアで追加費用なく使えるので、データガバナンスの要件がある場合は検討してみてください。

この記事をシェアする

AWSのお困り事はクラスメソッドへ

関連記事