당신이 소유한 다른 AWS 계정의 IAM 사용자에 대한 접근
당신이 소유한 다른 AWS 계정의 IAM 사용자에 대한 접근
IAM 사용자에게 AWS 계정 내의 역할 또는 당신이 소유한 다른 AWS 계정에 정의된 역할로 전환할 수 있는 권한을 부여할 수 있어요.
출처: 문서
본문
참고 당신이 소유하거나 통제하지 않는 계정에 접근을 부여하려면 이 문서의 뒷부분에 있는 써드파티가 소유한 AWS 계정에 대한 접근 문서를 참고하세요.
조직에 중요한 Amazon EC2 인스턴스가 있다고 가정해 보겠습니다. 사용자에게 인스턴스를 종료할 권한을 직접 부여하는 대신, 그 권한을 가진 역할을 만들 수 있어요. 그런 다음 관리자가 인스턴스를 종료해야 할 때 그 역할로 전환하도록 허용합니다. 이렇게 하면 인스턴스에 다음과 같은 보호 계층이 추가됩니다.
- 사용자에게 역할 수임 권한을 명시적으로 부여해야 합니다.
- 사용자는 AWS Management Console을 사용해 적극적으로 역할로 전환하거나, AWS CLI 또는 AWS API를 사용해 역할을 수임해야 합니다.
- 역할에 다중 인증(MFA) 보호를 추가해 MFA 기기로 로그인한 사용자만 역할을 수임할 수 있게 할 수 있어요. 역할을 수임하는 사용자가 먼저 다중 인증(MFA)으로 인증해야 하도록 역할을 구성하는 방법은 MFA로 API 액세스 보안 강화 문서를 참고하세요.
*최소 권한 원칙(principle of least privilege)*을 적용하려면 이 접근 방식을 사용할 것을 권장해요. 즉, 고급 권한 사용을 특정 작업에 필요할 때로만 제한하는 것입니다. 역할을 사용하면 특히 감사와 결합해 역할이 필요할 때만 사용되도록 하면 민감한 환경의 우발적 변경을 방지하는 데 도움이 됩니다.
이 목적으로 역할을 만들 때 역할 신뢰 정책의 Principal 요소에서 사용자가 접근해야 하는 계정을 ID로 지정합니다. 그런 다음 그 다른 계정의 특정 사용자에게 역할로 전환할 권한을 부여할 수 있어요.
신뢰 구역(신뢰하는 조직 또는 계정) 밖의 계정에 있는 주체가 당신의 역할을 수임할 수 있는지 알아보려면 IAM Access Analyzer란 무엇인가요? 문서를 참고하세요.
한 계정의 사용자는 같은 계정이나 다른 계정의 역할로 전환할 수 있어요. 역할을 사용하는 동안 사용자는 역할이 허용한 작업과 리소스만 수행할 수 있고, 원래 사용자 권한은 중단됩니다. 사용자가 역할에서 나가면 원래 사용자 권한이 복원됩니다.
별도 개발 및 프로덕션 계정을 사용하는 예제 시나리오
조직에 개발 환경과 프로덕션 환경을 분리하는 여러 AWS 계정이 있다고 가정해 보겠습니다. 개발 계정의 사용자는 때때로 프로덕션 계정의 리소스에 접근해야 할 수 있어요. 예를 들어 개발 환경에서 프로덕션 환경으로 업데이트를 승격할 때 교차 계정 접근이 필요할 수 있어요. 두 계정에서 일하는 사용자에게 별도의 자격 증명(및 비밀번호)을 만들 수도 있지만, 여러 계정의 자격 증명을 관리하면 자격 증명 관리가 어려워집니다. 다음 그림에서 모든 사용자는 개발 계정에서 관리되지만 일부 개발자는 프로덕션 계정에 대한 제한된 접근이 필요합니다. 개발 계정에는 Testers 그룹과 Developers 그룹이 있고, 각 그룹에 자체 정책이 있습니다.
- 프로덕션 계정의 관리자는 IAM을 사용해 해당 계정에
UpdateApp역할을 만듭니다. 역할에서 관리자는 개발 계정을Principal로 지정하는 신뢰 정책을 정의합니다. 즉, 개발 계정의 인증된 사용자가UpdateApp역할을 사용할 수 있게 됩니다. 관리자는 또한productionapp이라는 Amazon S3 버킷에 대한 읽기 및 쓰기 권한을 지정하는 역할의 권한 정책을 정의합니다. 그런 다음 관리자는 역할을 수임해야 하는 사람에게 적절한 정보를 공유합니다. 그 정보는 계정 번호와 역할 이름(AWS 콘솔 사용자의 경우) 또는 Amazon Resource Name(ARN)(AWS CLI 또는 AWS API 접근의 경우)입니다. 역할 ARN은arn:aws:iam::123456789012:role/UpdateApp처럼 보일 수 있으며, 여기서 역할 이름은UpdateApp이고 역할은 계정 번호 123456789012에서 생성되었습니다.참고 관리자는 선택적으로 역할을 수임하는 사용자가 먼저 다중 인증(MFA)으로 인증해야 하도록 역할을 구성할 수 있어요. 자세한 내용은 MFA로 API 액세스 보안 강화 문서를 참고하세요.
- 개발 계정의 관리자는 Developers 그룹 멤버에게 역할로 전환할 권한을 부여합니다. 이는 Developers 그룹에
UpdateApp역할에 대해 AWS Security Token Service(AWS STS)AssumeRoleAPI를 호출할 권한을 부여함으로써 이루어집니다. 개발 계정의 Developers 그룹에 속한 모든 IAM 사용자는 이제 프로덕션 계정의UpdateApp역할로 전환할 수 있어요. 개발자 그룹에 속하지 않은 다른 사용자는 역할로 전환할 권한이 없으므로 프로덕션 계정의 S3 버킷에 접근할 수 없습니다. - 사용자가 역할로 전환을 요청합니다.
- AWS 콘솔: 사용자가 탐색 표시줄의 계정 이름을 선택하고 역할 전환(Switch Role) 을 선택합니다. 사용자가 계정 ID(또는 별칭)와 역할 이름을 지정합니다. 또는 관리자가 이메일로 보낸 링크를 선택할 수도 있어요. 링크는 사용자를 세부 정보가 이미 채워진 역할 전환(Switch Role) 페이지로 이동시킵니다.
- AWS API/AWS CLI: 개발 계정의 Developers 그룹의 사용자가
AssumeRole함수를 호출해UpdateApp역할에 대한 자격 증명을 얻습니다. 사용자는 호출의 일부로UpdateApp역할의 ARN을 지정합니다. Testers 그룹의 사용자가 같은 요청을 하면, Testers는UpdateApp역할 ARN에 대해AssumeRole을 호출할 권한이 없으므로 요청이 실패합니다.
- AWS STS가 임시 자격 증명을 반환합니다.
- AWS 콘솔: AWS STS가 역할의 신뢰 정책으로 요청을 검증해 요청이 신뢰받는 개체(여기서는 개발 계정)에서 왔는지 확인합니다. 검증 후 AWS STS가 임시 보안 자격 증명을 AWS 콘솔에 반환합니다.
- API/CLI: AWS STS가 역할의 신뢰 정책에 대해 요청을 검증해 요청이 신뢰받는 개체(여기서는 개발 계정)에서 왔는지 확인합니다. 검증 후 AWS STS가 애플리케이션에 임시 보안 자격 증명을 반환합니다.
- 임시 자격 증명이 AWS 리소스에 대한 접근을 허용합니다.
- AWS 콘솔: AWS 콘솔이 후속 콘솔 작업에 임시 자격 증명을 사용자 대신 사용합니다. 이 경우
productionapp버킷에 읽고 쓰는 것입니다. 콘솔은 프로덕션 계정의 다른 리소스에는 접근할 수 없습니다. 사용자가 역할에서 나가면 사용자의 권한은 역할로 전환하기 전에 가졌던 원래 권한으로 되돌아갑니다. - API/CLI: 애플리케이션이 임시 보안 자격 증명으로
productionapp버킷을 업데이트합니다. 임시 보안 자격 증명으로 애플리케이션은productionapp버킷에서만 읽고 쓸 수 있고 프로덕션 계정의 다른 리소스에는 접근할 수 없습니다. 애플리케이션은 역할에서 나갈 필요가 없고, 임시 자격 증명 사용을 중단하고 후속 API 호출에서 원래 자격 증명을 사용하면 됩니다.
- AWS 콘솔: AWS 콘솔이 후속 콘솔 작업에 임시 자격 증명을 사용자 대신 사용합니다. 이 경우
추가 리소스
자세한 내용은 다음을 참고하세요.