특정 Amazon EC2 리소스에 대한 IAM 사용자의 액세스를 제한할 수 있습니까?

최종 업데이트 날짜: 2019년 4월 15일

하나의 특정 Amazon Elastic Compute Cloud(Amazon EC2) 리소스 또는 Amazon EC2 리소스 그룹에 대한 AWS Identity and Access Management(IAM) 사용자 또는 그룹의 액세스를 제한하고 싶으며, 동일한 AWS 계정에서 여러 리소스 그룹에 대해 이 제한을 적용하고 싶습니다. 어떻게 해야 합니까?

​해결 방법

대부분의 핵심 Amazon EC2 작업에서는 리소스 수준의 권한이나 조건을 지원하지 않으며, AWS 리전 이외의 기준으로 Amazon EC2 리소스에 대한 IAM 사용자 또는 사용자 그룹의 액세스를 격리하는 방법은 대부분의 사용 사례에 적합하지 않습니다.

대신, AWS Organizations를 통해 여러 개의 다른 AWS 계정을 연결하는 방법을 고려합니다. 그런 다음, IAM 사용자 그룹을 해당 계정에서 격리합니다.

동일한 계정의 리전 또는 임의 조건에 따라 리소스를 격리해야 하는 경우 먼저 리소스 수준 권한을 지원하는 EC2 작업 목록을 검사하고 사용 사례에서 이 솔루션을 지원하는지 확인하기 위해 지원하는 조건도 검사합니다.

그런 다음, IAM 콘솔을 열고 다음과 유사한 IAM 정책을 생성합니다.

{
   "Version":"2012-10-17",
   "Statement":[
      {
         "Effect":"Allow",
         "Action":"ec2:Describe*",
         "Resource":"*"
      },
      {
         "Effect":"Allow",
         "Action":[
            "ec2:StartInstances",
            "ec2:StopInstances",
            "ec2:RebootInstances"
         ],
         "Resource":[
            "arn:aws:ec2:us-east-1:111122223333:instance/*"
         ],
         "Condition":{
            "StringEquals":{
               "ec2:ResourceTag/Owner":"Bob"
            }
         }
      }
   ]
}

이 예제 정책에서는 미국 동부(버지니아 북부) [us-east-1] 리전에서 태그 키 또는 소유자 값이 Bob인 EC2 인스턴스의 시작/중지/재부팅 작업으로만 IAM 사용자 또는 그룹 액세스를 제한합니다.

참고: 소유자 및 리전을 환경의 파라미터로 대체합니다.

마지막으로 IAM 사용자의 각 그룹에 대해 유사한 정책을 생성합니다. 이때 각각 다른 리전을 사용합니다.