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 조건 컨텍스트 키에 어떻게 매핑되는지 확인합니다.
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 공급자의 표시 이름을 기준으로 하는 해시 값입니다. 이 값은 다음 값을 순서대로 연결하며 '/' 문자로 구분합니다.
-
Issuer
응답 값(saml:iss
) -
AWS
계정 ID -
IAM에서 SAML 공급자의 표시 이름(ARN의 마지막 부분)
계정 ID와 SAML 공급자 표시 이름의 연결을 IAM 정책에서
saml:doc
키로 사용할 수 있습니다. 자세한 내용은 SAML 기반 페더레이션에서 사용자를 고유하게 식별 단원을 참조하십시오. -
- saml:organizationStatus[]
-
문자열 연산자를 사용합니다.
이 키는
organizationStatus
속성입니다. - saml:primaryGroupSID[]
-
문자열 연산자를 사용합니다.
primaryGroupSID
속성입니다. - saml:sub
-
문자열 연산자를 사용합니다.
이것은 클레임의 주체로서 여기에는 조직 내 사용자 개개인을 식별할 수 있는 고유 값이 포함됩니다(예:
_cbb88bf52c2510eabe00c1642d4643f41430fe25e3
). - saml:sub_type
-
문자열 연산자를 사용합니다.
이 키는
persistent
,transient
값을 갖거나 SAML 어설션에서 사용되는Format
및Subject
요소의 전체NameID
URI로 구성될 수 있습니다.persistent
의 값은saml:sub
의 값이 세션 간 사용자에서도 동일하다는 것을 나타냅니다. 값이transient
인 경우 각 세션마다 사용자의saml:sub
값이 다릅니다.NameID
요소의Format
속성에 대한 자세한 내용은 인증 응답에 대한 SAML 어설션 구성 섹션을 참조하세요. - saml:surname[]
-
문자열 연산자를 사용합니다.
surnameuid
속성입니다. - saml:uid[]
-
문자열 연산자를 사용합니다.
uid
속성입니다. - saml:x500UniqueIdentifier[]
-
문자열 연산자를 사용합니다.
이 키는
x500UniqueIdentifier
속성입니다.
eduPerson
및 eduOrg
속성에 관한 일반 정보는 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-key
및context-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
AssumeRole
API 작업을 사용해 역할을 수임하는 동안 보안 주체가 소스 자격 증명을 제공할 때 이 키가 요청에 표시됩니다.역할 신뢰 정책에서 이 키를 사용하여 사용자가 역할을 수임할 때 특정 소스 자격 증명을 설정하도록 요구할 수 있습니다. 예를 들어 인력이나 페더레이션 자격 증명에게 소스 자격 증명에 대한 값을 지정하도록 요구할 수 있습니다. 자격 증명 공급자(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
컨텍스트 키가 포함됩니다. 이 키에는 세션 태그, 전이적 세션 태그 및 역할 태그 목록이 포함됩니다. 전이적 세션 태그를 사용하면 세션 자격 증명을 사용하여 다른 역할을 맡은 경우 모든 후속 세션에서 유지됩니다. 한 역할에서 다른 역할을 맡는 것을 역할 체인이라고 합니다.정책에서 이 조건 키를 사용하여 역할을 맡거나 사용자를 연동할 때 특정 세션 태그를 전이적으로 설정하도록 요구할 수 있습니다.