AWS Assume Role

AWS에서 IAM 역할을 가장하기 위한 방법

  1. Assume Role

Assume Role

일반적으로 액세스할 수 없는 AWS 리소스에 액세스하는 데 사용할 수 있는 임시 보안 자격 증명 세트를 반환합니다 . 이러한 임시 자격 증명은 액세스 키 ID, 보안 액세스 키 및 보안 토큰으로 구성됩니다. 일반적으로 계정 내 또는 계정 간 액세스에 역할 전제를 사용합니다.

AssumeRole에서 생성한 임시 보안 자격증명을 사용하여 모든 AWS 서비스에 API 호출을 수행할 수 있습니다.

  • AWS STS GetFederation을 호출할 수는 없습니다.
  • 토큰 또는 GetSession 토큰 API 작업을 할 수 없습니다.

역할을 생성할 때 다음 두 가지 정책을 생성합니다.

  • 역할을 수행할 수 있는 사용자를 지정하는 역할 신뢰 정책
  • 역할로 수행할 수 있는 작업을 지정하는 권한 정책입니다.
// example-policy.json
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:Describe*",
                "iam:ListRoles",
                "sts:AssumeRole"
            ],
            "Resource": "*"
        }
    ]
}
//  해당 policy 생성으로 나온 arn >> arn:aws:iam::123456789012:policy/example-policy

역할 신뢰 정책에서 역할을 신뢰하고 맡을 수 있는 주체를 지정합니다.

다른 계정에서 역할을 맡기위해서는 AWS 계정 역할에서 신뢰 관계를 구성해야합니다. 신뢰 관계는 역할이 생성될 때 역할의 신뢰 정책에 정의됩니다. 해당 신뢰 정책을 계정의 사용자에게 액세스를 위임할 수 있는 계정을 나타냅니다.

{
    "Version": "2012-10-17",
    "Statement": {
        "Effect": "Allow",
        "Principal": { "AWS": "arn:aws:iam::123456789012:root" },
        "Action": "sts:AssumeRole"
    }
}

//  신뢰 정책 예제에서는 계정 123456789012 사용자  역할이 권한 정책에서 sts:AssumeRole 작업을 허용하는 경우,  역할을 추정할  있도록 허용합니다. 또한 특정 IAM 사용자만 IAM 역할을 위임할  있도록 신뢰 관계를 제한할 수도 있습니다. arn:aws:iam::123456789012:user/example-username과 비슷한 보안 주체를 지정하여 이를 수행할  있습니다. 

다른 계정의 역할에 액세스하려는 사용자에게도 사용자 계정 관리자로부터 위임된 사용 권한이 있어야합니다. 관리자는 사용자가 다른 계정에 있는 역할의 ARN에 대해 역할을 가정할 수 있는 정책을 첨부해야 합니다.

사용자가 다른 계정의 통해 동일한 계정에서 역할을 수행하도록 허용하기 위해서는 다음 중 하나를 수행 해야합니다.

  • 역할의 신뢰 정책이 계정을 신뢰하는 경우 사용자가 역할을 호출할 수 있는 정책을 사용자에게 첨부합니다.

  • 역할의 신뢰 정책에 직접 사용자를 주체로 추가합니다.

역할의 신뢰 정책이 IAM 리소스 기반 정책 역할을 하므로 둘 중 하나를 수행할 수 있습니다. 리소스 기반 정책이 동일한 계정의 주체에게 액세스 권한을 부여할 때 추가 ID 기반 정책이 필요하지 않습니다.