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"}, "ArnLike": { "iam:AssociatedResourceARN": [ "arn:aws:ec2:us-east-1:111122223333:instance/*", "arn:aws:ec2:us-west-1:111122223333:instance/*" ] } } }
참고

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

iam:AWSServiceName

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

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

이 예에서는 서비스 이름이 access-analyzer.amazonaws.com인 경우 엔터티가 서비스 연결 역할을 생성하도록 허용합니다.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "iam:CreateServiceLinkedRole", "Resource": "*", "Condition": { "StringLike": { "iam:AWSServiceName": "access-analyzer.amazonaws.com" } } }] }
iam:FIDO-certification

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

FIDO 보안 키 등록 시 MFA 디바이스 FIDO 인증 등급을 확인합니다. 디바이스 인증은 FIDO Alliance 메타데이터 서비스(MDS)에서 가져옵니다. FIDO 보안 키의 인증 상태 또는 등급이 변경될 경우 디바이스를 등록 취소하고 업데이트된 인증 정보를 가져오기 위해 다시 등록하지 않는 한 디바이스 인증은 업데이트되지 않습니다.

가능한 값: L1, L1plus, L2, L2plus, L3, L3plus

이 예에서는 보안 키를 등록하고 디바이스에 대한 FIDO Level 1 plus 인증을 가져옵니다.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "iam:EnableMFADevice", "Resource": "*", "Condition": { "StringEquals": { "iam:RegisterSecurityKey" : "Create" } } }, { "Effect": "Allow", "Action": "iam:EnableMFADevice", "Resource": "*", "Condition": { "StringEquals": { "iam:RegisterSecurityKey" : "Activate", "iam:FIDO-certification": "L1plus" } } } ] }
iam:FIDO-FIPS-140-2-certification

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

FIDO 보안 키 등록 시 MFA 디바이스 FIPS-140-2 검증 인증 등급을 확인합니다. 디바이스 인증은 FIDO Alliance 메타데이터 서비스(MDS)에서 가져옵니다. FIDO 보안 키의 인증 상태 또는 등급이 변경될 경우 디바이스를 등록 취소하고 업데이트된 인증 정보를 가져오기 위해 다시 등록하지 않는 한 디바이스 인증은 업데이트되지 않습니다.

가능한 값: L1, L2, L3, L4

이 예에서는 보안 키를 등록하고 디바이스에 대한 FIPS-140-2 Level 2 인증을 가져옵니다.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "iam:EnableMFADevice", "Resource": "*", "Condition": { "StringEquals": { "iam:RegisterSecurityKey" : "Create" } } }, { "Effect": "Allow", "Action": "iam:EnableMFADevice", "Resource": "*", "Condition": { "StringEquals": { "iam:RegisterSecurityKey" : "Activate", "iam:FIDO-FIPS-140-2-certification": "L2" } } } ] }
iam:FIDO-FIPS-140-3-certification

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

FIDO 보안 키 등록 시 MFA 디바이스 FIPS-140-3 검증 인증 등급을 확인합니다. 디바이스 인증은 FIDO Alliance 메타데이터 서비스(MDS)에서 가져옵니다. FIDO 보안 키의 인증 상태 또는 등급이 변경될 경우 디바이스를 등록 취소하고 업데이트된 인증 정보를 가져오기 위해 다시 등록하지 않는 한 디바이스 인증은 업데이트되지 않습니다.

L1, L2, L3, L4의 가능한 값

이 예에서는 보안 키를 등록하고 디바이스에 대한 FIPS-140-3 Level 3 인증을 가져옵니다.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "iam:EnableMFADevice", "Resource": "*", "Condition": { "StringEquals": { "iam:RegisterSecurityKey" : "Create" } } }, { "Effect": "Allow", "Action": "iam:EnableMFADevice", "Resource": "*", "Condition": { "StringEquals": { "iam:RegisterSecurityKey" : "Activate", "iam:FIDO-FIPS-140-3-certification": "L3" } } } ] }
iam:RegisterSecurityKey

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

MFA 디바이스 활성화의 현재 상태를 확인합니다.

가능한 값: Create 또는 Activate

이 예에서는 보안 키를 등록하고 디바이스에 대한 FIPS-140-3 Level 1 인증을 가져옵니다.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "iam:EnableMFADevice", "Resource": "*", "Condition": { "StringEquals": { "iam:RegisterSecurityKey" : "Create" } } }, { "Effect": "Allow", "Action": "iam:EnableMFADevice", "Resource": "*", "Condition": { "StringEquals": { "iam:RegisterSecurityKey" : "Activate", "iam:FIDO-FIPS-140-3-certification": "L1" } } } ] }
iam:OrganizationsPolicyId

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

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

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로 역할을 전달할 권한이 없기 때문입니다.

역할을 서비스에 전달한 다음 역할을 다른 서비스에 전달하는 경우가 있습니다. iam:PassedToService에는 역할을 전달하는 중간 서비스가 아니라 역할을 수임하는 최종 서비스만 포함됩니다.

참고

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

iam:PermissionsBoundary

ARN 연산자를 사용합니다.

지정한 정책이 IAM 보안 주체 리소스에 권한 경계로서 연결되어 있는지 확인합니다. 자세한 내용은 IAM 엔터티의 권한 범위 섹션을 참조하세요.

iam:PolicyARN

ARN 연산자를 사용합니다.

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

iam:ResourceTag/key-name

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

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

참고

IAM 및 AWS STS은 iam:ResourceTag IAM 조건 키와 aws:ResourceTag 전역 조건 키를 모두 지원합니다.

IAM 리소스에 사용자 지정 속성을 키 값 페어의 형태로 추가할 수 있습니다. IAM 리소스의 태그에 대한 자세한 내용은 AWS Identity and Access Management 리소스용 태그 섹션을 참조하세요. ResourceTag를 사용하여 AWS 리소스를 비롯한 IAM 리소스에 대한 액세스를 제어할 수 있습니다. 그러나 IAM은 그룹에 대한 태그를 지원하지 않으므로 태그를 사용하여 그룹에 대한 액세스를 제어할 수 없습니다.

이 예제는 status=terminated 태그가 있는 사용자만 삭제할 수 있는 아이덴티티 기반 정책을 생성하는 방법을 보여줍니다. 이 정책을 사용하려면 정책 예제의 기울임꼴 자리 표시자 텍스트를 본인의 정보로 대체합니다. 그런 다음 정책 생성 또는 정책 편집의 지침을 따릅니다.

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

AWS OIDC 페더레이션에서 사용 가능한 키

OIDC 페더레이션을 사용하여 OpenID Connect를 준수하는 ID 제공업체(idP)를 통해 AWS 계정의 IAM OIDC(OpenID Connect) ID 공급자에게 인증된 사용자에게 임시 보안 자격 증명을 제공할 수 있습니다. 이러한 공급자의 예로는 GitHub, Amazon Cognito, Login with Amazon, Google 등이 있습니다. Amazon Elastic Kubernetes Service 워크로드에 부여된 서비스 계정 토큰뿐만 아니라 자체 IdP의 자격 증명 토큰 및 액세스 토큰도 사용할 수 있습니다.

AWS OIDC 조건 컨텍스트 키를 사용하여 페더레이션 사용자가 특정 공급자, 앱 또는 사용자와 연결된 리소스에만 액세스할 수 있도록 정책을 작성할 수 있습니다. 이러한 키는 일반적으로 역할에 대한 신뢰 정책에서 사용됩니다. OIDC 공급자(token.actions.githubusercontent.com)의 이름 다음에 클레임(:aud)을 사용하여 token.actions.githubusercontent.com:aud와 같이 조건 키를 정의합니다.

일부 OIDC 페더레이션 조건 키는 역할 세션에서 리소스 액세스를 승인하는 데 사용할 수 있습니다. 세션에서 사용 가능 열의 값이 Yes인 경우 정책에서 이러한 조건 키를 사용하여 다른 AWS 서비스에서 사용자가 액세스할 수 있는 대상을 정의할 수 있습니다. 세션에서 클레임을 사용할 수 없는 경우 OIDC 조건 컨텍스트 키는 초기 AssumeRoleWithWebIdentity 인증을 위한 역할 신뢰 정책에서만 사용할 수 있습니다.

IdP를 선택하여 IdP의 클레임이 AWS의 IAM 조건 컨텍스트 키에 어떻게 매핑되는지 확인합니다.

Default

기본값에는 표준 OIDC 클레임과 해당 클레임이 AWS의 AWS STS 조건 컨텍스트 키에 매핑되는 방식이 나열됩니다. 이러한 키를 사용하여 역할에 대한 액세스를 제어할 수 있습니다. 이렇게 하려면 AWS STS 조건 키IdP JWT 클레임 열의 값과 비교합니다. IdP가 탭 옵션에 나열되지 않은 경우 이 매핑을 사용합니다.

OIDC JWT ID 토큰에서 기본 구현을 사용하는 IdP의 몇 가지 예로는 GitHub Actions 워크플로와 Google이 있습니다.

AWS STS 조건 키 IdP JWT 클레임 세션에서 사용 가능

amr

amr

aud

azp

azp의 값이 설정되지 않은 경우 aud 조건 키가 aud 클레임에 매핑됩니다.

이메일

이메일

아니요

oaud

aud

아니요

sub

sub

GitHub에서 OIDC 조건 컨텍스트 키 사용에 대한 자세한 내용은 GitHub OIDC ID 제공자의 역할 구성 섹션을 참조하세요. Google audazp 필드에 대한 자세한 내용은 Google ID 플랫폼 OpenID Connect 안내서를 참조하세요.

amr

문자열 연산자를 사용합니다. 이 키는 다수의 값을 갖습니다. 이 말은 정책 내에서 조건 설정 연산자를 사용하여 테스트한다는 것을 의미합니다.

: token.actions.githubusercontent.com:amr

인증 방법 참조에는 사용자에 대한 로그인 정보가 포함됩니다. 키에 추가되는 값은 다음과 같습니다.

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

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

aud

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

:

  • accounts.google.com:aud

  • token.actions.githubusercontent.com:aud

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

이 조건 키는 다음 토큰 필드에서 설정됩니다.

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

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

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" } } } ] }
이메일

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

: accounts.google.com:email

이 조건 키는 사용자의 이메일 주소를 확인합니다. 이 클레임의 값은 이 계정에 고유하지 않을 수 있으며 시간이 지남에 따라 변경될 수 있으므로 이 값을 사용자 기록을 확인하는 기본 식별자로 사용해서는 안 됩니다.

oaud

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

: accounts.google.com:oaud

이 키는 이 ID 토큰의 용도인 다른 대상(aud)을 지정합니다. 애플리케이션의 OAuth 2.0 클라이언트 ID 중 하나여야 합니다.

sub

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

:

  • accounts.google.com:sub

  • token.actions.githubusercontent.com:sub

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

다음 역할 신뢰 정책에서 sub 조건 키는 역할을 demo 이름이 지정된 GitHib 브랜치로 제한합니다.

{ "Version": "2012-10-17", "Statement": [ "Condition": { "StringEquals": { "token.actions.githubusercontent.com:aud": "sts.amazonaws.com", "token.actions.githubusercontent.com:sub": "repo:octo-org/octo-repo:ref:refs/heads/demo" } } ] }
Amazon Cognito

이 탭에서는 Amazon Cognito가 OIDC 클레임을 AWS의 AWS STS 조건 컨텍스트 키에 매핑하는 방법을 설명합니다. 이러한 키를 사용하여 역할에 대한 액세스를 제어할 수 있습니다. 이렇게 하려면 AWS STS 조건 키IdP JWT 클레임 열의 값과 비교합니다.

Amazon Cognito에서 사용하는 역할의 경우 cognito-identity.amazonaws.com과 클레임을 사용하여 키를 정의합니다.

자격 증명 풀 클레임 매핑에 대한 자세한 내용은 Amazon Cognito 개발자 안내서의 기본 공급자 매핑을 참조하세요. 사용자 풀 클레임 매핑에 대한 자세한 내용은 Amazon Cognito 개발자 안내서의 ID 토큰 사용을 참조하세요.

AWS STS 조건 키 IdP JWT 클레임 세션에서 사용 가능

amr

amr

aud

aud

oaud

aud

아니요

sub

sub

amr

문자열 연산자를 사용합니다. 이 키는 다수의 값을 갖습니다. 이 말은 정책 내에서 조건 설정 연산자를 사용하여 테스트한다는 것을 의미합니다.

-cognito-identity.amazonaws.com:amr

인증 방법 참조에는 사용자에 대한 로그인 정보가 포함됩니다. 키에 추가되는 값은 다음과 같습니다.

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

  • 사용자 인증 후에는 키에 authenticated 값과 호출 시 사용된 로그인 공급자 이름(cognito-identity.amazonaws.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

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

-cognito-identity.amazonaws.com:aud

사용자를 인증한 사용자 풀 앱 클라이언트입니다. Amazon Cognito는 액세스 토큰 client_id 클레임에서 동일한 값을 렌더링합니다.

oaud

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

-cognito-identity.amazonaws.com:oaud

사용자를 인증한 사용자 풀 앱 클라이언트입니다. Amazon Cognito는 액세스 토큰 client_id 클레임에서 동일한 값을 렌더링합니다.

sub

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

-cognito-identity.amazonaws.com:sub

인증된 사용자에 대한 고유 식별자(UUID) 또는 제목입니다. 사용자 풀에서 사용자 이름이 고유하지 않을 수 있습니다. 하위 클레임은 특정 사용자를 식별하는 가장 좋은 방법입니다. 동일한 자격 증명 공급자에 대해 sub 키와 함께 aud 키를 사용할 수 있습니다.

{ "Version": "2012-10-17", "Statement": [ "Condition": { "StringEquals": { "cognito-identity.amazonaws.com:aud": "us-east-1:12345678-abcd-abcd-abcd-123456790ab", "cognito-identity.amazonaws.com:sub": [ "us-east-1:12345678-1234-1234-1234-123456790ab", "us-east-1:98765432-1234-1234-1243-123456790ab" ] } } ] }
Login with Amazon

이 탭에서는 Login with Amazon이 OIDC 클레임을 AWS의 AWS STS 조건 컨텍스트 키에 매핑하는 방법을 설명합니다. 이러한 키를 사용하여 역할에 대한 액세스를 제어할 수 있습니다. 이렇게 하려면 AWS STS 조건 키IdP JWT 클레임 열의 값과 비교합니다.

AWS STS 조건 키 IdP JWT 클레임 세션에서 사용 가능

app_id

애플리케이션 ID

sub

사용자 ID

user_id

사용자 ID

app_id

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

-www.amazon.com:app_id

이 키는 다른 자격 증명 공급자가 사용하는 aud 필드와 일치하는 대상 컨텍스트를 지정합니다.

sub

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

-www.amazon.com:sub

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

user_id

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

-www.amazon.com:user_id

이 키는 다른 자격 증명 공급자가 사용하는 aud 필드와 일치하는 대상 컨텍스트를 지정합니다. 동일한 자격 증명 공급자에 대해 user_id 키와 함께 id 키를 사용할 수 있습니다.

Facebook

이 탭에서는 Facebook이 OIDC 클레임을 AWS의 AWS STS 조건 컨텍스트 키에 매핑하는 방법을 설명합니다. 이러한 키를 사용하여 역할에 대한 액세스를 제어할 수 있습니다. 이렇게 하려면 AWS STS 조건 키IdP JWT 클레임 열의 값과 비교합니다.

AWS STS 조건 키 IdP JWT 클레임 세션에서 사용 가능

app_id

애플리케이션 ID

id

id

app_id

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

-graph.facebook.com:app_id

이 키는 다른 자격 증명 공급자가 사용하는 aud 필드와 일치하는 대상 컨텍스트를 검증합니다.

id

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

-graph.facebook.com:id

이 키를 사용하여 애플리케이션(또는 사이트) ID가 정책에서 지정한 ID와 일치하는지 확인합니다.

OIDC 페더레이션에 대한 자세한 내용

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 속성에 관한 일반 정보는 REFEDS Wiki 웹사이트를 참조하세요. eduPerson 속성 목록은 eduPerson Object Class Specification(201602)을 참조하세요.

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

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

교차 서비스 SAML 기반 AWS STS 페더레이션 컨텍스트 키

일부 SAML 기반 페더레이션 조건 키는 후속 요청에서 다른 서비스 및 AssumeRole 호출의 AWS 작업을 승인하는 데 사용할 수 있습니다. 다음은 페더레이션 보안 주체가 다른 역할을 맡을 때 역할 신뢰 정책에서, 그리고 다른 AWS 서비스의 리소스 정책에서 페더레이션 보안 주체의 리소스 액세스를 승인하는 데 사용할 수 있는 조건 키입니다. 이러한 키 사용에 대한 자세한 내용은 SAML 2.0 기반 페더레이션에 대하여 단원을 참조하세요.

설명을 보려면 조건 키를 선택합니다.

참고

초기 외부 ID 제공업체(IdP) 인증 응답 이후에는 다른 SAML 기반 페더레이션 조건 키를 사용할 수 없습니다.

AWS STS에서 사용할 수 있는 키

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

saml:sub

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

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

sts:AWSServiceName

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

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

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

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

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

sts:DurationSeconds

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

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

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

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

sts:ExternalId

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

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

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

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

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

sts:RequestContext/context-key

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

이 키를 사용하여 요청에 전달된 신뢰할 수 있는 토큰 발급자 서명 컨텍스트 어설션에 포함된 세션 컨텍스트 키-값 페어를 역할 신뢰 정책에 지정된 컨텍스트 키-값과 비교합니다.

가용성 - 이 키는 AWS STS AssumeRole API 작업을 사용해 역할을 수임하는 동안 ProvidedContexts 요청 파라미터에 컨텍스트 어설션이 제공되면 요청에 표시됩니다.

이 컨텍스트 키의 형식은 "sts:RequestContext/context-key":"context-value"와 같으며 여기서 context-keycontext-value는 컨텍스트 키-값 페어입니다. 요청에 전달된 서명된 컨텍스트 어설션에 여러 컨텍스트 키가 포함된 경우 각 키-값 페어에 대해 하나의 컨텍스트 키가 있습니다. 보안 주체가 결과 세션 토큰 내에서 컨텍스트 키를 설정할 수 있도록 하려면 역할 신뢰 정책에서 sts:SetContext 작업에 대한 권한을 부여해야 합니다. 이 키와 함께 사용할 수 있는 지원되는 IAM Identity Center 컨텍스트 키에 대한 자세한 내용은 AWS IAM Identity Center 사용 설명서의 IAM Identity Center의 AWS STS 조건 키를 참조하세요.

역할 신뢰 정책에서 이 키를 사용하여 역할을 수임할 때 사용자 또는 사용자 특성에 따라 세분화된 액세스 제어를 적용할 수 있습니다. 역할이 위임되면 역할 수임 요청에서 컨텍스트 제공자가 설정한 세션 컨텍스트 키-값 페어를 포함하는 AdditionalEventData 속성 내 AWS CloudTrail 로그에 활동이 나타납니다. 이렇게 하면 여러 보안 주체가 한 역할을 사용할 때 관리자가 역할 세션 간을 구분하는 것이 쉬워집니다. 키-값 페어는 AWS CloudTrail 또는 AWS STS가 아닌 지정된 컨텍스트 제공자가 설정합니다. 이를 통해 컨텍스트 제공자는 CloudTrail 로그 및 세션 정보에 포함되는 컨텍스트를 제어할 수 있습니다.

sts:RequestContextProviders

ARN 연산자를 사용합니다.

이 키를 사용하여 요청의 컨텍스트 제공자 ARN을 역할 신뢰 정책에 지정된 컨텍스트 제공자 ARN과 비교할 수 있습니다.

가용성 - 이 키는 AWS STS AssumeRole API 작업을 사용해 역할을 수임하는 동안 ProvidedContexts 요청 파라미터에 컨텍스트 어설션이 제공되면 요청에 표시됩니다.

다음 예제 조건은 요청에 전달된 컨텍스트 제공자 ARN이 역할 신뢰 정책 조건에 지정된 ARN과 일치하는지 확인합니다.

"Condition": { "ForAllValues:ArnEquals": { "sts:RequestContextProviders": [ "arn:aws:iam::aws:contextProvider/IdentityCenter" ] } }
sts:RoleSessionName

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

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

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

역할 신뢰 정책에서 이 키를 사용하여 사용자가 역할을 수임할 때 특정 세션 이름을 지정하도록 요구할 수 있습니다. 예를 들어 IAM 사용자가 자신의 사용자 이름을 세션 이름으로 지정하도록 요구할 수 있습니다. IAM 사용자가 역할을 수임하면 사용자 이름과 일치하는 세션 이름과 함께 AWS CloudTrail 로그에 활동이 나타납니다. 이렇게 하면 여러 보안 주체가 한 역할을 사용할 때 관리자가 역할 세션 간을 구분하는 것이 쉬워집니다.

다음 역할 신뢰 정책에서는 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:SourceIdentity

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

보안 주체가 역할을 수임할 때 지정하는 소스 자격 증명을 정책에 지정된 값과 비교하려면 이 키를 사용합니다.

가용성 - AWS STS assume-role CLI 명령 또는 AWS STS AssumeRoleAPI 작업을 사용해 역할을 수임하는 동안 보안 주체가 소스 자격 증명을 제공할 때 이 키가 요청에 표시됩니다.

역할 신뢰 정책에서 이 키를 사용하여 사용자가 역할을 수임할 때 특정 소스 자격 증명을 설정하도록 요구할 수 있습니다. 예를 들어 인력이나 페더레이션 자격 증명에게 소스 자격 증명에 대한 값을 지정하도록 요구할 수 있습니다. 자격 증명 공급자(IdP)는 사용자 이름 또는 전자 메일과 같이 사용자와 연결된 특성 중 하나를 소스 자격 증명으로 사용하도록 구성할 수 있습니다. 그런 다음 IdP가 소스 자격 증명을 어설션 내의 속성으로 전달하거나 클레임하여 AWS로 전송합니다. 소스 자격 증명 속성의 값은 역할을 수임하는 사용자 또는 애플리케이션을 식별합니다.

사용자가 역할을 수임하면 활동이 설정된 소스 자격 증명 값과 함께 AWS CloudTrail 로그에 나타납니다. 이를 통해 관리자는 AWS의 역할로 누가 어떤 작업을 수행했는지 쉽게 확인할 수 있습니다. 자격 증명이 소스 자격 증명을 설정하도록 허용하는 sts:SetSourceIdentity 작업에 대한 사용 권한을 부여 해야 합니다.

sts:RoleSessionName과 달리 소스 자격 증명을 설정한 후에는 값을 변경할 수 없습니다. 이것은 소스 자격 증명에 의해 역할에서 수행되는 모든 작업의 요청 컨텍스트에 있습니다. 세션 자격 증명을 사용하여 다른 역할을 수임하는 경우 값이 후속 역할 세션에 유지됩니다. 한 역할에서 다른 역할을 맡는 것을 역할 체인이라고 합니다.

aws:SourceIdentity 전역 조건 키를 사용하여 후속 요청에서 소스 자격 증명 값을 기준으로 AWS 리소스에 대한 액세스 권한을 추가로 제어할 수 있습니다.

다음 역할 신뢰 정책은 IAM 사용자 AdminUser가 계정 111122223333의 역할을 수임하도록 허용합니다. 또한 소스 자격 증명 집합이 DiegoRamirez로 설정된 경우에 한해 AdminUser가 소스 자격 증명을 설정하는 권한을 부여합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAdminUserAssumeRole", "Effect": "Allow", "Principal": {"AWS": " arn:aws:iam::111122223333:user/AdminUser"}, "Action": [ "sts:AssumeRole", "sts:SetSourceIdentity" ], "Condition": { "StringEquals": {"sts:SourceIdentity": "DiegoRamirez"} } } ] }

소스 자격 증명 정보에 대한 자세한 내용은 위임된 역할로 수행한 작업 모니터링 및 제어 섹션을 참조하세요.

sts:TransitiveTagKeys

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

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

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

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

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