Security Hub コントロール Config.1 のカスタムパラメータを CloudFormation で設定する
どうも、こんにちは kaz です。
最近、白身魚のポワレを作るのにハマってます。
パリッと焼けた白身魚に、レモンの風味を効かせたクリームソースがたまらなく美味しいです。
とろっとろのブールブランソースをうまく作れるようになりたいなぁと思いつつ、今日は AWS Security Hub の話をします。
はじめに
Security Hub コントロール [Config.1] は2024年8月15日に以下の仕様変更がありました。
このコントロールは、以下3つのチェック観点から評価されます。すべての観点が満たされていた場合に成功となります。
・AWS Config(レコーダー)が有効化されているか
・有効化されているすべてのSecurity Hubコントロールに対応するすべてのリソースタイプがConfigレコーダーで記録できているか
・AWS Configのサービスリンクロール(AWSServiceRoleForConfig)が作成されているかCMメンバーズに加入している場合、初期設定で AWS Config の IAM ロールにカスタムロール「cm-config-role-all-regions」を設定します。
この IAM ロール「cm-config-role-all-regions」は弊社管理のロールであるため、変更を実施しないようお願いいたします。そしてこの状態だと、コントロールの3つ目のチェック観点に違反してしまうため、このコントロールは常に失敗となります。回避手段として、2024 年 8 月 15 日に[Config.1]にカスタムパラメーター(includeConfigServiceLinkedRoleCheck)が追加されました。
デフォルト値の true を false に変更することで、3つ目のチェック観点を無効化し、1.および2.のチェック観点のみで[Config.1]を評価できるようになっています。Configは基本的には必須の設定であるため、参考情報をもとに[Config.1]のカスタムパラメータを変更し、有効化することを検討して下さい。設定方法はこちらのブログをご参考下さい。
どうやらこの仕様変更は徐々に適用されているようで、最近になって弊社で管理している Security Hub から大量に [Config.1] の失敗アラートが発生しました。
「なんだぁ?」とアラートを見てたら、たしかこんなアップデートあったなーと思い出したので、早速 CloudFormation を使ってカスタムパラメーターを設定してみました。
今回やりたいこと
今回設定したい内容は以下のドキュメントの通りです。
つまり、AWS Config のロールに「カスタム IAM ロール」を使っている場合に、Security Hub の [Config.1] が失敗してしまう問題を回避するため、カスタムパラメーター includeConfigServiceLinkedRoleCheck
を false
に設定するというものです。
カスタムパラメーターの設定
1. 現状の確認
まずは、現在の Security Hub の [Config.1] の状態を確認しておきましょう。
私のアカウントでは、us-east-1
と ap-northeast-1
リージョンで Security Hub が有効化されていますが、どちらも [Config.1] は失敗していることがわかります。
2. カスタムパラメーター名の確認
カスタムパラメーター名を把握するために [Config.1] のパラメーター定義を確認しておきましょう。
ドキュメントを見ると includeConfigServiceLinkedRoleCheck
というパラメーターがあることがわかります。
ちなみに、以下のように AWS CLI コマンドでも確認が可能です。
ここからも includeConfigServiceLinkedRoleCheck
パラメーターであることがわかりますね。
$ aws securityhub get-security-control-definition --security-control-id Config.1 --query 'SecurityControlDefinition.ParameterDefinitions'
{
"includeConfigServiceLinkedRoleCheck": {
"Description": "The control doesn't evaluate whether AWS Config uses the service-linked role if the parameter is set to 'false'.",
"ConfigurationOptions": {
"Boolean": {
"DefaultValue": true
}
}
}
}
3. CloudFormation での設定
Security Hub コントロールのカスタムパラメーターを設定するには、AWS::SecurityHub::SecurityControl
を使って定義できます。
CloudFormation テンプレートの内容は非常にシンプルで、以下のようになります。
AWSTemplateFormatVersion: 2010-09-09
Description: Security Hub Control [Config.1] - Change the custom parameter "includeConfigServiceLinkedRoleCheck" to false
# ------------------------------------------------------------------------------
# Resources
# ------------------------------------------------------------------------------
Resources:
Config1CustomParameter:
Type: AWS::SecurityHub::SecurityControl
Properties:
SecurityControlId: Config.1
Parameters:
includeConfigServiceLinkedRoleCheck:
ValueType: CUSTOM
Value:
Boolean: false
LastUpdateReason: "Match current AWS environment settings"
これをデプロイすると、Security Hub の [Config.1] にカスタムパラメーター includeConfigServiceLinkedRoleCheck
が設定されます。
4. 動作確認
デプロイ後に Security Hub の [Config.1] を確認すると、カスタムパラメーターが false
に設定されていることがわかります。
しばらくすると、[Config.1] の評価が再実行され、以下のように PASSED になるはずです!(今回は ap-northeast-1
リージョンのみですが)
ちなみに、このコントロールは「定期的なセキュリティチェック」に分類され、12 または 24 時間後に再評価されるまで結果が反映されないことがあります。
気長に待ちましょう!
定期的なセキュリティチェックは、最新の実行から 12 または 24 時間以内に自動的に実行されます。周期は Security Hub によって決定され、変更はできません。定期的なコントロールは、チェック実行時の評価を反映したものになります。
おまけ(なぜか PASSED にならない!?)
今回の設定は [Config.1] のチェック項目のうち、CONFIG_RECORDER_CUSTOM_ROLE
に対して設定が有効になります。
このため、以下の画像のように CONFIG_RECORDER_MISSING_REQUIRED_RESOURCE_TYPES
などの他のチェック項目も含まれている場合には、[Config.1] が PASSED になりませんのでご注意ください!
まとめ
CloudFormation を使って Security Hub の [Config.1] のカスタムパラメーターを設定する方法を紹介しました。
かなりシンプルに設定できるので、アカウントの初期設定などに組み込むことでカスタムパラメーターの定義を自動化できるのではないでしょうか!
この記事が、どなたかのお役に立てれば幸いです。
アノテーション株式会社について
アノテーション株式会社 は、クラスメソッド社のグループ企業として「オペレーション・エクセレンス」を担える企業を目指してチャレンジを続けています。
「らしく働く、らしく生きる」のスローガンを掲げ、さまざまな背景をもつ多様なメンバーが自由度の高い働き方を通してお客様へサービスを提供し続けています。
現在当社では AWS の構築・運用経験があり、以下の業務に携わってくれるメンバーを募集中です。
- AWS 環境の運用設計支援や構築
- 運用監視とインシデント対応
- 定型業務などの自動化
AWS 関連資格をお持ちの方、クラウドネイティブな運用経験者は大歓迎です。
少しでもご興味がありましたら 募集職種 よりご応募ください!!
一緒に働ける日を心待ちにしています!