Amazon Inspector を CloudFormationで一撃設定してみる。(SNS設定手動)

Amazon Inspectorを実施する機会があったのですが、折角なので、CloudFormationで設定してみました。 SNSの通知設定は手動設定になります。 また、Inspector AgentがInspectorの画面から手軽に導入できるようになっていましたので、そちらからのAgent導入方法もご案内します。
2018.09.27

梶原(ambasad)です。 先日、Amazon Inspectorを実施する機会があったのですが、 折角なので、大好きなCloudFormationで設定してみました。

実際にInscpectorを動かす部分はコンソールまたはCLIからの実行, もしくはスケジュールでの起動を待つことになります。

また、Agentの導入が後付けになってしまいますが、 Inspectorのコンソールが更新されており、 Inspector AgentがInspectorの画面から手軽に導入できるようになっていましたので そちらからのAgent導入方法もご案内します。

後日追記 SNSの通知のClodFormationでの設定は下記ブログのエントリーで記載しています https://dev.classmethod.jp/cloud/aws/cfn-api-custom/

今回設定する内容

対象
  • 指定したタグが設定されたインスタンス 今回は"Inspector:true"がタグ付けされたインスタンス
ルール
  • 共通脆弱性識別子
  • CIS オペレーティングシステムのセキュリティ設定ベンチマーク
評価の実行の時間
  • 3600秒(1時間)
SNS通知
  • E-Mail通知
Insupectorの実施間隔
  • 7日間

参考情報 指定可能なルールパッケージ名

なお、「共通脆弱性識別子」、「CIS オペレーティングシステムのセキュリティ設定ベンチマーク 」 以外にも下記ルールが設定できますので、CloudFormationのコメント部分を変更してみてください。

※東京リージョン

ルールパッケージ名 ARN 備考
共通脆弱性識別子 arn:aws:inspector:ap-northeast-1:406045910587:rulespackage/0-gHP9oWNT -
CIS オペレーティングシステムのセキュリティ設定ベンチマーク arn:aws:inspector:ap-northeast-1:406045910587:rulespackage/0-7WNjqgGu -
セキュリティのベストプラクティス arn:aws:inspector:ap-northeast-1:406045910587:rulespackage/0-bBUQnxMq -
実行時の動作の分析 arn:aws:inspector:ap-northeast-1:406045910587:rulespackage/0-knGBhqEu -

各リージョンで指定可能なAmazon Inspector のルールパッケージの 一覧は下記URLに記載があります https://docs.aws.amazon.com/ja_jp/inspector/latest/userguide/inspector_rules-arns.html

CloudFormaionの実行

コンソールからまたは、CloudFormationを実行します。

タグキーと値ここではInspector:trueをデフォルトでいれてますので 対象の環境に応じてタグキーと値を変更してください。 また、「AWS CloudFormation によってカスタム名のついた IAM リソースが作成される場合があることを承認します。」のチェックをいれて実行します

E-Mail通知ありの場合 SNS通知を行うE-Mailアドレスをパラメータとして入力します。

実行しやすいようにS3上にテンプレートをアップロードしています。 E-Mail通知なし: https://s3-ap-northeast-1.amazonaws.com/pub-devio-blog-qrgebosd/template/cfn-inspector.yml E-Mail通知あり: https://s3-ap-northeast-1.amazonaws.com/pub-devio-blog-qrgebosd/template/cfn-inspector-sns.yml

また、以下URLをクリックすることにより、必要なパラメータ等が入力されたら状態でCloudFormationのスタック作成画面になります E-Mail通知なし

E-Mail通知あり

CloudFormationファイル 抜粋

以下、CloudFormationファイルの内容になります。 AWS::Inspector::ResourceGroupで対象を指定 AWS::Inspector::AssessmentTemplateの部分で、ルールや、実行時間を指定します。 詳しい値の詳細は、マニュアルをご参照ください。

Parameters:
ResourceGroupTagKey:
Type: String
Default: "Inspector"
Description: Input Tag Key
ResourceGroupTagValue:
Type: String
Default: "true"
Description: Input Tag Value

Resources:
MyInspectoryResourceGroup:
Type: AWS::Inspector::ResourceGroup
Properties:
ResourceGroupTags:
- Key: !Ref ResourceGroupTagKey
Value: !Ref ResourceGroupTagValue

MyInspectorTarget:
Type: AWS::Inspector::AssessmentTarget
Properties:
ResourceGroupArn: !Ref MyInspectoryResourceGroup

MyInspectorTemplate:
Type: AWS::Inspector::AssessmentTemplate
Properties:
AssessmentTargetArn: !Ref MyInspectorTarget
DurationInSeconds: 3600
RulesPackageArns:
# Common Vulnerabilities and Exposures
- arn:aws:inspector:ap-northeast-1:406045910587:rulespackage/0-gHP9oWNT
# CIS Operating System Security Configuration Benchmarks
- arn:aws:inspector:ap-northeast-1:406045910587:rulespackage/0-7WNjqgGu
# Security Best Practices
# - arn:aws:inspector:ap-northeast-1:406045910587:rulespackage/0-bBUQnxMq
# Runtime Behavior Analysis
# - arn:aws:inspector:ap-northeast-1:406045910587:rulespackage/0-knGBhqEu

CloudFormationの設定がおわりましたら、SNSの通知を実施します。 E-MAILなしの方はSNS通知設定はスキップしてください。

AWS コンソールでのSNS通知設定

  1. Inspectorのコンソールで評価テンプレート'の該当のテンプレートのSNSトピック`をクリックします

  2. 「イベントについて通知する新しいSNSトピックを選択します」をクリックして CloudFormationで作成したSNSトピックを選択します。

  3. トピックに追加されるので、追加したいイベントを選択します。

AWS CLI でのSNS通知設定

同じことをCLIで実施してみます。

$ templatesArn=$(aws cloudformation describe-stacks \
--stack-name cfn-inspector-sns \
--query 'Stacks[].Outputs[?OutputKey==`MyInspectorTemplateArn`].[OutputValue]' \
--output text)

※StackName cfn-inspector-snsは作成した際のスタック名に変更してください。

または

$ templatesArn=$(
aws inspector list-assessment-templates \
--query assessmentTemplateArns[0] \
--output text)

※補足 Topicが1件以上ある場合はassessmentTemplateArns[0] の値を調整してください。

# 値が入っているか確認
echo $templatesArn
arn:aws:inspector:ap-northeast-1:123456789012:target/xxxxx/template/xxxxx
topicArn=$(aws cloudformation describe-stacks \
--stack-name cfn-inspector-sns \
--query 'Stacks[].Outputs[?OutputKey==`MySNSTopicPolicyArn`].[OutputValue]' \
--output text)

または

topicArn=$(aws sns list-topics \
--query Topics[0].TopicArn \
--output text)

※補足 Topicが1件以上ある場合はTopics[0]の値を調整してください。

# 値が入っているか確認
echo $topicArn
arn:aws:sns:ap-northeast-1:123456789012:cfn-inspector-sns-InspectorSnsTopic-xxxxxxx

通知設定

コンソールでの通知設定と同様なCLIは以下になります。

# 実行開始に通知
aws inspector subscribe-to-event \
--event ASSESSMENT_RUN_STARTED \
--resource-arn $templatesArn \
--topic $topicArn

# 実行完了時に通知
aws inspector subscribe-to-event \
--event ASSESSMENT_RUN_COMPLETED \
--resource-arn $templatesArn \
--topic $topicArn

Inspector Agentのインストール

前提条件

対象となるインスタンスにAmazonEC2RoleforSSMが含まれているRoleが割り当てられている必要があります

Inspector Agentの確認

  1. Preview Targetをクリックします
  2. Agent StatusUNKNOWNの場合、インストールされていない、もしくネットワークの接続性に問題がある可能性があります。
  3. Agent StatusHEALTHYの場合は、インストールされていますので特に作業は必要ありません。

Inspector Agentのインストール

  1. Install Agents with Run Command をクリックします
  2. 5~10分後に、再度Preview Targetをクリックして
  3. Agent StatusHEALTHYになってていれば、Agentのインストールは成功しています。

Inspectorの実行

ここまでくれば、Inspectorの実施は可能な状況となります。

  1. 画面左側の「評価テンプレート」をクリックして
  2. Amazon Inspector - 評価テンプレートから実行するテンプレートを選択します。
  3. 「実行」をクリックして、評価を実行します。

結果の確認

  1. Inspector の実行が完了しましたら。「結果」の内容を確認して、 内容にそって、パッチを当てる等対応を行います。

不要な場合は削除

CloudFormationから作成していますので、不要になった際はスタックを削除するだけですが 実行結果も消えてしまうので、削除は慎重に ここら辺は、CloudFormationはお手軽ですね(^^♪ また、ルールや実行間隔の更新なども管理できるので、オペレーションミスの防止 また構成管理にも役立つのではないでしょうか。

参考URL

Inspector ユーザーガイド https://docs.aws.amazon.com/ja_jp/inspector/latest/userguide/inspector_introduction.html

InspectorでAmazon Linux 2の脆弱性診断に対応したのでやってみた

InspectorでAmazon Linux 2の脆弱性診断に対応したのでやってみた

Amazon Inspectorの実行状態をAmazon SNSでメール通知する

Amazon Inspectorの実行状態をAmazon SNSでメール通知する

Developers.IO Amazon Inspectorカテゴリ https://dev.classmethod.jp/referencecat/aws-inspector/

Amazon Inspector 料金 https://aws.amazon.com/jp/inspector/pricing/

まとめ

現時点では一部手動で対応する必要があるものの Inspectorの導入はかなり手軽にできる状況でした。 実際の運用では、Inspector実施するのみでなく、 Inspectorを実施した後に、脆弱性の対応を行う。 また、定期的にInspectorの実施していくことが大事ではないかと思います。 どなたかのセキュリティ対策に役立てば幸いです。