IAM 리소스에 액세스하는 데 필요한 권한 - AWS Identity and Access Management

IAM 리소스에 액세스하는 데 필요한 권한

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

참고

AWS 설명서 전체에서 특정 범주를 언급하지 않고 IAM 정책을 칭할 때는 자격 증명 기반 고객 관리형 정책을 의미합니다. 정책 범주에 대한 자세한 내용은 IAM의 정책 및 권한 섹션을 참조하세요.

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:*를 사용하면 됩니다. 사용자가 액세스 키에 관련된 작업만 수행할 수 있게 하려면 정책 문의 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}" } }

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

AWS Management Console에서의 작업 권한

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

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

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

사용자에게 AWS Management Console에서 그룹, 사용자, 역할, 정책, 자격 증명을 관리할 수 있는 권한을 부여하려면 콘솔에서 수행하는 작업에 대한 권한도 포함시켜야 합니다. 사용자에게 이러한 권한들을 부여하는 데 사용할 수 있는 몇 가지 정책의 예를 보려면 IAM 리소스를 관리하기 위한 정책의 예 섹션을 참조하세요.

전 AWS 계정에 권한 부여

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

참고

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

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

많은 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 역할은 파이프라인에서 수행할 수 있는 작업을 결정합니다. 또한 사용자에게는 해당 역할을 수임할 권한이 필요합니다. (자세한 내용은 AWS Data Pipeline 개발자 가이드의 IAM으로 파이프라인에 대한 권한 부여를 참조하세요.)

AWS 제품에서 원하는 작업을 수행할 수 있도록 권한을 적절히 구성하는 방법에 대한 자세한 내용은 요청할 서비스 설명서를 참조하세요. 서비스에 대한 역할을 생성하는 방법에 대해 알아보려면 AWS 서비스에 대한 권한을 위임할 역할 생성 섹션을 참조하세요.

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

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

필수 작업

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

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

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

  • ds:CreateDirectory

  • ec2:DescribeSubnets

  • ec2:DescribeVpcs

  • ec2:CreateSecurityGroup

  • ec2:CreateNetworkInterface

  • ec2:DescribeNetworkInterfaces

  • ec2:AuthorizeSecurityGroupIngress

  • ec2:AuthorizeSecurityGroupEgress

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

AWS Directory Service에서 디렉터리를 생성하는 데 필요한 권한에 대한 자세한 내용은 예제 2: 사용자에게 디렉터리 생성 허용을 참조하세요.