Amazon Cognito でユーザープールの削除保護を設定できるようになりました

2022.10.25

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

いわさです。

本日のアップデートで Amazon Cognito のユーザープールに対して削除保護が設定出来るようになりました。

個々のユーザーの削除保護ではなくユーザープールの削除保護です。
設定方法も簡単で追加料金なしで利用いただくことが可能です。

運用環境では必須の設定になりそうです。早速設定方法を確認してみたいと思います。

設定方法

まず、現在 Cognito コンソール画面では新ユーザーインターフェースと旧ユーザーインターフェースを選択出来ますが、本機能は旧ユーザーインターフェースでは設定出来ませんのでマネジメントコンソールから設定する場合は新ユーザーインターフェースに切り替えます。

ユーザープールのプロパティに「削除保護」が追加されていて「アクティブ化」ボタンからアクティブ化出来ます。

これだけです。追加料金もなし。

削除してみる

早速削除を試してみましょう。アクティブ化されているとどういう挙動になるのだろう。

なるほど、削除ダイアログにて削除保護の非アクティブ化を選択した上での削除が必要になりましたね。

非アクティブ化の選択とユーザープール名を入力して削除操作が出来るようになりました。

旧ユーザーインターフェースからも削除できない

アクティブ化自体は新コンソールでのみ設定可能でしたが、旧コンソールで削除するとどうなるのでしょうか。試してみましょう。

お、非アクティブ云々は問われない。削除できそう・・・

おお、削除出来ませんでした。
旧ユーザーインターフェースの場合は非アクティブにして削除することも出来ないので完全に削除禁止された形ですね。
削除保護されたユーザープールを削除するには新ユーザーインターフェースに切り替えた上で非アクティブ化をする必要があります。

あるいは AWS CLI などで非アクティブ化も可能です。

AWS CLI からも消せない

当然ながら AWS CLI からも削除は出来ませんでした。安心ですね。

% aws cognito-idp delete-user-pool --user-pool-id ap-northeast-1_xFEZvNjIl --profile hoge              

An error occurred (InvalidParameterException) when calling the DeleteUserPool operation: The user pool cannot be deleted because deletion protection is activated. Deletion protection must be inactivated first.

AWS CLI からユーザープールの削除保護をアクティブ化する場合は、create-user-pool あるいは update-user-pool の deletion-protection オプションを使うことでアクティブ化/非アクティブ化が可能です。

さいごに

本日は Amazon Cognito でユーザープールの削除保護を設定できるようになったので設定方法などを確認しながら削除が出来ないことを確認しました。

ELB や RDS は Security Hub でも削除保護がされてない場合に警告として挙がってきますが、よく考えると Cognito ユーザープールの場合は現状バックアップと復元が難しいので削除保護の重要度はかなり高い気がします。
運用環境で Congnito ユーザープールをご利用頂いている方は、事故を軽減するためにすぐにでも設定して頂くのが良さそうですね。