[AWS] 특정 IAM 사용자에게 EC2에 권한 부여하기

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

IAM Policy 선언

https://aws.amazon.com/ko/premiumsupport/knowledge-center/restrict-ec2-iam/

조건(Condition)

  • AWS 계정 관리자 그룹 내에 있는 IAM 사용자는 모든 EC2에 접근 가능해야한다.
  • 계정 내에 여러 EC2가 동작 중일 때 한 IAM 사용자를 대상으로 특정 EC2만 사용이 가능해야 한다.

설계

  • 리전으로 제한한다. - 하지만 동일 리전 내에 동작중인 EC2 인스턴스가 다수 있다.
  • 태그로 제한한다. - 태그이름 Owner가 Bob으로 설정된 인스턴스에만 접근이 가능하도록 한다.

상위 언급한 두개의 조건을 적용하려고 한다.

의문

  • IAM 역할(Role)을 부여하면 되지 않나?
  • Instance Identity 중 IAM Credential을 Retrieve 해야한다. 역할을 부여해서 EC2를 사용하는 경우 IAM Credential 정보가 없기 때문에 이 값이 반환되지 않는다.
{
   "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-west-2:111122223333:instance/*"
         ],
         "Condition":{
            "StringEquals":{
               "ec2:ResourceTag/Owner":"Bob"
            }
         }
      }
   ]
}

이 예제 정책은 태그 값이 Bob인 소유자의 태그 키가 존재하는 us-west-2(오레곤)리전에서 IAM 사용자 또는 그룹 액세스를 EC2 인스턴스의 시작/중지/재시작 작업으로만 제한한다.

 

IAM 사용자(User)생성

 

사용자 추가 - 권한 설정 - 기존 정책 직접 연결

 

EC2 인스턴스 생성

조건절에 선언된 대로 us-west-2 리전에 EC2 인스턴스를 생성한다. 인스턴스 유형, 스토리지 등을 구성하고 태그 추가에서 Owner:Bob 태그를 추가한다.

 

확인

Describe* 권한이 허용되어 있으므로 리전 내에서 동작중인 인스턴스는 나열된다.

하지만 태그 값이 없는 다른 인스턴스를 시작하려고 할 때에는 권한이 거부되며 동작하지 않는다.

물론 태그를 추가하는 작업 또한 허용되어있지 않다.

반응형