사용자에게 AWS 서비스에 역할을 전달할 권한 부여 - AWS Identity and Access Management

사용자에게 AWS 서비스에 역할을 전달할 권한 부여

다수의 AWS 서비스를 구성하려면 IAM 역할을 서비스에 전달해야 합니다. 그러면 서비스가 나중에 역할을 수임하고 사용자 대신 작업을 수행할 수 있습니다. 대부분의 서비스에서 설정 중 한 번만 서비스에 역할을 전달하면 됩니다. 서비스가 역할을 수임할 때마다 전달할 필요가 없습니다. 예를 들어 Amazon EC2 인스턴스에서 실행 중인 애플리케이션이 있다고 가정합니다. 해당 애플리케이션에는 인증을 위한 임시 자격 증명과 AWS에서 작업을 수행할 수 있는 애플리케이션을 승인할 권한이 필요합니다. 애플리케이션을 설정할 때는 역할을 EC2에 전달하여 해당 자격 증명을 제공하는 인스턴스와 함께 사용해야 합니다. IAM 정책을 역할에 연결하여 인스턴스에서 실행 중인 애플리케이션에 대한 권한을 정의합니다. 애플리케이션은 역할이 허용하는 작업을 수행해야 할 때마다 역할을 수임합니다.

AWS 서비스에 역할(및 그 권한)을 전달하려면 사용자에게 서비스에 역할을 전달할 권한이 있어야 합니다. 이를 통해 관리자는 승인된 사용자만 권한이 부여된 역할을 통해 서비스를 구성하도록 할 수 있습니다. 사용자가 AWS 서비스에 역할을 전달하도록 하려면 해당 사용자의 IAM 사용자, 역할 또는 그룹에 PassRole 권한을 부여해야 합니다.

참고

ResourceTag/key-name 조건 키를 사용하는 역할에 연결된 태그를 기반으로 하는 역할을 전달할 권한을 제한할 수는 없습니다. 자세한 내용은 섹션을 참조하세요AWS 리소스에 대한 액세스 제어

서비스 연결 역할을 생성하는 경우 해당 역할을 서비스에 전달할 권한도 있어야 합니다. 일부 서비스는 서비스에서 작업을 수행할 때 계정에 서비스 연결 역할을 자동으로 생성합니다. 예를 들어 Amazon EC2 Auto Scaling에서는 사용자가 Auto Scaling 그룹을 처음으로 생성할 때 사용자를 대신해 AWSServiceRoleForAutoScaling 서비스 연결 역할을 생성합니다. PassRole 권한 없이 Auto Scaling 그룹을 생성하려고 하면 오류가 발생합니다. 기본 역할을 선택하는 경우 iam:PassRole 권한이 필요하지 않을 수 있습니다. 서비스 연결 역할을 지원하는 서비스를 알아보려면 AWS IAM으로 작업하는 서비스 단원을 참조하십시오. 서비스에서 작업 수행 시 자동으로 서비스 연결 역할을 생성하는 서비스를 알아보려면 링크를 선택하고 해당 서비스에 대한 서비스 연결 역할 설명서를 확인합니다.

사용자는 역할을 사용하여 서비스에 권한을 할당하는 API 작업에서 파라미터로 역할 ARN을 전달할 수 있습니다. 그런 다음 서비스는 해당 사용자에게 iam:PassRole 권한이 있는지 확인합니다. 사용자가 승인된 역할만 전달하도록 제한하려면 IAM 정책 문의 Resources 요소로 iam:PassRole 권한을 필터링하면 됩니다.

JSON 정책의 Condition 요소를 사용하여 모든 AWS 요청의 요청 컨텍스트에 포함된 키 값을 테스트할 수 있습니다. 정책에서 조건 키를 사용하는 방법에 대한 자세한 내용은 IAM JSON 정책 요소: Condition 섹션을 참조하세요. iam:PassedToService 조건 키는 역할을 전달할 수 있는 서비스의 서비스 보안 주체를 지정하는 데 사용될 수 있습니다. 정책에서 iam:PassedToService 조건 키를 사용하는 방법에 대한 자세한 내용은 iam:PassedToService를 참조하세요.

예 1

인스턴스를 시작한 후 사용자에게 Amazon EC2 서비스에 승인된 역할 집합을 전달할 수 있는 권한을 부여하려 한다고 가정하겠습니다. 다음 세 가지 요소가 필요합니다.

  • 역할이 수행할 수 있는 작업을 결정하는 역할에 연결된 IAM 권한 정책입니다. 역할이 수행해야 하는 작업 및 역할이 그러한 작업을 수행하는 데 필요한 리소스만으로 권한을 한정할 수 있습니다. AWS 관리형 또는 고객이 생성한 IAM 권한 정책을 사용할 수 있습니다.

    { "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "A list of the permissions the role is allowed to use" ], "Resource": [ "A list of the resources the role is allowed to access" ] } }
  • 서비스에서 역할을 위임하도록 허용하는 역할에 대한 신뢰 정책입니다. 예를 들어, UpdateAssumeRolePolicy 작업이 있는 역할에 다음과 같은 신뢰 정책을 연결할 수 있습니다. 이 신뢰 정책을 통해 Amazon EC2는 해당 역할 및 역할에 연결된 권한을 사용할 수 있습니다.

    { "Version": "2012-10-17", "Statement": { "Sid": "TrustPolicyStatementThatAllowsEC2ServiceToAssumeTheAttachedRole", "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } }
  • 사용자가 승인된 역할만 전달하도록 허용하는 IAM 사용자에 연결된 IAM 권한 정책입니다. 일반적으로 iam:GetRole을(를) iam:PassRole에 추가하여 사용자가 전달할 역할의 세부 정보를 얻을 수 있습니다. 이 예제에서 사용자는 지정된 계정에 있으며 다음과 같이 이름이 EC2-roles-for-XYZ-(으)로 시작하는 역할만 전달할 수 있습니다.

    { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "iam:GetRole", "iam:PassRole" ], "Resource": "arn:aws:iam::account-id:role/EC2-roles-for-XYZ-*" }] }

이제 사용자는 할당된 역할로 Amazon EC2 인스턴스를 시작할 수 있습니다. 이 인스턴스에서 실행되는 애플리케이션은 인스턴스 프로파일 메타데이터를 통해 역할의 임시 자격 증명에 액세스할 수 있습니다. 역할과 연결된 권한 정책은 인스턴스가 수행할 수 있는 작업을 결정합니다.

예 2

Amazon Relational Database Service(Amazon RDS)는 Enhanced Monitoring(확장 모니터링)이라는 기능을 지원합니다. 이 기능을 사용하면 Amazon RDS에서 에이전트를 사용하여 데이터베이스 인스턴스를 모니터링할 수 있습니다. 또한 Amazon RDS가 Amazon CloudWatch Logs에 지표를 로그할 수도 있습니다. 이 기능을 사용하려면 서비스 역할을 생성하여 지표를 모니터링하고 로그에 작성할 수 있는 권한을 Amazon RDS에 부여해야 합니다.

Amazon RDS 확장 모니터링을 위한 역할을 생성하려면

  1. AWS Management Console에 로그인하여 https://console.aws.amazon.com/iam/에서 IAM 콘솔을 엽니다.

  2. 역할을 선택한 다음 역할 생성을 선택합니다.

  3. AWS 서비스(AWS Service) 역할 유형을 선택한 후 확장 모니터링을 위한 Amazon RDS 역할(Amazon RDS Role for Enhanced Monitoring) 서비스를 선택합니다. 그런 다음 다음: 권한을 선택합니다.

  4. AmazonRDSEnhancedMonitoringRole, 권한 정책을 선택합니다.

  5. 다음: 태그(Next: Tags)를 선택합니다.

  6. (선택 사항) 태그를 키-값 페어로 연결하여 메타데이터를 사용자에게 추가합니다. IAM에서의 태그 사용에 대한 자세한 내용은 IAM 리소스에 태깅 단원을 참조하세요.

  7. 다음: 검토를 선택합니다.

  8. 역할 이름에서 이 역할의 목적을 나타내는 역할 이름을 입력합니다. 역할 이름은 AWS 계정 내에서 고유해야 하며 대/소문자를 구분하지 않습니다. 예를 들어, 이름이 PRODROLEprodrole, 두 가지로 지정된 역할을 만들 수는 없습니다. 다양한 주체가 역할을 참조할 수 있기 때문에 역할을 생성한 후에는 역할 이름을 편집할 수 없습니다.

  9. (선택 사항) [Role description]에 새 역할에 대한 설명을 입력합니다.

  10. 역할을 검토한 다음 [Create role]을 선택합니다.

그러면 역할이 monitoring.rds.amazonaws.com 서비스에 해당 역할을 수임할 권한을 부여하는 신뢰 정책을 자동으로 얻습니다. 그러면 Amazon RDS는 AmazonRDSEnhancedMonitoringRole 정책에서 허용하는 모든 작업을 수행할 수 있습니다.

사용자가 Enhanced Monitoring을 활성화하려면 이 사용자가 역할을 전달하도록 허용하는 설명문이 포함된 정책이 필요합니다. 계정 번호를 사용하여 역할 이름을 8단계에서 입력한 이름으로 바꿉니다.

{ "Sid": "PolicyStatementToAllowUserToPassOneSpecificRole", "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "arn:aws:iam::account-id:role/RDS-Monitoring-Role" }

이 문을 다른 정책의 문과 결합하거나 고유 정책에 포함시킬 수 있습니다. 사용자가 RDS-로 시작하는 모든 역할을 전달할 수 있도록 지정하려면 다음과 같이 리소스 ARN의 역할 이름을 와일드카드로 바꿉니다.

"Resource": "arn:aws:iam::account-id:role/RDS-*"