IAM 및 AWS STS 조건 컨텍스트 키 - AWS Identity and Access Management

IAM 및 AWS STS 조건 컨텍스트 키

JSON 정책의 Condition 요소를 사용하여 모든 AWS 요청의 요청 컨텍스트에 포함된 키 값을 테스트할 수 있습니다. 이러한 키는 요청 자체 또는 해당 요청이 참조하는 리소스에 대한 정보를 제공합니다. 사용자가 요청한 작업을 허용하기 전에 키에 값이 지정되었는지 확인할 수 있습니다. 이렇게 하면 JSON 정책 문이 수신 요청과 일치 또는 불일치할 경우 보다 세분화된 제어가 가능합니다. JSON 정책의 Condition 요소 사용에 대한 자세한 방법은 IAM JSON 정책 요소: Condition 단원을 참조하십시오.

이 주제에서는 IAM 서비스(iam: 접두사 포함) 및 AWS Security Token Service(AWS STS) 서비스(sts: 접두사 포함)에서 정의 및 제공하는 키에 대해 설명합니다. 다른 여러 AWS 서비스에서도 해당 서비스가 정의한 작업 및 리소스와 관련된 서비스 고유 키를 제공합니다. 자세한 내용은 AWS 서비스에 사용되는 작업, 리소스 및 조건 키를 참조하세요. 대개의 경우 조건 키를 지원하는 서비스의 설명서에 추가 정보를 확인할 수 있습니다. 예를 들어 Amazon S3 리소스 정책에서 사용할 수 있는 키에 대한 자세한 내용은 Amazon Simple Storage Service 개발자 가이드Amazon S3 정책 키 단원을 참조하십시오.

IAM에서 사용할 수 있는 키

IAM 리소스에 대한 액세스 제어 정책에서는 다음과 같은 조건 키를 사용할 수 있습니다.

iam:AssociatedResourceArn

ARN 연산자를 사용합니다.

대상 서비스에서 이 역할이 연결될 리소스의 ARN을 지정합니다. 리소스는 일반적으로 보안 주체가 역할을 전달하는 서비스에 속합니다. 경우에 따라 리소스는 세 번째 서비스에 속할 수 있습니다. 예를 들어 Amazon EC2 인스턴스에서 사용하는 Amazon EC2 Auto Scaling에 역할을 전달할 수 있습니다. 이 경우 조건은 Amazon EC2 인스턴스의 ARN과 일치합니다.

이 조건 키는 정책의 PassRole 작업에만 적용됩니다. 다른 작업을 제한하는 데 사용할 수 없습니다.

정책에서 이 조건 키를 사용하여 엔터티가 역할을 전달하도록 허용하지만, 해당 역할이 지정된 리소스와 연결된 경우에만 가능합니다. 와일드카드(*)를 사용하면 리전 또는 리소스 ID를 제한하지 않고 특정 유형의 리소스에서 작업을 수행하도록 허용할 수 있습니다. 예를 들어 IAM 사용자 또는 역할이 "us-east-1" 또는 "us-west-1" 리전의 인스턴스에서 사용할 Amazon EC2 서비스에 모든 역할을 전달하도록 허용할 수 있습니다. IAM 사용자 또는 역할은 다른 서비스에 역할을 전달하도록 허용되지 않으며, Amazon EC2가 다른 리전의 인스턴스에서 역할을 사용하도록 허용하지 않습니다.

{ "Effect": "Allow", "Action": "iam:PassRole", "Resource": "*", "Condition": { "StringEquals": {"iam:PassedToService": "ec2.amazonaws.com"}, "StringLike": { "iam:AssociatedResourceARN": [ "arn:aws:ec2:us-east-1:111122223333:instance/*", "arn:aws:ec2:us-west-1:111122223333:instance/*" ] } } }
참고

iam:PassedToService를 지원하는 AWS 서비스는 이 조건 키도 지원합니다.

iam:AWSServiceName

문자열 연산자를 사용합니다.

이 역할이 연결되는 AWS 서비스를 지정합니다.

iam:OrganizationsPolicyId

문자열 연산자를 사용합니다.

지정된 AWS Organizations ID가 포함된 정책이 요청에 사용된 정책과 일치하는지 확인합니다. 이 조건 키를 사용하는 예시 IAM 정책을 보려면 IAM: 조직 정책에 대해 마지막으로 액세스한 서비스 정보 보기 단원을 참조하십시오.

iam:PassedToService

문자열 연산자를 사용합니다.

역할을 전달할 수 있는 서비스의 서비스 보안 주체를 지정합니다. 이 조건 키는 정책의 PassRole 작업에만 적용됩니다. 다른 작업을 제한하는 데 사용할 수 없습니다.

정책에서 이 조건 키를 사용할 때 서비스 보안 주체를 사용하여 서비스를 지정합니다. 서비스 보안 주체는 정책의 Principal 요소에 지정할 수 있는 서비스 이름입니다. SERVICE_NAME_URL.amazonaws.com이 일반적인 형식입니다.

iam:PassedToService를 사용하여 특정 서비스에만 역할을 전달할 수 있도록 사용자를 제한할 수 있습니다. 예를 들어, 사용자는 Amazon S3 버킷에 로그 데이터를 대신 쓸 수 있도록 CloudWatch를 신뢰하는 서비스 역할을 생성할 수 있습니다. 그런 다음 사용자는 새 서비스 역할에 권한 정책 및 신뢰 정책을 연결해야 합니다. 이 경우, 신뢰 정책은 cloudwatch.amazonaws.com 요소에 Principal을 지정해야 합니다. 사용자가 CloudWatch에 역할을 전달하도록 허용하는 정책을 보려면 IAM: IAM 역할을 특정 AWS 서비스로 전달 단원을 참조하십시오.

이 조건 키를 사용하면 사용자가 여러분이 지정한 서비스에 대해서만 서비스 역할을 생성하도록 할 수 있습니다. 예를 들어, 앞의 정책을 가진 사용자가 Amazon EC2에 대한 서비스 역할을 생성하려고 하면 작업이 실패합니다. 해당 사용자에게 Amazon EC2로 역할을 전달할 권한이 없기 때문입니다.

참고

AWS CodeBuild, AWS CodeCommit 등 일부 서비스는 이러한 조건 키를 지원하지 않습니다.

iam:PermissionsBoundary

문자열 연산자를 사용합니다.

지정한 정책이 IAM 보안 주체 리소스에 권한 경계로서 연결되어 있는지 확인합니다. 자세한 내용은 IAM 엔터티에 대한 권한 경계 단원을 참조하십시오.

iam:PolicyARN

ARN 연산자를 사용합니다.

관리형 정책이 포함된 요청에서 관리형 정책의 Amazon 리소스 이름(ARN)을 확인합니다. 자세한 내용은 정책에 대한 액세스 제어 단원을 참조하십시오.

iam:ResourceTag/key-name

문자열 연산자를 사용합니다.

자격 검증 리소스(사용자 또는 역할)에 연결된 태그가 지정된 키 이름 및 값과 일치하는지 확인합니다.

참고

IAM은 aws:ResourceTag 전역 조건 키 사용을 지원하지 않습니다. AWS STS는 IAM 키와 전역 키를 모두 지원합니다.

사용자 또는 역할에 사용자 지정 속성을 키-값 페어의 형태로 추가할 수 있습니다. IAM 태그에 대한 자세한 내용은 IAM 사용자 및 역할 태그 지정 단원을 참조하십시오. iam:ResourceTag를 사용하여 IAM 사용자 및 역할에 대한 액세스를 제어할 수 있습니다. 그러나 IAM은 그룹에 대한 태그를 지원하지 않으므로 태그를 사용하여 그룹에 대한 액세스를 제어할 수 없습니다.

이 예제에서는 다음과 같은 정책을 생성할 수 있는 방법을 보여 줍니다.를 사용하면 status=terminated 태그를 통해 사용자를 삭제할 수 있습니다.이 정책을 사용하려면 정책 예제의 기울임꼴 자리 표시자 텍스트를 본인의 정보로 대체하십시오. 그런 다음 정책 생성 또는 정책 편집의 지침을 따르세요.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "iam:DeleteUser", "Resource": "*", "Condition": {"StringLike": {"iam:ResourceTag/status": "terminated"}} }] }

AWS 웹 자격 증명 연동에서 사용할 수 있는 키

웹 자격 증명 연동을 사용하여 ID 공급자(IdP)를 통해 인증된 사용자에게 임시 보안 자격 증명을 제공할 수 있습니다. 이러한 공급자의 예로는 Login with Amazon, Amazon Cognito, Google 또는 Facebook 등이 있습니다. 이 경우, 임시 보안 자격 증명을 사용해 요청하는 경우 추가 조건 키를 사용할 수 있습니다. 이러한 키를 사용하여 연동 사용자가 특정 공급자, 앱 또는 사용자와 연결된 리소스에만 액세스할 수 있도록 정책을 작성할 수 있습니다. 이러한 키는 일반적으로 역할에 대한 신뢰 정책에서 사용됩니다.

aws:FederatedProvider

문자열 연산자를 사용합니다.

FederatedProvider 키는 사용자 인증에 사용된 IdP를 식별합니다. 예를 들어 Amazon Cognito를 통해 사용자가 인증된 경우 키에 cognito-identity.amazonaws.com이 포함됩니다. 마찬가지로 Login with Amazon을 통해 사용자가 인증된 경우에는 키에 www.amazon.com 값이 포함됩니다. 이러한 리소스 키는 다음과 같이 aws:FederatedProvider 키를 리소스 ARN의 정책 변수로 사용하는 리소스 정책에서 사용할 수 있습니다. 이 정책은 IdP를 사용하여 인증된 모든 사용자가 Amazon S3 버킷의 폴더에서 객체를 가져올 수 있도록 허용합니다. 그러나 버킷은 사용자를 인증한 공급자마다 달라야 합니다.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::BUCKET-NAME/${aws:FederatedProvider}/*" } }
amr

문자열 연산자를 사용합니다.

예제: cognito-identity.amazonaws.com.com:amr

웹 자격 증명 연동에 Amazon Cognito를 사용하는 경우에는 cognito-identity.amazonaws.com:amr 키(Authentication Methods Reference)에 사용자 로그인 정보가 포함됩니다. 이 키는 다수의 값을 갖습니다. 이 말은 정책 내에서 조건 설정 연산자를 사용하여 테스트한다는 것을 의미합니다. 키에 추가되는 값은 다음과 같습니다.

  • 사용자 인증 전에는 키에 unauthenticated 값만 추가됩니다.

  • 사용자 인증 후에는 키에 authenticated 값과 호출 시 사용된 로그인 공급자 이름(graph.facebook.com, accounts.google.com 또는 www.amazon.com)이 추가됩니다.

한 예로, Amazon Cognito 역할의 신뢰 정책에서는 다음 조건에 따라 사용자의 인증 여부를 테스트합니다.

"Condition": { "StringEquals": { "cognito-identity.amazonaws.com:aud": "us-east-2:identity-pool-id" }, "ForAnyValue:StringLike": { "cognito-identity.amazonaws.com:amr": "unauthenticated" } }
aud

문자열 연산자를 사용합니다.

aud 조건 키를 사용하여 Google 클라이언트 ID 또는 Amazon Cognito 자격 증명 풀 ID가 정책에서 지정한 ID와 일치하는지 확인합니다. 동일한 자격 증명 공급자에 대해 aud 키와 함께 sub 키를 사용할 수 있습니다.

예제:

  • accounts.google.com:aud

  • cognito-identity.amazonaws.com:aud

accounts.google.com:aud 조건 키는 다음과 같은 Google ID 토큰 필드와 일치합니다.

  • azp 필드가 설정되지 않은 경우 애플리케이션의 OAuth 2.0 Google 클라이언트 ID에 대한 aud. azp 필드가 설정되면 aud 필드가 accounts.google.com:oaud 조건 키와 일치합니다.

  • azp 필드가 설정된 경우 azp. 이러한 경우는 웹 애플리케이션과 Android 앱이 서로 다른 OAuth 2.0 Google 클라이언트 ID를 가지고 있지만 동일한 Google API 프로젝트를 공유하는 하이브리드 앱에서 발생할 수 있습니다.

Google audazp 필드에 대한 자세한 내용은 Google ID 플랫폼 OpenID Connect 안내서를 참조하십시오.

accounts.google.com:aud 조건 키를 사용하여 정책을 작성할 때 앱이 azp 필드를 설정하는 하이브리드 앱인지 여부를 알아야 합니다.

azp 필드가 설정되지 않음

다음 예제 정책은 azp 필드를 설정하지 않는 비 하이브리드 앱에 적용됩니다. 이 경우 Google ID 토큰 aud 필드 값은 accounts.google.com:audaccounts.google.com:oaud 조건 키 값과 일치합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": {"Federated": "accounts.google.com"}, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "accounts.google.com:aud": "aud-value", "accounts.google.com:oaud": "aud-value", "accounts.google.com:sub": "sub-value" } } } ] }

azp 필드 세트

다음 예제 정책은 azp 필드를 설정하는 하이브리드 앱에 적용됩니다. 이 경우 Google ID 토큰 aud 필드 값은 accounts.google.com:oaud 조건 키 값과 유일하게 일치합니다. azp 필드 값은 accounts.google.com:aud 조건 키 값과 일치합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": {"Federated": "accounts.google.com"}, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "accounts.google.com:aud": "azp-value", "accounts.google.com:oaud": "aud-value", "accounts.google.com:sub": "sub-value" } } } ] }
id

문자열 연산자를 사용합니다.

예제:

  • graph.facebook.com:app_id

  • graph.facebook.com:id

  • www.amazon.com:app_id

  • www.amazon.com:user_id

이러한 키를 사용하여 애플리케이션(또는 사이트) ID 또는 사용자 ID가 정책에서 지정한 ID와 일치하는지 확인합니다. 이는 Facebook 또는 Login with Amazon에 사용됩니다. 동일한 자격 증명 공급자에 대해 app_id 키와 함께 id 키를 사용할 수 있습니다.

oaud

문자열 연산자를 사용합니다.

예제: accounts.google.com:oaud

웹 자격 증명 연동을 위해 Google을 사용하는 경우 이 키는 이 ID 토큰의 용도인 Google 대상(aud)을 지정합니다. 애플리케이션의 OAuth 2.0 클라이언트 ID 중 하나여야 합니다.

sub

문자열 연산자를 사용합니다.

예제:

  • accounts.google.com:sub

  • cognito-identity.amazonaws.com:sub

이러한 키를 사용하여 사용자 ID가 정책에서 지정한 ID와 일치하는지 확인합니다. 동일한 자격 증명 공급자에 대해 sub 키와 함께 aud 키를 사용할 수 있습니다.

웹 자격 증명 연동에 대한 자세한 내용

웹 자격 증명 연동에 대한 자세한 내용은 다음 주제 단원을 참조하십시오.

SAML 기반 AWS STS 연동에 사용할 수 있는 키

AWS Security Token Service(AWS STS)를 사용하여 SAML 기반 연동으로 작업하는 경우 정책에 조건 키를 추가할 수 있습니다.

SAML 역할 신뢰 정책

역할 신뢰 정책에서는 다음과 같은 키를 추가하여 호출자의 역할 위임 가능 여부를 구성할 수 있습니다. saml:doc를 제외한 모든 값은 SAML 어설션에서 가져옵니다. 조건에 따라 정책을 생성하거나 편집할 때 목록의 모든 항목을 IAM 콘솔의 시각적 편집기에서 사용할 수 있습니다. []가 표시된 항목은 지정된 유형의 목록을 값으로 가질 수 있습니다.

saml:aud

문자열 연산자를 사용합니다.

SAML 어설션이 전송되는 엔드포인트 URL입니다. 이 키에 대한 값은 Audience 필드가 아닌 어설션의 SAML Recipient 필드에서 얻습니다.

saml:commonName[]

문자열 연산자를 사용합니다.

commonName 속성입니다.

saml:cn[]

문자열 연산자를 사용합니다.

이 키는 eduOrg 속성입니다.

saml:doc

문자열 연산자를 사용합니다.

이 키는 역할 위임 시 사용한 보안 주체를 나타냅니다. 형식은 account-ID/provider-friendly-name(예: 123456789012/SAMLProviderName)을 따릅니다. account-ID 값은 SAML 공급자가 속한 계정을 참조합니다.

saml:edupersonaffiliation[]

문자열 연산자를 사용합니다.

이 키는 eduPerson 속성입니다.

saml:edupersonassurance[]

문자열 연산자를 사용합니다.

이 키는 eduPerson 속성입니다.

saml:edupersonentitlement[]

문자열 연산자를 사용합니다.

이 키는 eduPerson 속성입니다.

saml:edupersonnickname[]

문자열 연산자를 사용합니다.

이 키는 eduPerson 속성입니다.

saml:edupersonorgdn

문자열 연산자를 사용합니다.

이 키는 eduPerson 속성입니다.

saml:edupersonorgunitdn[]

문자열 연산자를 사용합니다.

이 키는 eduPerson 속성입니다.

saml:edupersonprimaryaffiliation

문자열 연산자를 사용합니다.

이 키는 eduPerson 속성입니다.

saml:edupersonprimaryorgunitdn

문자열 연산자를 사용합니다.

이 키는 eduPerson 속성입니다.

saml:edupersonprincipalname

문자열 연산자를 사용합니다.

이 키는 eduPerson 속성입니다.

saml:edupersonscopedaffiliation[]

문자열 연산자를 사용합니다.

이 키는 eduPerson 속성입니다.

saml:edupersontargetedid[]

문자열 연산자를 사용합니다.

이 키는 eduPerson 속성입니다.

saml:eduorghomepageuri[]

문자열 연산자를 사용합니다.

이 키는 eduOrg 속성입니다.

saml:eduorgidentityauthnpolicyuri[]

문자열 연산자를 사용합니다.

이 키는 eduOrg 속성입니다.

saml:eduorglegalname[]

문자열 연산자를 사용합니다.

이 키는 eduOrg 속성입니다.

saml:eduorgsuperioruri[]

문자열 연산자를 사용합니다.

이 키는 eduOrg 속성입니다.

saml:eduorgwhitepagesuri[]

문자열 연산자를 사용합니다.

이 키는 eduOrg 속성입니다.

saml:givenName[]

문자열 연산자를 사용합니다.

givenName 속성입니다.

saml:iss

문자열 연산자를 사용합니다.

발급자로서 URN으로 표시됩니다.

saml:mail[]

문자열 연산자를 사용합니다.

mail 속성입니다.

saml:name[]

문자열 연산자를 사용합니다.

name 속성입니다.

saml:namequalifier

문자열 연산자를 사용합니다.

SAML 공급자의 표시 이름을 기준으로 하는 해시 값입니다. 이 값은 다음 값을 순서대로 연결하며 '/' 문자로 구분합니다.

  1. Issuer 응답 값(saml:iss)

  2. AWS 계정 ID

  3. IAM에서 SAML 공급자의 표시 이름(ARN의 마지막 부분)

계정 ID, SAML 공급자 표시 이름의 연속값은 IAM 정책에서 키 saml:doc으로 사용 가능합니다. 자세한 내용은 SAML 기반 연동에서 사용자를 고유하게 식별 단원을 참조하십시오.

saml:organizationStatus[]

문자열 연산자를 사용합니다.

이 키는 organizationStatus 속성입니다.

saml:primaryGroupSID[]

문자열 연산자를 사용합니다.

primaryGroupSID 속성입니다.

saml:sub

문자열 연산자를 사용합니다.

이것은 클레임의 주체로서 여기에는 조직 내 사용자 개개인을 식별할 수 있는 고유 값이 포함됩니다(예: _cbb88bf52c2510eabe00c1642d4643f41430fe25e3).

saml:sub_type

문자열 연산자를 사용합니다.

이 키는 persistent, transient 값을 갖거나 SAML 어설션에서 사용되는 FormatSubject 요소의 전체 NameID URI로 구성될 수 있습니다. persistent의 값은 saml:sub의 값이 세션 간 사용자에서도 동일하다는 것을 나타냅니다. 값이 transient인 경우 각 세션마다 사용자의 saml:sub 값이 다릅니다. NameID 요소의 Format 속성에 대한 자세한 내용은 인증 응답을 위한 SAML 어설션 구성 단원을 참조하십시오.

saml:surname[]

문자열 연산자를 사용합니다.

surnameuid 속성입니다.

saml:uid[]

문자열 연산자를 사용합니다.

uid 속성입니다.

saml:x500UniqueIdentifier[]

문자열 연산자를 사용합니다.

이 키는 x500UniqueIdentifier 속성입니다.

eduPersoneduOrg 속성에 대한 일반적인 정보는 Internet2 웹사이트 단원을 참조하십시오. eduPerson 속성 목록은 eduPerson Object Class Specification(201203) 단원을 참조하십시오.

형식이 목록인 조건 키에는 다수의 값이 추가될 수 있습니다. 목록 값 정책에서 조건을 생성하려면 설정 연산자(ForAllValues, ForAnyValue)를 사용하면 됩니다. 예를 들어, 소속이 "faculty", "staff"("student" 제외)인 사용자를 모두 허용하려면 다음과 같은 조건을 사용할 수 있습니다.

"Condition": { "ForAllValues:StringLike": { "saml:edupersonaffiliation":[ "faculty", "staff"] } }

SAML 역할 권한 정책

역할 권한 정책에서 SAML 연동으로 액세스 가능한 AWS 서비스를 정의할 때는 다음과 같은 키를 추가할 수 있습니다.

saml:namequalifier

문자열 연산자를 사용합니다.

이 키에는 saml:docsaml:iss 값의 조합을 나타내는 해시 값이 저장됩니다. 이 해시 값은 네임스페이스 한정자로 사용되어 saml:namequalifiersaml:sub의 조합으로 사용자를 식별합니다.

saml:sub

문자열 연산자를 사용합니다.

이것은 클레임의 주체로서 여기에는 조직 내 사용자 개개인을 식별할 수 있는 고유 값이 포함됩니다(예: _cbb88bf52c2510eabe00c1642d4643f41430fe25e3).

saml:sub_type

문자열 연산자를 사용합니다.

이 키는 persistent, transient 값을 갖거나 SAML 어설션에서 사용되는 FormatSubject 요소의 전체 NameID URI로 구성될 수 있습니다. persistent의 값은 saml:sub의 값이 세션 간 사용자에서도 동일하다는 것을 나타냅니다. 값이 transient인 경우 각 세션마다 사용자의 saml:sub 값이 다릅니다. NameID 요소의 Format 속성에 대한 자세한 내용은 인증 응답을 위한 SAML 어설션 구성 단원을 참조하십시오.

이러한 키를 사용하는 방법은 SAML 2.0 기반 연동에 대하여 단원을 참조하십시오.

AWS STS에서 사용할 수 있는 키

AWS Security Token Service(AWS STS) 작업을 사용하여 맡는 역할에 대한 IAM 역할 신뢰 정책에서는 다음 조건 키를 사용할 수 있습니다.

sts:AWSServiceName

문자열 연산자를 사용합니다.

이 키를 사용하여 보유자 토큰을 사용할 수 있는 서비스를 지정합니다. 정책에서 이 조건 키를 사용할 때 서비스 보안 주체를 사용하여 서비스를 지정합니다. 서비스 보안 주체는 정책의 Principal 요소에 지정할 수 있는 서비스 이름입니다. 예를 들어 codeartifact.amazonaws.com는 AWS CodeArtifact 서비스 보안 주체입니다.

일부 AWS 서비스의 경우 프로그래밍 방식으로 리소스에 액세스하기 전에 AWS STS 서비스 보유자 토큰을 가져올 수 있는 권한이 있어야 합니다. 예를 들어 AWS CodeArtifact에서는 보안 주체가 일부 작업을 수행하기 위해 보유자 토큰을 사용해야 합니다. 이 aws codeartifact get-authorization-token 명령은 보유자 토큰을 반환합니다. 그런 다음 보유자 토큰을 사용하여 AWS CodeArtifact 작업을 수행 할 수 있습니다. 보유자 토큰에 대한 자세한 내용은 보유자 토큰 사용 단원을 참조하십시오.

가용성 – 이 키는 보유자 토큰을 가져오는 요청에 존재합니다. 보유자 토큰을 얻기 위해 AWS STS를 직접 호출할 수 없습니다. 다른 서비스에서 일부 작업을 수행하면 서비스가 사용자를 대신하여 보유자 토큰을 요청합니다.

이 조건 키를 사용하여 보안 주체가 특정 서비스에 사용할 보유자 토큰을 가져오도록 허용할 수 있습니다.

sts:DurationSeconds

숫자 연산자를 사용합니다.

이 키를 사용하여 보안 주체가 AWS STS 보유자 토큰을 가져올 때 사용할 수 있는 지속 시간(초)을 지정합니다.

일부 AWS 서비스의 경우 프로그래밍 방식으로 리소스에 액세스하기 전에 AWS STS 서비스 보유자 토큰을 가져올 수 있는 권한이 있어야 합니다. 예를 들어 AWS CodeArtifact에서는 보안 주체가 일부 작업을 수행하기 위해 보유자 토큰을 사용해야 합니다. AWS CodeArtifact get-authorization-token 명령은 보유자 토큰을 반환합니다. 그런 다음 보유자 토큰을 사용하여 AWS CodeArtifact 작업을 수행 할 수 있습니다. 보유자 토큰에 대한 자세한 내용은 보유자 토큰 사용 단원을 참조하십시오.

가용성 – 이 키는 보유자 토큰을 가져오는 요청에 존재합니다. 보유자 토큰을 얻기 위해 AWS STS를 직접 호출할 수 없습니다. 다른 서비스에서 일부 작업을 수행하면 서비스가 사용자를 대신하여 보유자 토큰을 요청합니다. 이 키는 AWS STS assume-role 작업에 대해 존재하지 않습니다.

sts:ExternalId

문자열 연산자를 사용합니다.

IAM 역할을 수임할 때 보안 주체가 특정 식별자를 제공하도록 요구하려면 이 키를 사용합니다.

가용성 – 이 키는 보안 주체가 AWS CLI 또는 AWS API를 사용하여 역할을 수임하는 동안 외부 ID를 제공할 때 요청에 존재합니다.

다른 계정에서 역할을 맡을 때 필요할 수도 있는 고유한 식별자. 역할이 속한 계정의 관리자가 외부 ID를 제공한 경우에는 해당 값을 ExternalId 파라미터에 제공하십시오. 이 값은 암호 또는 계정 번호와 같은 어떤 문자열도 가능합니다. 외부 ID의 주된 기능은 혼동된 대리자 문제를 해결하고 방지하는 것입니다. 외부 ID와 혼동된 대리자 문제에 대해 자세히 알아보려면 AWS 리소스에 대한 액세스를 서드 파티에 부여할 때 외부 ID를 사용하는 방법 단원을 참조하십시오.

ExternalId 값은 최소 2자, 최대 1,224자여야 합니다. 이 값은 공백 없이 영숫자여야 합니다. 이 값은 더하기(+), 등호(=), 쉼표(,) 마침표(.), 기호(@), 콜론(:), 슬래시(/) 및 하이픈(-)과 같은 기호도 포함할 수 있습니다.

sts:RoleSessionName

문자열 연산자를 사용합니다.

보안 주체가 역할을 수임할 때 지정하는 세션 이름을 정책에 지정된 값과 비교하려면 이 키를 사용합니다.

가용성 – 이 키는 보안 주체가 AWS Management Console, assume-role CLI 명령 또는 AssumeRole API 작업을 사용하여 역할을 수임할 때 요청에 존재합니다.

역할 신뢰 정책에서 이 키를 사용하여 사용자가 역할을 수임할 때 특정 세션 이름을 지정하도록 요구할 수 있습니다. 예를 들어 IAM 사용자가 자신의 사용자 이름을 세션 이름으로 지정하도록 요구할 수 있습니다. IAM 사용자가 역할을 수임하면 사용자 이름과 일치하는 세션 이름과 함께 AWS CloudTrail 로그에 활동이 나타납니다. 이를 통해 관리자가 AWS에서 특정 작업을 수행한 사용자를 쉽게 확인할 수 있습니다.

다음 역할 신뢰 정책에서는 111122223333 계정의 IAM 사용자가 역할을 수임할 때 IAM 사용자 이름을 세션 이름으로 지정하도록 요구합니다. 이 요구 사항은 조건 키의 aws:username 조건 변수를 사용하여 적용됩니다. 이 정책을 통해 IAM 사용자는 정책에 연결된 역할을 수임할 수 있습니다. 이 정책은 임시 자격 증명을 사용하는 사용자가 역할을 수임하는 것을 허용하지 않습니다. username 변수는 IAM 사용자에만 사용되기 때문입니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "RoleTrustPolicyRequireUsernameForSessionName", "Effect": "Allow", "Action": "sts:AssumeRole", "Principal": {"AWS": "arn:aws:iam::111122223333:root"}, "Condition": { "StringLike": {"sts:RoleSessionName": "${aws:username}"} } } ] }

관리자가 작업에 대한 AWS CloudTrail 로그를 볼 때 세션 이름을 계정의 사용자 이름과 비교할 수 있습니다. 다음 예제에서는 matjac이라는 사용자가 MateoRole이라는 역할을 사용하여 작업을 수행했습니다. 관리자는 사용자 이름이 matjac인 Mateo Jackson에게 연락할 수 있습니다.

"assumedRoleUser": { "assumedRoleId": "AROACQRSTUVWRAOEXAMPLE:matjac", "arn": "arn:aws:sts::111122223333:assumed-role/MateoRole/matjac" }

역할을 사용한 교차 계정 액세스를 허용하는 경우 한 계정의 사용자가 다른 계정의 역할을 수임할 수 있습니다. CloudTrail에 나열된 수임된 역할 사용자의 ARN에는 역할이 있는 계정이 포함되며, 역할을 수임한 사용자의 계정은 포함되지 않습니다. 사용자는 계정 내에서만 고유합니다. 따라서 관리하는 계정의 사용자가 수임하는 역할에 대해서만 CloudTrail 로그를 확인하는 데 이 방법을 사용하는 것이 좋습니다. 사용자는 여러 계정에서 동일한 사용자 이름을 사용할 수 있습니다.

sts:TransitiveTagKeys

문자열 연산자를 사용합니다.

이 키를 사용하여 요청의 전이적 세션 태그 키와 정책에 지정된 전이적 세션 태그 키를 비교합니다.

가용성 – 이 키는 임시 보안 자격 증명을 사용하여 요청을 수행할 때 요청에 존재합니다. 여기에는 모든 assume-role 작업 또는 GetFederationToken 작업을 사용해 생성된 자격 증명이 포함됩니다.

임시 보안 자격 증명을 사용하여 요청하면 요청 컨텍스트aws:PrincipalTag 컨텍스트 키가 포함됩니다. 이 키에는 세션 태그, 전이적 세션 태그 및 역할 태그 목록이 포함됩니다. 전이적 세션 태그를 사용하면 세션 자격 증명을 사용하여 다른 역할을 맡은 경우 모든 후속 세션에서 유지됩니다. 한 역할에서 다른 역할을 맡는 것을 역할 체인이라고 합니다.

정책에서 이 조건 키를 사용하여 역할을 맡거나 사용자를 연동할 때 특정 세션 태그를 전이적으로 설정하도록 요구할 수 있습니다.