从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第三方库


热门话题
与ReentrantLock相比,java ReentrantReadWriteLock的性能非常差   java如何使用Maven Android Studio正确导入?   安卓将ADB添加到我的Java PC应用程序   反射Java getDeclaredConstructor失败,来自JUnit的NoSuchMethodException   JSP上siteedit标记库的java替代   JavaSpring环境概要文件和JPA   java中是否有一个类似于StringBuilder的类,唯一的区别是它具有固定的长度?   JavaMathContext。小数点32 vs MathContext。小数点64,使用哪一个,为什么?   java使用spring在Ibm Websphere MQ中实现重试逻辑   java调用SpriteBatch。开始()和结束()   java有一种从文本中读取文本的方法。文件,并将其设置为pom中的maven属性。xml专家?   java让sitemesh使用struts2   Java Swing:在现有窗口上定位对话框   使用带有MemSql的JPA本机查询的java Select json列