Ansible EC2动态库存最小IAM策略

问题描述 投票:8回答:3

有人通过IAM角色找出了在ansible上运行EC2动态库存脚本(ec2.py)所需的最低IAM策略吗?

到目前为止,除了在ansible的官方文档中指定boto库的凭据之外,我还没有看到这方面的具体参考,但是,在生产环境中,我很少使用密钥对从EC2实例访问AWS服务,而是我已经接受了IAM角色在该案例场景中的使用。

我已经尝试过允许ec2:Describe*操作的策略,但它似乎对于脚本似乎不够,因为它始终与Unauthorized operation一起退出。

你能救我吗?

amazon-ec2 ansible amazon-iam ansible-inventory
3个回答
5
投票

我刚刚创建了一个演示策略,创建了一个新角色并使用了该新策略,然后创建了一个使用该新角色的新实例。

演示政策:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Demo201505282045",
            "Effect": "Allow",
            "Action": [
                "ec2:Describe*",
                "route53:ListHostedZones",
                "route53:ListResourceRecordSets"
            ],
            "Resource": "*"
        }
    ]
}

我必须添加route53,因为我使用route53选项(ec2.ini中的route53 = true),但除此之外它工作正常。

如果您仍然遇到问题,请尝试从命令行(./ec2.py)运行ec2.py,因为这通常会在直接运行时提供合理的错误消息。


8
投票

该脚本还会查看RDS和弹性。可以在ec2.ini中禁用它们,但如果不这样做,则以下策略似乎足以运行动态库存。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Demo201505282045",
            "Effect": "Allow",
            "Action": [
                "ec2:Describe*",
                "route53:ListHostedZones",
                "route53:ListResourceRecordSets",
                "rds:Describe*",
                "elasticache:Describe*"
            ],
            "Resource": "*"
        }
    ]
}

1
投票

该脚本还检查Route53,RDS和ElastiCache配置,因此需要访问ec2:Describe*route53:ListHostedZonesroute53:ListResourceRecordSetsrds:Describe*elasticache:Describe*

尽管如此,如果你不使用所有这些服务,你可以通过设置False相关的group_by_*变量的值来选择性地禁用它们在ec2.ini文件中的检查:这将跳过这些配置的获取,这两者都允许你最小化允许该角色的操作(例如:仅限ec2:Describe*)并减少脚本的整体查询时间。

© www.soinside.com 2019 - 2024. All rights reserved.