IAM을 사용하여 사용자가 AWS / EC2 보안 그룹을 편집 할 수 있습니까?


16

EC2 보안 그룹을 편집 할 수있는 기능을 IAM 그룹에 부여하려고하는데 EC2의 모든 항목에 대한 액세스 권한을 부여하지 않으면이 작업을 수행 할 수 없습니다.

나는 이것의 여러 버전을 시도했다.

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

그러나 IAM 사용자로 로그인하면 보안 그룹 페이지에 "이 작업을 수행 할 권한이 없습니다"라는 메시지가 나타납니다.

"Amazon EC2 Full Access"에 대한 IAM 정책 템플릿을 선택하면 사용자가 EC2의 모든 항목에 액세스 할 수 있기 때문에 사용자 / 그룹이 작동하고 있음을 알고 있습니다.

분명히 IAM에 대한 경험이 많지 않으므로 도움을 주시면 감사하겠습니다.

답변:


13

이것이 작동하려면 다음을 명시 적으로 허용해야합니다.

{
  "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": [
        "*"
      ]
    }
  ]
}

위의 JSON 정책은 기본적으로 사용자에게만 위의 액세스 권한이 있음을 명시합니다. 그들은 다른 것에 접근 할 수 없습니다. 여기에는 EC2 인스턴스, S3, IAM, 클라우드 프론트 등이 포함됩니다.


1
이것은 효과가 있었다. 감사합니다. 사용자는 모든 인스턴스 데이터를 볼 수 있지만 시작 / 중지 / 생성 할 수 없으므로 충분히 가깝습니다. 액세스 할 수있는 보안 그룹을 정확하게 명시 할 수있는 방법이 있다고 생각합니까, 아니면 모든 보안 그룹에 공개해야합니까?
Chris

@ DevMan14 특정 보안 그룹을 명시하는 방법이 있습니까? 나는이 작업이 코드하지 않습니다 아래 같은 자원 증권 거래를 할 때, 누군가가 설명 - 보안 그룹을 EC2 AWS를 사용하는 모든 보안 그룹에 대한 정보의 공정한 비트를 얻을 수있다
nsij22

1
당신이보고있는 경우 EC2ResponseError : (403) 금지 오류를 바로 설정 후 / 정책을 수정, 참고 그것은 걸렸다 몇 분 내 정책이 발효되기 전에
storm_m2138

12

단일 보안 그룹으로 편집을 제한하려면 다음과 같은 두 가지 진술이 필요하다고 생각합니다.

{
    "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>"
            ]
        }
    ]
}

DescribeInstance가 필요하지 않을 수도 있지만 필자의 경우에는 원했기 때문에 테스트하지 않았습니다.


1
DescirbeInstance 규칙 없이 SG 규칙을 편집 할 수있었습니다 . 예 : 글로벌 * 옵션은 단지 :로 설정되는 "ec2:DescribeNetworkAcls", "ec2:DescribeSecurityGroups"
storm_m2138

1

보안 그룹이 인스턴스 또는 다른 EC2 리소스에서 사용중인 것 같습니다. 너 시도 할 수있어:

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

답변 주셔서 감사하지만 작동하지 않았습니다. 예, 보안 그룹이 여러 인스턴스에서 사용 중입니다. "VPC 보안 그룹"이 아니라 "EC2 보안 그룹"이라는 것이 중요합니까? -또는 사용자가 인스턴스를 볼 수 없기 때문에 다른 일을하고있을 수도 있습니다.
Chris

1

나는에 대한 답을 찾고 있었다 질문 것으로 @ nsij22이 허용 대답의 의견에 물었다. 불행히도 불가능한 것 같습니다. IAM Policy Simulator 에 따르면 @ DevMan14 의 답변 에서 다음 작업 만 특정 리소스와 함께 사용할 수 있습니다.

  • DeleteSecurityGroup
  • AuthorizationSecurityGroupEgress
  • AuthorizationSecurityGroupIngress
  • RevokeSecurityGroupEgress
  • RevokeSecurityGroupIngress

다른 모든 것의 경우 IAM 정책 시뮬레이터는 다음과 같이 말합니다.

이 조치는 자원 레벨 권한을 지원하지 않습니다. 액세스 권한을 부여하는 정책은 자원 요소에 "*"를 지정해야합니다.

다음과 같이 보입니다 :

스크린 샷.

"허용"과 "거부"는 모두 동일하므로 축소했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.