用于实施分页的AWS IAM策略

时间:2018-01-24 16:04:44

标签: json amazon-web-services permissions amazon-iam policies

有没有办法在创建EC2实例时强制执行标记?我,用户无法在没有特定标签的情况下启动实例。我可以根据标签使用该标签来控制特定实例吗?

4 个答案:

答案 0 :(得分:0)

您可以使用Amazon Config实现此目的。

urtc.tuple2seconds

您不会阻止某人创建没有标记的实例,但您可以在Config仪表板中看到它已标记,或者您可以触发SNS操作通过电子邮件通知您。

答案 1 :(得分:0)

是的,您必须使用“ec2:CreateAction”条件来限制创建标记时创建资源(实例/卷)和“aws:RequestTag”条件以控制创建资源所需的标记键值

有示例政策here,有关详情,请参阅blog

答案 2 :(得分:0)

在为客户工作时,我有一个类似的用例。答案是是可以

您可以强制用户使用IAM策略应用特定的标签。

例如,您可以将一个策略附加到拒绝 ec2:RunInstances 操作的用户/角色(最好是角色),条件是检查标签Key和Value是否不符合您的期望。由于此策略使用双重否定 Deny StringNotLike ,因此可能会造成一些混乱,但是我相信这样可以更轻松地实施标记,因为您可以将此策略添加到拥有管理员政策,并且仍然可以使用。

    {
        "Sid": "ConditionalEC2creationName",
        "Effect": "Deny",
        "Action": "ec2:RunInstances",
        "Resource": "arn:aws:ec2:*:*:instance/*",
        "Condition": {
            "StringNotLike": {
                "aws:RequestTag/Name": "*"
            }
        }
    },
    {
        "Sid": "ConditionalEC2creationEnv",
        "Effect": "Deny",
        "Action": "ec2:RunInstances",
        "Resource": "arn:aws:ec2:*:*:instance/*",
        "Condition": {
            "StringNotLike": {
                "aws:RequestTag/Env": "*"
            }
        }
    }

不幸的是,由于我没有时间对其进行优化,因此我无法使其在单个块中运行。我认为这与 ForAllValues ForAnyValue 有关。

ForAllValues –如果请求中的每个指定键值与策略中的至少一个值匹配,则条件返回true。如果请求中没有匹配的键,或者键值解析为空数据集(例如,空字符串),则它也会返回true。

ForAnyValue –如果请求中的任一键值与策略中的任何条件值匹配,则条件返回true。如果没有匹配的键或数据集为空,则条件返回false。

答案 3 :(得分:0)

是的,很有可能使用标签值中的选项进行EC2创建,请尝试一下

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Deny",
            "Action": "ec2:RunInstances",
            "Resource": "arn:aws:ec2:*:*:instance/*",
            "Condition": {
                "StringNotLike": {
                    "aws:RequestTag/Env": [
                        "Dev",
                        "Prod"
                    ]
                }
            }
        }
    ]
}