AWS CLIを利用して、Inspectorを定期実行するCloudWatch Eventsを作成します
前提条件
本手順はJAWS-UG CLI専門支部の実施したハンズオン手順です。
全工程については下記総合案内をご確認ください。
#91 Amazon Inspector 入門 (CloudWatch Eventで定期診断編)
cloudwatch Eventへの権限
cloudwatch Eventに対してフル権限があること。
AWS CLIのバージョン
以下のバージョンで動作確認済
- AWS CLI 1.11.122
コマンド
aws --version
結果(例):
aws-cli/1.11.122 Python/2.7.10 Linux/4.1.27-25.49.amzn1.x86_64 botocore/1.5.85
バージョンが古い場合は最新版に更新しましょう。
コマンド
sudo -H pip install -U awscli
- 準備
=======
まず変数の確認をします。
変数の確認
cat << ETX
AWS_DEFAULT_PROFILE: (0.1) ${AWS_DEFAULT_PROFILE}
ETX
結果(例):
AWS_DEFAULT_PROFILE: (0.1) xxxxxx
変数が入っていない、適切でない場合は、それぞれの手順番号について作業を
行います。
0.1. プロファイルの指定
プロファイルの一覧を確認します。
コマンド
cat ~/.aws/credentials \
| grep '\[' \
| sed 's/\[//g' | sed 's/\]//g'
結果(例):
iamFull-prjz-mbpr13
<IAMのフル権限を許可されたプロファイル>
変数の設定
export AWS_DEFAULT_PROFILE='<IAMのフル権限を許可されたプロファイル>'
最終確認
変数の確認
cat << ETX
AWS_DEFAULT_PROFILE: (0.1) ${AWS_DEFAULT_PROFILE}
ETX
結果(例):
AWS_DEFAULT_PROFILE: (0.1) xxxxxx
本作業
1.1.CloudWatch Events作成用変数指定
実行スケジュールをCron形式 or Rate形式で設定します。必要に応じて実行時間を設定してください。
コマンド
EVENTS_RULE_NAME='inspector-event'
EVENT_RULE_DESC="Schedules a recurring Amazon Inspector assessment run"
EVENT_SCHEDULE_EXP='rate(30 minutes)'
結果:
(戻り値なし)
1.2.CloudWatch Events作成用確認
コマンド
cat << ETX
EVENTS_RULE_NAME: ${EVENTS_RULE_NAME}
EVENT_SCHEDULE_EXP: ${EVENT_SCHEDULE_EXP}
EVENT_RULE_DESC: "${EVENT_RULE_DESC}"
ETX
結果(例):
EVENTS_RULE_NAME: inspector-event
EVENT_SCHEDULE_EXP: rate(30 minutes)
EVENT_RULE_DESC: "Schedules a recurring Amazon Inspector assessment run"
1.3.CloudWatch Eventsルール作成
コマンド
aws events put-rule \
--name ${EVENTS_RULE_NAME} \
--schedule-expression "${EVENT_SCHEDULE_EXP}" \
--description "${EVENT_RULE_DESC}"
結果(例):
{
"RuleArn": "arn:aws:events:ap-northeast-1:xxxxx:rule/inspector-event"
}
1.4.CloudWatch Eventsルール確認
コマンド
aws events describe-rule --name \
${EVENTS_RULE_NAME}
結果(例):
{
"ScheduleExpression": "rate(1 days)",
"Name": "inspector-event",
"State": "ENABLED",
"Arn": "arn:aws:events:ap-northeast-1:xxxxx:rule/inspector-event",
"Description": "Schedules a recurring Amazon Inspector assessment run"
}
2.1.CloudWatch Eventsターゲット用変数指定
コマンド
EVENTS_TARGET_ID='AllowScheduledEvents'
EVENTS_TARGETS="Id=${EVENTS_TARGET_ID},Arn=${ASSESSMENT_TEMPLATE_ARN},RoleArn=${IAM_ROLE_ARN}"
2.2.CloudWatch Eventsターゲット用確認
コマンド
cat << ETX
EVENTS_TARGET_ID: ${EVENTS_TARGET_ID}
ASSESSMENT_TEMPLATE_ARN: ${ASSESSMENT_TEMPLATE_ARN}
IAM_ROLE_ARN: ${IAM_ROLE_ARN}
EVENTS_TARGETS: ${EVENTS_TARGETS}
ETX
結果(例):
EVENTS_TARGET_ID: AllowScheduledEvents
ASSESSMENT_TEMPLATE_ARN: arn:aws:inspector:ap-northeast-1:xxxxxx:target/0-Fp4q8TH8/template/0-ZoCnFzvx
IAM_ROLE_ARN: arn:aws:iam::xxxxxx:role/Inspector_Assessment_Role
EVENTS_TARGETS: Id=AllowScheduledEvents,Arn=arn:aws:inspector:ap-northeast-1:xxxxx:target/0-Fp4q8TH8/template/0-ZoCnFzvx,RoleArn=arn:aws:iam::xxxxx:role/Inspector_Assessment_Role
2.3.CloudWatch Eventsターゲット追加
コマンド
aws events put-targets \
--rule ${EVENTS_RULE_NAME} \
--targets ${EVENTS_TARGETS}
結果(例):
{
"FailedEntries": [],
"FailedEntryCount": 0
}
2.4.CloudWatch Eventsターゲット追加確認
コマンド
aws events list-targets-by-rule --rule ${EVENTS_RULE_NAME}
結果(例):
{
"Targets": [
{
"RoleArn": "arn:aws:iam::549352348160:role/Inspector_Assessment_Role",
"Id": "AllowScheduledEvents",
"Arn": "arn:aws:inspector:ap-northeast-1:xxxxxx:target/0-Fp4q8TH8/template/0-ZoCnFzvx"
}
]
}
作成後、30分毎にスケジュールで診断が実行されます。
====
完了