기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
IAM 역할로 전환(AWS API)
역할은 AWS 리소스에 액세스하는 데 사용할 수 있는 일련의 권한을 지정합니다. 이러한 면에서 IAM 사용자와 비슷합니다. 보안 주체(개인 또는 애플리케이션)은 역할을 수임하여 필요한 작업을 수행하고 AWS 리소스와 상호작용할 수 있는 임시 권한을 부여받습니다. 역할은 자신의 계정 또는 그 밖의 다른 AWS 계정에 속한 것일 수 있습니다. 역할과 그 이점, 역할 생성 및 구성 방법에 대한 자세한 정보는 IAM 역할 및 IAM 역할 생성 단원을 참조하십시오. 역할을 수임하는 데 사용할 수 있는 여러 방법을 알아보려면 IAM 역할 사용 단원을 참조하십시오.
IAM 사용자의 권한과 수임한 역할의 권한은 누적되지 않습니다. 한 번에 오직 하나의 권한 집합만이 활성화됩니다. 어떤 역할을 수임할 때 이전 사용자 또는 역할 권한은 일시적으로 포기하고 해당 역할에 할당된 권한을 가지고 작업합니다. 이 역할을 끝내면 원래 권한이 자동으로 회복됩니다.
이때 역할 위임을 위해 애플리케이션은 AWS STS AssumeRole
API 작업을 호출하고 사용할 역할의 ARN을 전달합니다. 이 작업은 임시 자격 증명으로 사용하여 새 세션을 생성합니다. 이 세션에는 해당 역할에
대한 자격 증명 기반 정책과 동일한 권한이 지정됩니다.
AssumeRole
호출 시 선택적으로 인라인 또는 관리형 세션 정책을 전달할 수 있습니다. 세션 정책은 역할 또는 연합된 사용자에 대해 임시 자격 증명 세션을 프로그래밍 방식으로 생성할 때 파라미터로 전달하는 고급
정책입니다. Policy
파라미터를 사용하여 단일 JSON 인라인 세션 정책 문서를 전달할 수 있습니다. PolicyArns
파라미터를 사용하여 최대 10개까지 관리형 세션 정책을 지정할 수 있습니다. 결과적으로 얻는 세션의 권한은 엔터티의 자격 증명 기반 정책과 세션
정책의 교집합입니다 세션 정책은 다른 사람에게 역할의 임시 보안 자격 증명을 부여할 필요가 있을 때 유용합니다. 후속 AWS API 호출 시에도 역할의
임시 자격 증명을 사용하여 역할이 속한 계정의 리소스에 액세스할 수 있습니다. 세션 정책을 사용하여 자격 증명 기반 정책에서 허용되는 권한을 부여할
수는 없습니다. 이 역할의 효과적인 권한을 AWS가 어떻게 결정하는지 자세히 알아보려면 정책 평가 로직 단원을 참조하십시오.

IAM 사용자 또는 역할을 이미 사용 중인 외부 인증 사용자(SAML 또는 OIDC)로 로그인한 경우 AssumeRole
을 호출할 수 있습니다. 또한 역할을 사용해 두 번째 역할을 수임하는 역할 함께 묶기를 사용할 수도 있습니다. AWS 계정 루트 사용자로 로그인되어 있을 때는 역할을 수임할 수 없습니다.
기본적으로 역할 세션은 한 시간 동안 지속됩니다. AWS STS AssumeRole*
API 작업을 사용하여 역할을 수임하는 경우 DurationSeconds
파라미터에 대한 값을 지정할 수 있습니다. 이 값의 범위는 900초(15분)에서 해당 역할에 대한 최대 세션 기간 설정까지일 수 있습니다. 역할에
대한 최댓값을 확인하는 방법을 알아보려면 역할에 대한 최대 세션 기간 설정 보기 단원을 참조하십시오.
역할 함께 묶기를 사용하는 경우 세션은 최대 1시간으로 제한됩니다. 그런 다음 DurationSeconds
파라미터를 사용하여 1시간보다 큰 값을 입력하면 이 작업에 실패합니다.
보안을 위해 관리자는 AWS CloudTrail 로그를 검토하여 AWS에서 누가 작업을 수행했는지 확인할 수 있습니다. 관리자는 사용자가 역할을 수임할 때 IAM 사용자 이름을 세션 이름으로 지정하도록 요구할 수 있습니다. 자세한 내용은 aws:RoleSessionName 단원을 참조하십시오.
AWS에 대한 Boto3 인터페이스(AWS SDK for Python (Boto) V3AssumeRole
을 호출하는 방법을 보여줍니다. 또한 AssumeRole
에서 반환한 임시 보안 자격 증명을 사용하여 해당 역할을 소유한 계정의 모든 Amazon S3 버킷을 나열하는 방법도 보여줍니다.
import boto3 # The calls to AWS STS AssumeRole must be signed with the access key ID # and secret access key of an existing IAM user or by using existing temporary # credentials such as those from another role. (You cannot call AssumeRole # with the access key for the root account.) The credentials can be in # environment variables or in a configuration file and will be discovered # automatically by the boto3.client() function. For more information, see the # Python SDK documentation: # http://boto3.readthedocs.io/en/latest/reference/services/sts.html#client # create an STS client object that represents a live connection to the # STS service sts_client = boto3.client('sts') # Call the assume_role method of the STSConnection object and pass the role # ARN and a role session name. assumed_role_object=sts_client.assume_role( RoleArn="arn:aws:iam::
account-of-role-to-assume
:role/name-of-role
", RoleSessionName="AssumeRoleSession1" ) # From the response that contains the assumed role, get the temporary # credentials that can be used to make subsequent API calls credentials=assumed_role_object['Credentials'] # Use the temporary credentials that AssumeRole returns to make a # connection to Amazon S3 s3_resource=boto3.resource( 's3', aws_access_key_id=credentials['AccessKeyId
'], aws_secret_access_key=credentials['SecretAccessKey'
], aws_session_token=credentials['SessionToken'
], ) # Use the Amazon S3 resource object that is now configured with the # credentials to access your S3 buckets. for bucket in s3_resource.buckets.all(): print(bucket.name)