역할로 전환하기
역할로 전환하기 (Windows PowerShell용 Tools) (Switch to an IAM role)
역할(role)은 AWS 리소스에 접근할 때 필요한 권한 묶음이에요. IAM 사용자와 비슷하다고 보면 되는데, 로그인해서 그 권한을 쓰는 구조가 조금 달라요. IAM 사용자로 로그인하면 본인에게 지정된 권한을 쓰게 되지만, 역할에는 로그인하지 않고 **로그인 후에 역할로 전환(switch role)**해서 그 역할에 부여된 권한을 사용할 수 있어요. 전환하면 기존 사용자 권한은 잠시 내려놓고 역할 권한으로 작업하다가, 역할을 벗어나면 다시 원래 권한이 복원돼요. 역할은 본인 계정에 둘 수도 있고 다른 AWS 계정에 둘 수도 있어요.
출처: 문서
본문
중요
IAM 사용자의 권한과 전환한 역할의 권한은 합산되지 않아요. 한 번에 하나의 권한 집합만 적용돼요. 역할로 전환하면 기존 사용자 권한을 잠시 내려놓고 역할에 지정된 권한으로 작업하며, 역할에서 나오면 사용자 권한이 자동으로 복원됩니다.
이 문서에서는 Windows PowerShell용 AWS Tools를 커맨드 라인에서 쓸 때 역할로 전환하는 방법을 설명해요.
개발 환경에 계정이 하나 있고, 가끔 프로덕션 환경을 PowerShell 커맨드 라인에서 작업해야 하는 상황을 상상해 보세요. 이미 접근 키(access key) 자격 증명 한 세트는 갖고 있을 거예요. 이건 기본 IAM 사용자에 할당된 접근 키 쌍일 수도 있고, SAML이나 OIDC 페더레이션 주체로 로그인했다면 처음에 부여받은 역할의 접근 키 쌍일 수도 있어요. 이 자격 증명으로 Use-STSRole cmdlet을 실행해 새 역할의 ARN을 파라미터로 넘기면, 해당 역할에 대한 임시 보안 자격 증명을 받아요. 그 자격 증명을 이후 PowerShell 명령에 사용하면 프로덕션 리소스에 역할 권한으로 접근할 수 있어요. 역할을 쓰는 동안에는 개발 계정의 사용자 권한을 쓸 수 없어요 — 한 번에 하나의 권한 집합만 적용되기 때문이에요.
참고
보안을 위해 관리자는 AWS CloudTrail 로그를 확인해서 누가 AWS에서 어떤 작업을 했는지 알 수 있어요. 관리자가 역할을 수임(assume)할 때 소스 아이덴티티(source identity)나 역할 세션 이름을 지정하라고 요구할 수도 있어요. 자세한 내용은 sts:SourceIdentity와 sts:RoleSessionName을 참고하세요.
여기 나오는 모든 접근 키와 토큰은 예시일 뿐이며 그대로 사용할 수 없어요. 실제 환경의 값으로 바꿔서 사용해야 해요.
역할로 전환하려면 (Windows PowerShell용 Tools)
- PowerShell 명령 프롬프트를 열고, 기본 프로필이 현재 IAM 사용자나 페더레이션 역할의 접근 키를 쓰도록 설정해요. 이전에 Windows PowerShell용 Tools를 써 봤다면 이미 설정돼 있을 가능성이 높아요. 역할 전환은 IAM 사용자로 로그인했을 때만 가능하며, AWS 계정 루트 사용자로는 전환할 수 없어요.
PS C:\> Set-AWSCredentials -AccessKey AKIA… -SecretKey wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY -StoreAs MyMainUserProfile
PS C:\> Initialize-AWSDefaults -ProfileName MyMainUserProfile -Region us-east-2
자세한 내용은 AWS Tools for PowerShell 사용자 가이드의 AWS 자격 증명 사용을 참고하세요.
- 새 역할의 자격 증명을 가져오려면 다음 명령을 실행해
123456789012계정의RoleName역할로 전환해요. 역할 ARN은 역할을 만든 계정 관리자에게 받아요. 이 명령은 세션 이름도 요구하는데, 어떤 텍스트든 쓸 수 있어요. 아래 명령은 자격 증명을 요청한 뒤 반환된 결과 객체에서Credentials속성을 뽑아$Creds변수에 저장해요.
PS C:\> $Creds = (Use-STSRole -RoleArn "arn:aws:iam::123456789012:role/RoleName" -RoleSessionName "MyRoleSessionName").Credentials
$Creds는 다음 단계에서 필요한AccessKeyId,SecretAccessKey,SessionToken요소를 담은 객체예요. 다음 예시 명령은 대표적인 값을 보여줘요.
PS C:\> $Creds.AccessKeyId
AKIA…
PS C:\> $Creds.SecretAccessKey
wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
PS C:\> $Creds.SessionToken
AQoDYXdzEGcaEXAMPLE2gsYULo+Im5ZEXAMPLEeYjs1M2FUIgIJx9tQqNMBEXAMPLECvSRyh0FW7jEXAMPLEW+vE/7s1HRp
XviG7b+qYf4nD00EXAMPLEmj4wxS04L/uZEXAMPLECihzFB5lTYLto9dyBgSDyEXAMPLE9/g7QRUhZp4bqbEXAMPLENwGPy
Oj59pFA4lNKCIkVgkREXAMPLEjlzxQ7y52gekeVEXAMPLEDiB9ST3UuysgsKdEXAMPLE1TVastU1A0SKFEXAMPLEiywCC/C
s8EXAMPLEpZgOs+6hz4AP4KEXAMPLERbASP+4eZScEXAMPLEsnf87eNhyDHq6ikBQ==
PS C:\> $Creds.Expiration
Thursday, June 18, 2018 2:28:31 PM
- 이 자격 증명을 이후 명령에서 쓰려면
-Credential파라미터에 함께 넘겨요. 예를 들어 다음 명령은 역할의 자격 증명을 사용하는데, 역할에iam:ListRoles권한이 있어야Get-IAMRolescmdlet을 실행할 수 있어요.
PS C:\> get-iamroles -Credential $Creds
- 원래 자격 증명으로 돌아가려면
-Credentials $Creds파라미터 사용을 그만두면 돼요. PowerShell이 기본 프로필에 저장된 자격 증명으로 자동으로 되돌아갑니다.
더 알아보기 (Learn more)
- IAM 역할 — 역할이 무엇인지, 어떤 이점이 있는지의 기본 개념을 확인해 보세요.
- 역할로 전환하기 (AWS CLI) — AWS CLI에서 역할을 전환하는 방법을 살펴보세요.
- 역할로 전환하기 (AWS API) — AWS API를 이용해 역할을 수임하는 방법을 확인해 보세요.
- 역할 수임 방법 — 역할을 수임하는 다양한 방법을 정리한 문서를 참고하세요.