에서 IAM 역할 사용 AWS CLI - AWS Command Line Interface

이 설명서는 의 버전 1 AWS CLI 전용입니다. 의 버전 2와 관련된 설명서는 버전 2 사용 설명서 를 AWS CLI참조하세요.

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

에서 IAM 역할 사용 AWS CLI

AWS Identity and Access Management (IAM) 역할은 사용자가 추가(또는 다른) 권한을 얻거나 다른 AWS 계정에서 작업을 수행할 수 있는 권한을 얻을 수 있는 권한 부여 도구입니다.

사전 조건

iam 명령을 실행하려면 AWS CLI를 설치하고 구성해야 합니다. 자세한 내용은 설치, 업데이트 및 제거 AWS CLI 단원을 참조하십시오.

IAM 역할 사용 개요

~/.aws/config 파일에서 IAM 역할에 대한 프로파일을 정의하여 역할을 사용하도록 AWS Command Line Interface (AWS CLI)를 구성할 수 있습니다.

다음 예제는 marketingadmin라는 이름의 역할 프로파일을 보여줍니다. 를 사용하여 명령을 실행하는 경우--profile marketingadmin(또는 AWS_PROFILE 환경 변수 로 명령을 지정하는 경우) 는 별도의 프로파일에 정의된 보안 인증을 AWS CLI 사용하여 Amazon 리소스 이름(ARN) 로 역할을 user1 수임합니다arn:aws:iam::123456789012:role/marketingadminrole. 해당 역할에 할당된 권한에서 허용되는 모든 작업을 실행할 수 있습니다.

[profile marketingadmin] role_arn = arn:aws:iam::123456789012:role/marketingadminrole source_profile = user1

그런 다음 역할을 사용할 권한과 함께 사용자 보안 인증 정보가 포함된 별도의 명명된 프로파일을 가리키는 source_profile을 지정하면 됩니다. 앞의 예제에서는 marketingadmin 프로파일이 user1 프로파일의 보안 인증을 사용하고 있습니다. AWS CLI 명령을 프로파일 를 사용하도록 지정하면 는 연결된 user1 프로파일의 보안 인증 정보를 marketingadmin AWS CLI 자동으로 검색하고 이를 사용하여 지정된 IAM 역할에 대한 임시 보안 인증을 요청합니다. 는 백그라운드에서 sts:AssumeRole 작업을 CLI 사용하여 이를 수행합니다. 이러한 임시 자격 증명은 요청된 AWS CLI 명령을 실행하는 데 사용됩니다. 지정된 역할에는 요청된 AWS CLI 명령을 실행할 수 있는 IAM 권한 정책이 연결되어 있어야 합니다.

Amazon Elastic Compute Cloud(AmazonEC2) 인스턴스 또는 Amazon Elastic Container Service(AmazonECS) 컨테이너 내에서 AWS CLI 명령을 실행하려면 인스턴스 프로파일 또는 컨테이너에 연결된 IAM 역할을 사용할 수 있습니다. 프로파일을 지정하지 않거나 환경 변수를 설정하지 않은 경우 해당 역할이 직접 사용됩니다. 이렇게 하면 인스턴스에서 수명이 긴 액세스 키를 저장하는 것을 피할 수 있습니다. 또한 이러한 인스턴스 또는 컨테이너 역할을 다른 역할에 대한 자격 증명을 가져오는 데에만 사용할 수 있습니다. 이를 위해서는 credential_source(source_profile 대신에)를 사용하여 자격 증명을 찾는 방법을 지정해야 합니다. credential_source 속성은 다음과 같은 값들을 지원합니다.

  • Environment - 환경 변수에서 소스 자격 증명을 검색합니다.

  • Ec2InstanceMetadata - Amazon EC2 인스턴스 프로파일에 연결된 IAM 역할을 사용합니다.

  • EcsContainer - Amazon ECS 컨테이너에 연결된 IAM 역할을 사용합니다.

다음 예제에서는 Amazon EC2 인스턴스 프로파일을 참조하는 데 사용된 것과 동일한 marketingadminrole 역할을 보여줍니다.

[profile marketingadmin] role_arn = arn:aws:iam::123456789012:role/marketingadminrole credential_source = Ec2InstanceMetadata

역할을 호출할 때 멀티 팩터 인증 및 외부 ID(타사에서 클라이언트 리소스에 액세스하는 데 사용)와 같은 추가 옵션이 필요할 수 있습니다. AWS CloudTrail 로그에서 더 쉽게 감사할 수 있는 고유한 역할 세션 이름을 지정할 수도 있습니다.

역할 구성 및 사용

IAM 역할을 지정하는 프로파일을 사용하여 명령을 실행하면 는 소스 프로파일의 자격 증명을 AWS CLI 사용하여 AWS Security Token Service (AWS STS)를 호출하고 지정된 역할에 대한 임시 자격 증명을 요청합니다. 원본 프로파일의 사용자에는 지정된 프로파일의 역할에 대한 sts:assume-role을 호출할 권한이 있어야 합니다. 이 역할에는 소스 프로파일의 사용자가 역할을 사용할 수 있도록 허용하는 신뢰 관계가 있어야 합니다. 역할에 대한 임시 자격 증명을 가져온 다음 사용하는 프로세스는 종종 역할 수임이라고 합니다.

AWS Identity and Access Management 사용 설명서의 사용자에게 권한을 위임할 역할 생성의 절차에 따라 사용자가 수임할 권한을 IAM 사용하여 에서 역할을 생성할 수 있습니다. IAM 역할과 원본 프로필의 사용자가 동일한 계정에 있는 경우 역할의 신뢰 관계를 구성할 때 자신의 계정 ID를 입력할 수 있습니다.

역할을 생성한 후 사용자가 해당 역할을 수임할 수 있도록 신뢰 관계를 수정합니다.

아래 예제는 역할에 연결할 수 있는 신뢰 정책을 보여줍니다. 이 정책은 만약 해당 계정의 관리자가 사용자에게 sts:AssumeRole 권한을 명시적으로 부여하면 123456789012 계정에서 모든 사용자가 역할을 수임하도록 허용합니다.

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

신뢰 정책은 실제로 권한을 부여하지 않습니다. 계정의 관리자는 정책을 적절한 권한에 연결하여 역할을 수임할 권한을 개별 사용자에게 위임해야 합니다. 아래 예제는 사용자가 marketingadminrole 역할만 수임하도록 허용하기 위해 사용자에게 연결할 수 있는 정책을 보여줍니다. 사용자에게 역할을 수임할 수 있는 액세스 권한을 부여하는 방법에 대한 자세한 내용은 IAM 사용 설명서역할을 전환할 수 있는 사용자 권한 부여를 참조하세요.

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

사용자는 역할 프로파일을 사용하여 AWS CLI 명령을 실행하는 데 추가 권한이 필요하지 않습니다. 대신 명령을 실행하는 데 필요한 권한은 역할에 연결된 권한으로부터 나옵니다. 역할에 권한 정책을 연결하여 어떤 AWS 리소스에 대해 수행할 수 있는 작업을 지정합니다. (사용자와 동일하게 작동하는) 역할에 권한을 연결하는 방법에 대한 자세한 내용은 IAM 사용 설명서 IAM 사용자 권한 변경을 참조하세요.

이제 역할 프로파일, 역할 권한, 역할 신뢰 관계 및 사용자 권한이 올바르게 구성되었으므로 --profile 옵션을 호출하여 명령줄에서 역할을 사용할 수 있습니다. 예를 들어, 다음은 이 주제의 시작 부분에 있는 예제에서 정의된 대로 ls 역할에 연결된 권한을 사용하여 Amazon S3 marketingadmin 명령을 호출합니다.

$ aws s3 ls --profile marketingadmin

여러 호출에 역할을 사용하려면 명령줄에서 현재 세션에 대한 AWS_PROFILE 환경 변수를 설정하면 됩니다. 환경 변수를 정의하는 동안 각 명령에서 --profile 옵션을 지정할 필요가 없습니다.

Linux 또는 macOS

$ export AWS_PROFILE=marketingadmin

Windows

C:\> setx AWS_PROFILE marketingadmin

사용자 및 역할 구성에 대한 자세한 내용은 IAM 사용 설명서IAM 자격 증명(사용자, 사용자 그룹 및 역할)IAM 역할을 참조하세요.

멀티 팩터 인증 사용

추가 보안을 위해 사용자가 역할 프로파일을 사용하여 전화를 걸려고 할 때 다중 인증(MFA) 디바이스, U2F 디바이스 또는 모바일 앱에서 생성된 일회용 키를 제공해야 할 수 있습니다.

먼저 IAM 역할의 신뢰 관계를 로 수정하도록 선택할 수 있습니다MFA. 이렇게 하면 를 사용하여 먼저 인증하지 않고도 누구나 역할을 사용할 수 없습니다MFA. 해당하는 예는 다음 예제의 Condition 행을 참조하십시오. 이 정책은 라는 사용자가 정책을 연결하는 역할을 수임anika할 수 있도록 허용하지만, 를 사용하여 인증하는 경우에만 허용됩니다MFA.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:user/anika" }, "Action": "sts:AssumeRole", "Condition": { "Bool": { "aws:multifactorAuthPresent": true } } } ] }

그런 다음 사용자 MFA 디바이스의 를 지정하는 줄을 역할 프로파일ARN에 추가합니다. 다음 샘플 config 파일 항목은 anika라는 사용자가 cli-role 역할에 대한 임시 보안 인증 정보를 요청하기 위해 액세스 키를 사용하는 두 가지 역할 프로파일을 보여줍니다. 사용자 anika는 역할을 맡을 권한이 있으며, 이러한 권한은 역할의 신뢰 정책에서 부여합니다.

[profile role-without-mfa] region = us-west-2 role_arn= arn:aws:iam::128716708097:role/cli-role source_profile=cli-user [profile role-with-mfa] region = us-west-2 role_arn= arn:aws:iam::128716708097:role/cli-role source_profile = cli-user mfa_serial = arn:aws:iam::128716708097:mfa/cli-user [profile cli-user] region = us-west-2 output = json

mfa_serial 설정에 그림과 ARN같이 또는 하드웨어 MFA 토큰의 일련 번호가 필요할 수 있습니다.

첫 번째 프로필인 에는 role-without-mfa가 필요하지 않습니다MFA. 그러나 역할에 연결된 이전 신뢰 정책 예제에는 가 필요하므로 이 프로파일로 명령을 실행하려는 MFA시도는 실패합니다.

$ aws iam list-users --profile role-without-mfa An error occurred (AccessDenied) when calling the AssumeRole operation: Access denied

두 번째 프로필 항목인 는 사용할 MFA 디바이스를 role-with-mfa식별합니다. 사용자가 이 프로파일로 AWS CLI 명령을 실행하려고 하면 는 MFA 디바이스에서 제공하는 일회용 암호(OTP)를 입력하라는 AWS CLI 메시지를 표시합니다. MFA 인증에 성공하면 명령이 요청된 작업을 수행합니다. OTP 는 화면에 표시되지 않습니다.

$ aws iam list-users --profile role-with-mfa Enter MFA code for arn:aws:iam::123456789012:mfa/cli-user: { "Users": [ { ...

교차 계정 역할 및 외부 ID

역할을 교차 계정 역할로 구성하면 사용자가 다른 계정에 속한 역할을 사용할 수 있습니다. 역할 생성 중에 IAM 사용자에게 권한을 위임할 역할 생성 에 설명된 대로 역할 유형을 다른 AWS 계정으로 설정합니다. 필요에 따라 필수 MFA를 선택합니다. 에 MFA 설명된 대로 가 신뢰 관계에서 적절한 조건을 구성합니다멀티 팩터 인증 사용.

계정 전체의 역할을 사용할 수 있는 사용자에 대한 추가 제어를 제공하기 위해 외부 ID를 사용하는 경우 역할 프로파일에 external_id 파라미터도 추가해야 합니다. 일반적으로 회사 또는 조직 외부에 있는 사람이 다른 계정을 제어하는 경우에만 이를 사용합니다.

[profile crossaccountrole] role_arn = arn:aws:iam::234567890123:role/SomeRole source_profile = default mfa_serial = arn:aws:iam::123456789012:mfa/saanvi external_id = 123456

보다 쉬운 감사를 위한 역할 세션 이름 지정

한 역할을 여러 개인이 공유하는 경우 감사가 더 어려워집니다. 호출된 각 작업을 호출한 개인에 연결하려고 합니다. 그러나 개인이 역할을 사용할 때 개인에 의한 역할 수임은 작업 호출과는 별도의 작업이므로 역할과 개인을 수동으로 상호 연결해야 합니다.

사용자가 역할을 수임할 때 고유한 역할 세션 이름을 지정하여 이러한 작업을 간단하게 수행할 수 있습니다. 역할을 지정하는 role_session_name 파일의 명명된 각 프로파일에 config 파라미터를 추가하여 이를 수행합니다. role_session_name 값은 AssumeRole 작업에 전달되고 역할 세션ARN의 일부가 됩니다. 로그에는 로깅된 모든 작업에 대한 AWS CloudTrail 로그에도 포함됩니다.

예를 들어, 다음과 같이 역할 기반 프로파일을 생성할 수 있습니다.

[profile namedsessionrole] role_arn = arn:aws:iam::234567890123:role/SomeRole source_profile = default role_session_name = Session_Maria_Garcia

그러면 역할 세션에 다음 이 포함됩니다ARN.

arn:aws:iam::234567890123:assumed-role/SomeRole/Session_Maria_Garcia

또한 모든 AWS CloudTrail 로그에는 각 작업에 대해 캡처된 정보에 역할 세션 이름이 포함됩니다.

웹 자격 증명을 사용한 역할 수임

웹 ID 페더레이션 및 Open ID Connect(OIDC)를 사용하여 가 역할을 수임 AWS CLI 해야 함을 나타내도록 프로파일을 구성할 수 있습니다. 프로필에서 이를 지정하면 AWS CLI 에서 자동으로 해당 AWS STS AssumeRoleWithWebIdentity 호출을 수행합니다.

참고

IAM 역할을 사용하는 프로필을 지정하면 AWS CLI 에서 적절한 호출을 수행하여 임시 보안 인증 정보를 검색합니다. 이러한 자격 증명은 ~/.aws/cli/cache에 저장됩니다. 동일한 프로파일을 지정하는 후속 AWS CLI 명령은 만료될 때까지 캐시된 임시 자격 증명을 사용합니다. 이때 는 자격 증명을 AWS CLI 자동으로 새로 고칩니다.

웹 자격 증명 연동을 사용하여 임시 자격 증명을 검색하고 사용하려면 공유 프로파일에서 다음 구성 값을 지정할 수 있습니다.

role_arn

수임할 역할ARN의 를 지정합니다.

web_identity_token_file

자격 증명 공급자가 제공하는 OAuth 2.0 액세스 토큰 또는 OpenID Connect ID 토큰이 포함된 파일의 경로를 지정합니다. AWS CLI 에서 이 파일을 로드하고 해당 내용을 WebIdentityToken 작업에 대한 AssumeRoleWithWebIdentity 인수로 전달합니다.

role_session_name

이 역할 수임 세션에 적용된 선택적 이름을 지정합니다.

다음은 웹 자격 증명 프로파일로 역할 수임을 구성하는 데 필요한 최소 양의 구성에 대한 예입니다.

# In ~/.aws/config [profile web-identity] role_arn=arn:aws:iam:123456789012:role/RoleNameToAssume web_identity_token_file=/path/to/a/token

환경 변수를 사용하여 이 구성을 제공할 수도 있습니다.

AWS_ROLE_ARN

수임할 역할ARN의 입니다.

AWS_WEB_IDENTITY_TOKEN_FILE

웹 자격 증명 토큰 파일의 경로입니다.

AWS_ROLE_SESSION_NAME

이 역할 수임 세션에 적용된 이름입니다.

참고

이러한 환경 변수는 현재 웹 자격 증명 공급자의 역할 수임에만 적용됩니다. 일반 역할 수임 공급자 구성에는 적용되지 않습니다.

캐시된 자격 증명 지우기

역할을 사용하면 는 임시 보안 인증 정보가 만료될 때까지 로컬에서 AWS CLI 캐시합니다. 다음 번에 이를 사용하려고 할 때 는 사용자를 대신하여 이를 갱신하려고 AWS CLI 시도합니다.

역할의 임시 자격 증명이 취소된 경우에는 해당 자격 증명이 자동으로 갱신되지 않고 사용 시도가 실패합니다. 그러나 캐시를 삭제하여 가 새 보안 인증 정보를 검색하도록 강제 AWS CLI 할 수 있습니다.

Linux 또는 macOS

$ rm -r ~/.aws/cli/cache

Windows

C:\> del /s /q %UserProfile%\.aws\cli\cache