从aws cloudtrail获取有价值信息的命令行工具
trailscraper的Python项目详细描述
牵引器
从aws cloudtrail获取有价值信息的命令行工具 以及用于处理IAM策略的通用工具箱
安装
$ pip install trailscraper
用法
- 下载一些日志(包括us-east-1 for-global-aws 服务)
- 查找与筛选器匹配的cloudtrail事件 (>;=0.5.0)
- 从某些cloudtrail记录生成策略 (>;=0.5.0)
- 通过猜测匹配操作扩展现有策略rel="nofollow">通过猜测匹配扩展现有策略 操作
- 查找cloudtrail事件并生成iam策略 (>;=0.5.0)
- 查找cloudtrail事件并生成iam策略 (<;0.5.0) ###下载一些日志(包括用于全球AWS服务的US-EAST-1)
$ trailscraper download --bucket some-bucket \ --account-id some-account-id \ --region some-other-region \ --region us-east-1 \ --from 'two days ago' \ --to 'now' \
查找与筛选器匹配的CloudTrail事件(>;=0.5.0)
$ trailscraper select --filter-assumed-role-arn some-arn \ --from 'one hour ago' \ --to 'now' { "Records": [ { "eventTime": "2017-12-11T15:01:51Z", "eventSource": "autoscaling.amazonaws.com", "eventName": "DescribeLaunchConfigurations", ...
从某些CloudTrail记录生成策略(>;=0.5.0)
$ gzcat some-records.json.gz | trailscraper generate { "Statement": [ { "Action": [ "ec2:DescribeInstances" ], "Effect": "Allow", "Resource": [ "*" ] } ], "Version": "2012-10-17" }
通过猜测匹配操作扩展现有策略
cloudtrail日志可能并不总是包含所有相关操作。为了 例如,日志可能只包含 当您真正希望删除和更新权限为 好。trailscraper可以尝试猜测 相关:
$ cat minimal-policy.json | trailscraper guess { "Statement": [ { "Action": [ "s3:PutObject" ], "Effect": "Allow", "Resource": [ "*" ] }, { "Action": [ "s3:DeleteObject", "s3:GetObject", "s3:ListObjects" ], "Effect": "Allow", "Resource": [ "*" ] } ], "Version": "2012-10-17" } $ cat minimal-policy.json | ./go trailscraper guess --only Get { "Statement": [ { "Action": [ "s3:PutObject" ], "Effect": "Allow", "Resource": [ "*" ] }, { "Action": [ "s3:GetObject" ], "Effect": "Allow", "Resource": [ "*" ] } ], "Version": "2012-10-17" }
查找CloudTrail事件并生成IAM策略(>;=0.5.0)
$ trailscraper select | trailscraper generate { "Statement": [ { "Action": [ "ec2:DescribeInstances", "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeVolumes", "ec2:DescribeVpcs", ], "Effect": "Allow", "Resource": [ "*" ] }, { "Action": [ "sts:AssumeRole" ], "Effect": "Allow", "Resource": [ "arn:aws:iam::1111111111:role/someRole" ] } ], "Version": "2012-10-17" }
查找CloudTrail事件并生成IAM策略(<;0.5.0)
$ trailscraper generate-policy { "Statement": [ { "Action": [ "ec2:DescribeInstances", "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeVolumes", "ec2:DescribeVpcs", ], "Effect": "Allow", "Resource": [ "*" ] }, { "Action": [ "sts:AssumeRole" ], "Effect": "Allow", "Resource": [ "arn:aws:iam::1111111111:role/someRole" ] } ], "Version": "2012-10-17" }
FAQ
如何在cloudformation yaml而不是json中生成策略?
叛徒不提供这个。但你可以用 cfn flip 待办事项 它:
$ trailscraper select | trailscraper generate | cfn-flip Statement: - Action: - ec2:DescribeInstances Effect: Allow Resource: - '*'
如何在terraform hcl而不是json中生成策略?
叛徒不提供这个。但你可以用 IAM策略JSON到terraform 要执行此操作:
$ trailscraper select | trailscraper generate | iam-policy-json-to-terraform data "aws_iam_policy_document" "policy" { statement { sid = "" effect = "Allow" resources = ["*"] actions = [ "ec2:DescribeInstances", ] } }
为什么Trailscraper遗漏了一些事件?
- 确保您有US-East-1地区的日志。一些全球aws 服务(例如Route53、IAM、STS、CloudFront)使用此区域。为了 有关详细信息,请查看 云迹 文档
为什么一些trailscraper生成的操作不是真正的iam操作?
这是完全可能的。不幸的是,没有什么好的, 有关CloudTrail事件如何映射到IAM的机器可读文档 trailscraper用试探法找出正确的方法 行动。这些启发式方法可能不包括 AWS世界。
你就是从这里进来的:如果你发现一个特殊的案子 通过trailscraper,请打开一个新的 问题甚至 最好,提交一个拉取请求。
有关更多详细信息,请查看 贡献 指南
为什么click认为我在ascii环境中?
单击将中止进一步的执行,因为python 3被配置为使用ascii作为环境的编码。
设置描述区域设置的环境变量,例如:
$ pip install trailscraper0
或
$ pip install trailscraper1
有关详细信息,请参见 http://click.pocoo.org/5/python3/python-3-surrogate-handling
开发
$ pip install trailscraper2