Security Hub findings查询不含Account ID的Resource ID及资源修复方法
AWS Security Hub 资源ID查询与资源修复方案
问题说明
你在Security Hub控制台的「Findings」页面查询ResourceId时,得到的结果包含Account Id属于正常情况,你给出的示例为账号类型资源的标准返回格式:
"Resources": [ { "Type": "AwsAccount", "Id": "AWS::::Account:220307202362", } ]
上述Type为AwsAccount的资源本身对应AWS账号实体,所以ID本身就是由Account Id组成的,不存在未关联Account Id的版本。以下是针对非账号类资源的原始ID获取方法,以及资源修复的实现方案:
获取未关联Account Id的资源原始ID
- 控制台查询:进入对应告警的详情页,找到「资源详情」或「产品字段」区块,该区块会直接展示资源的原生短ID(如EC2实例ID
i-xxxxxx、S3桶名)或ARN,ARN中/之后的内容即为Account Id,截取前面的部分即可得到不带Account Id的资源标识 - API/CLI查询:调用
get-findings接口拉取告警数据,返回结果中每个Resource对象附带的Details属性下,对应资源类型的字段会直接返回原始ID,比如EC2资源对应InstanceId字段、RDS资源对应DBInstanceIdentifier字段 - 字符串截取:Security Hub返回的非账号类ResourceId通用格式为
AWS::[服务名]:::[资源类型]:[原始资源ID]/[AccountId],直接截取最后一个冒号之后、第一个斜杠之前的内容,即可得到不带Account Id的原始资源ID
针对特定资源执行修复操作的方法
方法1:使用Security Hub内置修复能力
- 手动修复:在Findings列表选中对应告警,点击「操作」下拉框选择「修复」选项,Security Hub会自动关联该告警对应配置规则的修复模板,按照页面提示执行即可完成修复
- 自动修复:针对支持自动修复的规则,可在规则配置页开启自动修复开关,后续触发该规则的告警会自动执行预设的修复动作,无需人工介入
方法2:手动操作对应资源控制台
提取到资源原始ID后,直接进入对应AWS服务的控制台,搜索该ID进入资源详情页,按照告警给出的修复建议手动调整资源配置即可
方法3:批量自动化修复
通过CLI/SDK批量拉取符合筛选条件的Findings,批量提取资源原始ID后,编写脚本调用对应AWS服务的OpenAPI执行配置修改,也可搭配EventBridge规则触发修复动作,实现全流程自动化
内容的提问来源于stack exchange,提问作者Bokambo
相关产品推荐
相关产品推荐

