[アップデート] AWS Config の新しいマネージドルールを使って CloudFormation スタックの削除保護を検出してみました
いわさです。
先日のアップデートで AWS Config に新しい AWS マネージドルールがいくつか追加されました。
AWS Config は定期的なアップデートでルールやサポートリソースが追加されており、サポート範囲がどんどん広がっています。
そんな中いつものようにいくつかのマネージドルールが追加されたのですが、今回追加されたルールはどれも普段使いしたいものだったので紹介します。
追加されたもの
今回のアップデートでは以下の 13 のルールが追加されました。
それぞれのルール内容や仕様を公式ドキュメントなどを使いながら確認してみました。
- AURORA_GLOBAL_DATABASE_ENCRYPTION_AT_REST
- Aurora Global Database を対象にしたルールは初めてっぽいですね。
- Aurora Global Database でストレージ暗号化が有効になっているかチェックしてくれます。
- CLOUDFORMATION_STACK_SERVICE_ROLE_CHECK
- CloudFormation スタックがサービスロールを使っているかどうかをチェックします。
- CLOUDFORMATION_TERMINATION_PROTECTION_CHECK
- CloudFormation スタックの削除保護がアクティブになっているかをチェックしてくれます。
- 本番環境のスタックなど、削除保護が必須のものをよく目視でチェックしていたりするのでこれはすごく良いですね。
- CLOUDFRONT_DISTRIBUTION_KEY_GROUP_ENABLED
- これは CloudFront ディストリビューションのキャッシュキーに関するチェックです。
- あまり使ったことないかもしれない。
- COGNITO_USER_POOL_DELETE_PROTECTION_ENABLED
- アナウンス記載の識別子間違ってますね。正しくは「COGNITO_USER_POOL_DELETION_PROTECTION_ENABLED」です。
- ユーザープールの削除保護が有効化されているかチェックしてくれます。これも非常に役に立ちそうなルールです。
- COGNITO_USER_POOL_MFA_ENABLED
- こちらはユーザープールで「パスワードのみ」のサインインポリシーが使われている時のみ、MFA が有効化されているかチェックしてくれます。
- ワークロードの設計によるのでこのルールを必須で使うかと言われるとちょっと違いそうですが。
- COGNITO_USERPOOL_CUST_AUTH_THREAT_FULL_CHECK
- 識別子の命名規則が他の Cognito のルールと違うのがちょっと気になります。
- Cognito の脅威保護機能は標準認証用とカスタム認証用で異なる設定が必要になります。このルールではカスタム認証時にフル機能モードで有効化されているかチェックされます。
- https://docs.aws.amazon.com/ja_jp/cognito/latest/developerguide/cognito-user-pool-settings-threat-protection.html
- 通常はフル機能を有効化する前に通常は監査のみモードで一定期間運用します。
- EBS_SNAPSHOT_BLOCK_PUBLIC_ACCESS
- EBS はスナップショットをパブリックに共有する機能があります。ただ、この機能は意図せずに使うとセキュリティの脅威になる場合があります。
- ECS_CAPACITY_PROVIDER_TERMINATION_CHECK
- ECS キャパシティプロバイダーではオートスケーリングによるスケールインが発生した際に、ASG 管理下の EC2 インスタンスが終了するのを防ぐことができます
- ECS_TASK_DEFINITION_EFS_ENCRYPTION_ENABLED
- ECS タスク定義では EFS を使用するように定義できますが、暗号化に関するベストプラクティスが存在します。それらに準拠できているかチェックしてくれます。
- 参考;Amazon ECS で Amazon EFS ボリュームを使用する場合のベストプラクティス - Amazon Elastic Container Service
- ECS_TASK_DEFINITION_WINDOWS_USER_NON_ADMIN / ECS_TASK_DEFINITION_LINUX_USER_NON_ROOT
- ECSタスク定義で Windows/Linux コンテナを管理者ユーザーで実行させるよう指定することができます。この設定がされている時に検出されます。
- SES_SENDING_TLS_REQUIRED
- Amazon SES の構成セットを使うことで TLS ポリシーというものを設定することで、TLS の使用を強制化できます。
- このルールでは強制化が有効化されているか検出してくれます。これはとても良いですね。
CloudFormation スタックの削除保護設定を検出してみる
今回はこの中から CloudFormation スタックの削除保護設定がされているか検出できるルールを試してみます。
本番環境ではデプロイスタックなどが削除されるとワークロードに影響がでる場合があるので、通常スタックの削除保護を有効化すべきです。
それらに準拠できているか確認できるルールです。
すでにいくつか CloudFormation スタックがデプロイ済みの環境なので、早速マネージドルールを追加してみます。
cloudformation-termination-protection-checkを選択します。

非準拠のスタックが検出されました。

この中から一部スタックを編集し、削除保護を有効化してみます。

少し待つと、変更したスタックのコンプライアンスステータスが準拠に変更されました。

さいごに
本日は AWS Config の新しいルールを使って CloudFormation の削除保護を検出してみました。
今回追加されたルールはどれも、これまでできなかったのかというくらい有効なものが多いですね。これまでカスタムルールで対応していた方もこういったルールの更新があるたびにマネージドルールに出来るか見直してみると良さそうです。






