2022-09-09 使用 Amazon Inspector 和
写写我的个人学习心德,本文仅为个人学习心德,与AWS无关
内容简介
本文是对学习【1】后的一些感想,将其部署步骤中在AWS Console的手动部分,补充了CLI命令行,使得操作更加简便。
CLI对应章节使用了原文的章节号,方便阅读和查找。
请先下载【3】中的 aws-samples-automate-vulnerability-management-and-remediation到本地,运行CLI一定要在templates文件夹下
架构与工作原理
Inspector发现的漏洞会和自动进入到Securityhub中,在security hub delegated admin account中聚合后的region,创建两个custom actionbutton,后台通过EventBridge Rule调用Automation来对漏洞列表中(放在S3上)记录的主机漏洞信息进行跨账号修复。下边为【1】 的架构图
多账号架构图
部署方法
根据原文章步骤补充CLI Walkthrough
Step 1: Create Security Hub custom actions for resolving Amazon Inspector Findings 创建按钮
Set parameter 参数设置
region为securityhub指定的聚合aggregated region
其它两个参数是按照原blog写好的,不需要修改
region='eu-west-2'
buttonnames=('Rem-Inspector-NoRBT' 'Rem-Inspector-RBT')
actionids=('InspectorRemNoRBT' 'InspectorRemRBT')
Run CLI command
for ((i=1; i<=${#buttonnames[@]}; i++));do
arn=$(aws securityhub create-action-target \
--name $buttonnames[$I]\
--description $buttonnames[$i] \
--id $actionids[$i] --region=$region --output text --query 'ActionTargetArn')
echo $arn
arnlist[i]=$arn
done
echo $arnlist
Step 2: Deploy the CloudFormation template for automation runbook 创建后台修复的runbook
下载【3】中的repository到本地运行CLI的目录下。
stackname=Remediateinspector
template='ResolveInspectorFindingsCFN.yaml'
orgid=$(aws organizations describe-organization --query 'Organization.Id' --output text --region=$region)
aws cloudformation create-stack --stack-name $stackname --template-body file://$template \
--parameters \
ParameterKey=OrganizationId,ParameterValue=$orgid \
ParameterKey=RemediateInspectorFindingCustomActionNoRBTArn,ParameterValue=$arnlist[1] \
ParameterKey=RemediateInspectorFindingCustomActionRBTArn,ParameterValue=$arnlist[2] \
--capabilities CAPABILITY_IAM \
--region=$region
需要等待大约三至五分钟,Cloudformation stack完成后再运行下边命令.如果提前运行以下命令行,会没有结果,此时请耐心⌛️,再重复运行一次,直到得到两个屏幕回显
outputs=($(aws cloudformation describe-stacks --stack-name $stackname --region=$region \
--query 'Stacks[*].Outputs[*].OutputValue' --output text))
echo $outputs
s3name=$outputs[2]
runbookname=$outputs[3]
Step 3: Create execution roles for multi-account and multi-Region automation using StackSet创建cross account role
参数设置
stacksetname =SSMAutomationrole
切换至Organizations的Management Account,运行CLI 命令,在所有member account中创建Cloudformation stacksets来创建SSMAutomationRole以供后续跨账号修复漏洞时使用。
stacksettemplate=automationExecutionRole.yaml
aws cloudformation create-stack-set \
--stack-set-name $stacksetname\
--template-body file://$stacksettemplate \
--permission-model SERVICE_MANAGED \
--auto-deployment Enabled=true,RetainStacksOnAccountRemoval=true \
--parameters \
ParameterKey=InstallOverrideListBucket,ParameterValue=$s3name \
ParameterKey=DelegatedAdministratorAccountId,ParameterValue=$accid \
ParameterKey=AutomationRunPatchBaselineRunbook,ParameterValue=$runbookname \
--capabilities CAPABILITY_NAMED_IAM \
--region=$region
aws cloudformation create-stack-instances \
--stack-set-name $stacksetname\
--deployment-targets OrganizationalUnitIds=$(aws organizations list-roots --query "Roots[].Id" --output text) \
--regions $region --region=$region
运行正确后回返回以下两段ID
{
"StackSetId": "SSMAutomationrole:4eb98a7d-251c-4c74-ae7c-0451cee5ffd1"
}
{
"OperationId": "bfeb270c-1ae8-4357-94e3-1d70e83180c5"
}
⌛️cloudformation任务完成后,在平台中可以看到各个任务成功完成,再进行下一步。
Console snapshot of operations Console snapshot of stack instance
Step 4: Update EC2 IAM instance roles with permissions to access the install override list S3 bucket
被修复的ec2的IAM role里要加上一条允许其访问S3的policy
Step 5: Remediate vulnerabilities using the Security Hub custom action
小结
参考资料
【3】 aws-samples-automate-vulnerability-management-and-remediation