Skip to content

필요한 권한


리소스는 서비스 내의 객체이다. IAM 리소스에는 그룹, 사용자, 역할 및 정책이 있다. AWS 계정 루트 사용자 크레덴셜으로 로그인한 경우 IAM 아이덴터티 또는 IAM 리소스를 관리하는 데 아무런 제한이 없다. 하지만 IAM 사용자가 아이덴터티나 IAM 리소스를 관리하려면 그러한 권한이 명시적으로 부여되어야 한다. 아이덴터티 기반 정책을 사용자에 연결하여 권한을 부여할 수 있다.

Note

AWS 설명서 전체에서 특정 범주를 언급하지 않고 IAM 정책을 칭할 때는 크레덴셜 기반 고객 관리형 정책을 의미한다.


1. IAM 크레덴셜을 관리하기 위한 권한

IAM 그룹, 사용자, 역할 및 크레덴셜을 관리하는 데 필요한 권한은 일반적으로 작업에 대한 API 작업에 해당한다. 예를 들어 IAM 사용자를 생성하려면 해당하는 API 명령 CreateUser가 있는 iam:CreateUser 권한이 있어야 한다. IAM 사용자가 다른 IAM 사용자를 생성할 수 있도록 다음과 같은 IAM 정책을 해당 사용자에게 연결할 수 있다.

{
  "Version": "2012-10-17",
  "Statement": {
    "Effect": "Allow",
    "Action": "iam:CreateUser",
    "Resource": "*"
  }
}

정책에서 Resource 요소의 값은 작업 및 그 작업이 적용될 수 있는 리소스에 따라 다르다. 앞의 예에서 정책은 사용자가 어떤 사용자도 생성할 수 있도록 허용한다(*는 모든 문자열을 나타내는 와일드카드). 반면에, 사용자가 자신의 액세스 키(API 작업 CreateAccessKeyUpdateAccessKey)만 변경할 수 있도록 하는 정책에는 일반적으로 Resource 요소가 포함된다. 이 경우 ARN에는 다음 예제와 같이 현재 사용자의 이름을 해석하는 변수(${aws:username})가 포함된다.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "ListUsersForConsole",
            "Effect": "Allow",
            "Action": "iam:ListUsers",
            "Resource": "arn:aws:iam::*:*"
        },
        {
            "Sid": "ViewAndUpdateAccessKeys",
            "Effect": "Allow",
            "Action": [
                "iam:UpdateAccessKey",
                "iam:CreateAccessKey",
                "iam:ListAccessKeys"
            ],
            "Resource": "arn:aws:iam::*:user/${aws:username}"
        }
    ]
}

앞의 예에서 ${aws:username}은 현재 사용자의 사용자 이름으로 변환되는 변수이다.

작업 이름에 와일드카드 문자(*)를 사용하면 특정 작업에 관련된 모든 작업에 대한 권한을 쉽게 부여할 수 있다. 예를 들어 사용자가 IAM 작업을 수행할 수 있게 하려면 그 작업에 대해 iam:*를 사용하면 된다. 사용자가 액세스 키에 관련된 작업만 수행할 수 있게 하려면 정책 문의 iam:*AccessKey* 요소에 Action를 사용하면 된다. 이렇게 하면 사용자에게 CreateAccessKey, DeleteAccessKey, GetAccessKeyLastUsed, ListAccessKeysUpdateAccessKey 작업을 수행할 수 있는 권한이 부여된다. (나중에 이름에 "AccessKey"가 포함되는 작업이 IAM에 추가될 경우에도 iam:*AccessKey* 요소에 대해 Action를 사용하며 사용자에게 새 작업에 대한 권한이 부여된다.) 다음 예는 사용자가 자신의 액세스 키에 속하는 모든 작업을 수행할 수 있게 허용하는 정책을 보여 준다(account-id를 해당 AWS 계정 ID로 변경).

{
  "Version": "2012-10-17",
  "Statement": {
    "Effect": "Allow",
    "Action": "iam:*AccessKey*",
    "Resource": "arn:aws:iam::account-id:user/${aws:username}"
  }
}

그룹 삭제와 같은 일부 작업에는 여러 작업이 포함된다. 즉, 먼저 그룹에서 사용자를 제거한 후 그룹의 정책을 분리 또는 삭제하고 나서 실제로 그룹을 삭제한다. 사용자가 그룹을 삭제할 수 있게 하려는 경우 이러한 모든 관련 작업을 수행할 수 있는 권한을 부여해야 한다.


2. AWS Management Console에서의 작업 권한

앞의 예는 사용자가 AWS CLI 또는 AWS SDK를 사용하여 작업을 수행할 수 있게 허용하는 정책을 보여준다.

사용자가 콘솔에서 작업할 경우 콘솔은 그룹, 사용자, 역할 및 정책을 나열하고 그룹, 사용자 또는 역할과 연결된 정책을 가져오는 요청을 IAM에 보낸다. 또한 콘솔은 AWS 계정 정보와 보안 주체에 대한 정보를 가져오는 요청도 보낸다. 보안 주체는 콘솔에서 요청하는 사용자이다.

일반적으로 작업을 수행하려면 일치하는 작업만 정책에 포함해야 한다. 사용자를 생성하려면 CreateUser 작업을 호출하는 권한이 필요하다. 콘솔을 사용하여 작업을 수행할 때 경우에 따라 콘솔에서 리소스를 표시하고 나열하며 가져오거나 볼 권한이 있어야 한다. 이는 콘솔을 탐색하여 지정된 작업을 수행하기 위해 필요하다. 예를 들어 Jorge라는 사용자가 콘솔을 사용하여 자신의 액세스 키를 변경하려면 IAM 콘솔에서 사용자를 선택할 것이다. 이 작업은 콘솔에서 ListUsers 요청을 생성하게 한다. Jorge에게 iam:ListUsers 작업에 대한 권한이 없을 경우 사용자를 나열하려고 시도할 때 콘솔이 액세스를 거부한다. 그 결과, Jorge는 CreateAccessKeyUpdateAccessKey 작업에 대한 권한이 있는 경우에도 자신의 이름과 액세스 키를 가져올 수 없다.

사용자에게 AWS Management Console에서 그룹, 사용자, 역할, 정책, 크레덴셜을 관리할 수 있는 권한을 부여하려면 콘솔에서 수행하는 작업에 대한 권한도 포함시켜야 한다.


3. 전 AWS 계정에 권한 부여

계정의 IAM 사용자에게 리소스에 대한 액세스 권한을 직접 부여할 수 있다. 다른 계정의 사용자에게 리소스에 대한 액세스 권한이 필요한 경우, 권한을 포함하지만 특정 사용자와 연결되지 않는 엔터티인 IAM 역할을 생성할 수 있다. 다른 계정의 사용자는 해당 역할을 사용하여 해당 역할에 할당된 권한에 따라 리소스에 액세스할 수 있다.

Note

일부 서비스만이 아이덴터티 기반 정책 및 리소스 기반 정책(예: Amazon S3, Amazon SNS, Amazon SQS)에 설명된 리소스 기반 정책을 지원한다. 그런 서비스의 역할 사용 대안은 공유할 리소스(버킷, 주제 또는 대기열)에 정책을 연결하는 것이다. 리소스 기반 정책은 리소스에 대한 액세스 허가를 받은 AWS 계정을 지정할 수 있다.


4. 한 서비스에서 다른 서비스에 액세스할 권한

많은 AWS 제품은 다른 AWS 제품에 액세스한다. 예를 들어, 여러 AWS 서비스(Amazon EMR, Elastic Load Balancing, Amazon EC2 Auto Scaling 포함)는 Amazon EC2 인스턴스를 관리한다. 기타 AWS 서비스는 Amazon S3 버킷, Amazon SNS 주제, Amazon SQS 대기열 등을 사용한다.

이러한 경우 권한 관리 시나리오가 서비스별로 다르다. 다음은 다양한 서비스에 대한 권한을 처리하는 방법의 예이다.

  • Amazon EC2 Auto Scaling에서 사용자에게 Auto Scaling을 사용할 권한이 있어야 하지만, Amazon EC2 인스턴스를 관리할 권한을 명시적으로 부여할 필요는 없다.

  • AWS Data Pipeline에서 IAM 역할은 파이프라인에서 수행할 수 있는 작업을 결정한다. 또한 사용자에게는 해당 역할을 수임할 권한이 필요하다.

사용자를 대신하여 작동하도록 IAM 역할로 서비스 구성

AWS 서비스를 사용자를 대신하여 작동하도록 구성하려면 일반적으로 서비스에서 수행할 수 있는 작업을 정의하는 IAM 역할의 ARN을 입력한다. AWS는 사용자에게 서비스에 역할을 전달할 권한이 있는지 확인한다.


5. 필수 작업

작업은 리소스 보기, 생성, 편집 및 삭제와 같이 리소스에 대해 수행할 수 있는 사항이다. 작업은 각 AWS 서비스별로 정의된다.

누군가 작업을 수행할 수 있도록 허용하려면 호출 크레덴셜 또는 영향을 받은 리소스에 적용되는 정책에 필요한 작업을 포함시켜야 한다. 일반적으로 작업을 수행하는 데 필요한 권한을 제공하려면 정책에 해당 작업을 포함시켜야 한다. 예를 들어 사용자를 생성하려면 정책에 CreateUser 작업을 추가해야 한다.

경우에 따라 정책에 관련된 작업을 추가로 포함해야 할 수도 있다. 예를 들어, ds:CreateDirectory 작업을 사용하여 AWS Directory Service에서 누군가에게 디렉터리를 생성할 권한을 제공하려면 정책에 다음 작업을 포함시켜야 한다.

  • ds:CreateDirectory

  • ec2:DescribeSubnets

  • ec2:DescribeVpcs

  • ec2:CreateSecurityGroup

  • ec2:CreateNetworkInterface

  • ec2:DescribeNetworkInterfaces

  • ec2:AuthorizeSecurityGroupIngress

  • ec2:AuthorizeSecurityGroupEgress

시각적 편집기를 사용하여 정책을 생성하거나 편집할 때 경고 및 정책에 필요한 모든 작업을 선택하라는 메시지가 표시된다.


References