从aws cloudtrail获取有价值信息的命令行工具

trailscraper的Python项目详细描述


牵引器

pypi release构建状态

从aws cloudtrail获取有价值信息的命令行工具 以及用于处理IAM策略的通用工具箱

安装

$ pip install trailscraper

用法

$ 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 trailscraper
0

$ pip install trailscraper
1

有关详细信息,请参见 http://click.pocoo.org/5/python3/python-3-surrogate-handling

开发

$ pip install trailscraper
2

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
使用多个参数的枚举   从Oracle到Redis的java复制表   java如何保护tomcat服务器中的db用户名和密码。xml   java如何使用注册密钥保护移动应用程序?   java在什么情况下超类不应该是抽象的?   java Backspace键在macOS上的Scala REPL中不起作用   arduino Java+Uno+RFID:调用方法读取Java中的RFID   带有where语句中集合的java JPA查询   java如何向基于Tyrus注释的客户端添加请求头   java对我的二进制搜索算法的反馈   java重新访问数据库时文件的内容不正确   用户在字符串中输入值后退出While循环(Java)   java如何在Maven中的多个项目之间共享项目依赖关系?   java Close从未在数据库上被明确调用   在java中从文件读入布尔矩阵   Java:如何使用父节点将XML流拆分为小型XML文档。VTDXML