AWS IAM을 통해 다른 AWS 계정의 리소스에 액세스하려면 어떻게 해야 하나요?

최종 업데이트 날짜: 2022년 4월 5일

다른 AWS 계정의 Identity and Access Management(IAM) 역할을 수임하고 싶습니다. IAM을 사용해 교차 계정(cross-account) 액세스를 설정하려면 어떻게 해야 하나요?

간략한 설명

다른 AWS 계정의 IAM 역할과 신뢰 관계를 설정하여 해당 리소스에 액세스할 수 있습니다. 예를 들어 소스 계정에서 대상 계정에 액세스하려는 경우입니다. AssumeRole API에 대한 IAM 사용자 권한을 제공하여 소스에서 대상 계정으로 IAM 역할을 수임할 수 있습니다. 대상 IAM 역할의 신뢰 관계에 IAM 사용자를 지정해야 합니다.

참고: 역할 묶기(role chaining)를 통해 사용자 대 역할을 사용하는 대신 소스 IAM 역할에서 대상 IAM 역할으로 역할을 수임할 수도 있습니다. 역할 묶기는 AWS Command Line Interface(AWS CLI) 또는 API와 같은 프로그래밍 방식 액세스에만 작동하며 AWS 관리 콘솔에서는 사용할 수 없습니다.

해결 방법

다음 지침에 따라 소스 계정에 대한 IAM 권한 정책을 생성하고, 정책을 사용자에게 연결하고, 대상 계정에 대한 역할을 생성합니다.

참고: AWS CLI 명령을 실행할 때 오류가 발생하는 경우, 최신 버전의 AWS CLI를 사용하고 있는지 확인합니다.

소스 계정

1.    다음과 유사한 IAM 정책을 생성합니다.

참고: DESTINATION-ACCOUNT-ID 및 DESTINATION-ROLENAME을 고유한 값으로 바꿉니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "sts:AssumeRole"
      ],
      "Resource": [
        "arn:aws:iam::DESTINATION-ACCOUNT-ID:role/DESTINATION-ROLENAME"
      ]
    }
  ]
}

2.    IAM 사용자 권한에 IAM 정책을 연결합니다.

여기 단계에 따라 생성된 정책을 IAM 사용자 권한에 연결합니다.

대상 계정

1.    IAM 역할을 생성합니다.

2.    다음과 유사한 사용자 지정 신뢰 정책을 붙여넣습니다.

참고: SOURCE-ACCOUNT-ID 및 SOURCE-USERNAME을 고유한 값으로 바꿉니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::SOURCE-ACCOUNT-ID:role/SOURCE-USERNAME"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

참고: IAM 역할 및 사용자를 생성하고 편집할 액세스 권한이 없는 경우 이 프로세스를 완료하려면 다른 계정의 소유자로부터 도움을 받아야 합니다. 계정 및 리소스에 대한 액세스 권한을 신뢰할 수 있는 엔터티에만 부여하는 것이 가장 좋습니다.

필요한 만큼 많은 소스 엔터티를 대상 역할로 수임하도록 이 정책을 수정할 수 있습니다. 예를 들어 대상 계정 신뢰 정책의 보안 주체(Principal) 값을 "AWS": "SOURCE-ACCOUNT-ID"로 변경할 수 있습니다. 이렇게 하면 수임 역할 권한이 있는 소스 계정의 모든 엔터티가 대상 계정 역할을 수임할 수 있게 됩니다. 자세한 내용은 보안 주체 지정(Specifying a principal)정책 생성 또는 편집(Creating or editing the policy)을 참조하세요.

액세스 테스트

액세스 권한을 테스트하려면 역할(콘솔)로 전환 지침을 따릅니다.

-또는-

IAM 역할로 전환(AWS CLI)에 대한 지침을 따릅니다.

자세한 내용은 IAM 자습서: IAM 역할을 사용한 AWS 계정 간 액세스 권한 위임을 참조하세요.