使用 IAM 允许用户编辑 AWS / EC2 安全组?

Chr*_*ris 16 amazon-ec2 amazon-web-services amazon-iam

我正在尝试授予 IAM 组编辑我们的 EC2 安全组的能力,但如果不授予对 EC2 中所有内容的访问权限,我就无法使其正常工作。

我已经尝试了几个版本:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1392336685000",
      "Effect": "Allow",
      "Action": [
        "ec2:*"
      ],
      "Resource": [
        "arn:aws:ec2:us-east-1:<MYACCOUNTHERE>:security-group/*"
      ]
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

但是当我使用 IAM 用户登录时,我在安全组页面中收到一条消息,提示“您无权执行此操作”。

我确实知道用户/组正在工作,因为如果我为“Amazon EC2 Full Access”选择 IAM 策略模板,则用户可以访问 EC2 中的所有内容。

我显然对 IAM 没有很多经验,任何帮助将不胜感激。

Sco*_*ore 15

为此,您需要明确允许以下内容:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1392679134000",
      "Effect": "Allow",
      "Action": [
        "ec2:AuthorizeSecurityGroupEgress",
        "ec2:AuthorizeSecurityGroupIngress",
        "ec2:CreateSecurityGroup",
        "ec2:DeleteSecurityGroup",
        "ec2:DescribeInstanceAttribute",
        "ec2:DescribeInstanceStatus",
        "ec2:DescribeInstances",
        "ec2:DescribeNetworkAcls",
        "ec2:DescribeSecurityGroups",
        "ec2:RevokeSecurityGroupEgress",
        "ec2:RevokeSecurityGroupIngress"
      ],
      "Resource": [
        "*"
      ]
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

上面的 JSON 策略基本上规定了用户只能访问上述内容。他们将无法访问任何其他内容。这包括 ec2 实例、S3、IAM、cloudfront 等。


小智 14

如果您想将编辑限制为单个安全组,我认为您需要 2 条语句,以下对我有用:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Stmt1413232782000",
            "Effect": "Allow",
            "Action": [               
                "ec2:DescribeInstanceAttribute",
                "ec2:DescribeInstanceStatus",
                "ec2:DescribeInstances",
                "ec2:DescribeNetworkAcls",
                "ec2:DescribeSecurityGroups"              
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Sid": "Stmt1413232782001",
            "Effect": "Allow",
            "Action": [
                "ec2:AuthorizeSecurityGroupEgress",
                "ec2:AuthorizeSecurityGroupIngress",                
                "ec2:RevokeSecurityGroupEgress",
                "ec2:RevokeSecurityGroupIngress"
            ],
            "Resource": [
                "arn:aws:ec2:us-east-1:<accountid>:security-group/sg-<id>"
            ]
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

DescribeInstance 可能不需要,但在我的情况下我想要它,所以没有它就没有测试过