Cloud Custodian - 从CloudTrail创建具有追溯标签的资源
项目描述
c7n-trailcreator:追溯资源创建标签
此脚本将处理云跟踪记录,创建一个包含资源和其创建者的sqlite数据库,然后使用该sqlite数据库对资源进行标记,标记其创建者的姓名。
在处理云跟踪时,可以使用Athena或S3 Select。需要一个配置文件,其中包含感兴趣的事件和资源。
安装
$ pip install c7n-trailcreator
$ c7n-trailcreator --help
配置文件
这里的配置文件格式类似于custodian在云跟踪API事件上对lambda策略所要求的格式,作为事件选择器。
对于每个资源,必须指定保管资源的类型,然后对于每个事件,我们需要知道服务名称、事件名称以及获取资源ID的jmespath表达式。
以下是一些示例,包括iam-user、iam-role和一个s3存储桶。
{
"resources": [
{
"resource": "iam-role",
"events": [
{
"event": "CreateRole",
"ids": "requestParameters.roleName",
"service": "iam.amazonaws.com"
}
]
},
{
"resource": "s3",
"events": [
{
"ids": "requestParameters.bucketName",
"event": "CreateBucket",
"service": "s3.amazonaws.com"
}
]
},
{
"resource": "iam-user",
"events": [
{
"event": "CreateUser",
"ids": "requestParameters.userName",
"service": "iam.amazonaws.com"
}
]
}]
}
Athena使用情况
跟踪创建者支持使用s3 select或使用Athena从cloudtrail s3加载数据。
注意您必须根据https://docs.aws.amazon.com/athena/latest/ug/cloudtrail-logs.html预先创建cloudtrail的Athena表。
让我们使用示例配置文件来加载2019年创建的所有角色、存储桶和用户的示例数据。
c7n-trailcreator load-athena \
--region us-east-1 \
--resource-map resource_map.json \
--table cloudtrail_logs_custodian_skunk_trails \
--db "creators.db" \
--year 2019
默认情况下,我们将使用控制台使用的默认s3 athena输出,以及默认数据库和主工作组,您可以在命令行上传递所有这些以更加明确。
您也可以指定仅处理一个月,使用--month 2019/11
,或使用--day 2019/02/01
指定单个日期。
INFO:c7n_trailowner:Athena query:569712dc-d1e9-4474-b86f-6579c53b5b46
INFO:c7n_trailowner:Polling athena query progress scanned:489.24 Mb qexec:28.62s
INFO:c7n_trailowner:Polling athena query progress scanned:1.29 Gb qexec:88.96s
INFO:c7n_trailowner:Polling athena query progress scanned:2.17 Gb qexec:141.16s
INFO:c7n_trailowner:processing athena result page 78 records
INFO:c7n_trailowner:Athena Processed 78 records
请注意,您可以通过在命令行上传递--query-id
来重新处理已完成查询的结果。
标记
它支持Custodian支持的所有资源。
$ c7n-trailcreator tag \
--db creators.db \
--creator-tag Owner \
--region us-east-1
INFO:c7n_trailowner:account:644160558196 region:us-east-1 tag 13 iam-role resources users:5 population:97 not-found:84 records:124
INFO:c7n_trailowner:account:644160558196 region:us-east-1 tag 5 iam-user resources users:4 population:6 not-found:1 records:18
INFO:c7n_trailowner:account:644160558196 region:us-east-1 tag 9 s3 resources users:4 population:14 not-found:5 records:20
INFO:c7n_trailowner:auto tag summary account:644160558196 region:us-east-1
iam-role-not-found: 84
iam-role: 13
iam-user-not-found: 1
iam-user: 5
s3-not-found: 5
s3: 9
INFO:c7n_trailowner:Total resources tagged: 27
让我们分解这些日志消息中的一个
INFO:c7n_trailowner:account:644160558196 region:us-east-1 tag 13 iam-role resources users:5 population:97 not-found:84 records:124
- 记录:我们为该资源类型拥有的数据库创建事件的计数。
- 用户:我们拥有创建事件的独特用户数量。
- 未找到:我们没有创建事件(即创建在跟踪分析期之前或之后)的资源数量。
- 总体:账户区域中所有资源的总数。
多账户/多区域
c7n-trailcreator支持使用与c7n-org相同的文件格式标记执行多账户和区域操作。请参阅tag-org
子命令。