AWS STS에서 세션 태그 전달
세션 태그는 AWS STS에서 IAM 역할을 수임하거나 사용자를 페더레이션할 때 전달하는 키 값 페어 속성입니다. AWS STS 또는 자격 증명 공급자(IdP)를 통해 AWS CLI 또는 AWS API를 요청하면 됩니다. AWS STS를 사용하여 임시 보안 자격 증명을 요청하면 세션이 생성됩니다. 세션은 만료되고 액세스 키 페어 및 세션 토큰과 같은 자격 증명을 갖습니다. 세션 자격 증명을 사용하여 후속 요청을 하면 요청 컨텍스트에 aws:PrincipalTag
컨텍스트 키가 포함됩니다. 정책의 Condition
요소에서 aws:PrincipalTag
키를 사용하여 해당 태그를 기반으로 액세스를 허용하거나 거부할 수 있습니다.
임시 자격 증명을 사용하여 요청하면 보안 주체에 태그 세트가 포함될 수 있습니다. 이러한 태그는 다음 소스에서 가져옵니다.
-
세션 태그 - AWS CLI 또는 AWS API를 사용하여 역할을 수임하거나 사용자를 페더레이션할 때 전달되는 태그입니다. 이러한 작업에 대한 자세한 내용은 세션 태그 지정 작업 섹션을 참조하세요.
-
수신 전이적 세션 태그 - 역할 체인의 이전 세션에서 상속되는 태그입니다. 자세한 내용은 이 주제의 후반부에서 세션 태그를 사용하는 역할 체인 섹션을 참조하세요.
-
IAM 태그 - IAM 수임된 역할에 연결된 태그입니다.
주제
세션 태그 지정 작업
AWS STS에서 다음 AWS CLI 또는 AWS API 작업을 사용하여 세션 태그를 전달할 수 있습니다. AWS Management Console 역할 전환 기능을 사용하여 세션 태그를 전달할 수 없습니다.
세션 태그를 전이적으로 설정할 수도 있습니다. 전이적 태그는 역할 체인 동안 지속됩니다. 자세한 내용은 세션 태그를 사용하는 역할 체인 단원을 참조하십시오.
다음 표에서는 세션 태그 전달 방법을 비교합니다.
Operation | 역할을 위임할 수 있는 사용자 | 태그를 전달하는 방법 | 전이적 태그를 설정하는 방법 |
---|---|---|---|
assume-role CLI 또는 AssumeRole API 작업 |
IAM 사용자 또는 세션 | Tags API 파라미터 또는 --tags CLI 옵션 |
TransitiveTagKeys API 파라미터 또는 --transitive-tag-keys CLI 옵션 |
assume-role-with-saml CLI 또는 AssumeRoleWithSAML API 작업 |
SAML 자격 증명 공급자를 사용하여 인증된 모든 사용자 | PrincipalTag SAML 속성 |
TransitiveTagKeys SAML 속성 |
assume-role-with-web-identity CLI 또는 AssumeRoleWithWebIdentity API 작업 |
OIDC 공급자를 사용하여 인증된 모든 사용자 | PrincipalTag OIDC 토큰 |
TransitiveTagKeys OIDC 토큰 |
get-federation-token CLI 또는 GetFederationToken API 작업 |
IAM 사용자 또는 루트 사용자 | Tags API 파라미터 또는 --tags CLI 옵션 |
지원되지 않음 |
다음 조건에서는 세션 태그 지정을 지원하는 작업이 실패할 수 있습니다.
-
50개 이상의 세션 태그를 전달하는 경우
-
세션 태그 키의 일반 텍스트가 128자를 초과하는 경우
-
세션 태그 값의 일반 텍스트가 256자를 초과하는 경우
-
세션 정책의 일반 텍스트 총 크기가 2048자를 초과하는 경우
-
세션 정책과 태그를 합친 총 압축 크기가 너무 큰 경우. 작업이 실패할 경우 오류 메시지에 정책과 태그를 합친 크기가 크기 상한에 얼마나 가까운지가 백분율로 표시됩니다.
세션 태그에 대해 알아야 할 사항
세션 태그를 사용하기 전에 세션 및 태그에 대한 다음 세부 정보를 검토합니다.
-
세션 태그를 사용하는 경우 태그를 전달하는 자격 증명 공급자(IdP)에 연결된 모든 역할의 신뢰 정책에 sts:TagSession 권한이 있어야 합니다. 역할의 신뢰 정책에 이 권한이 없는 경우
AssumeRole
작업이 실패합니다. -
세션을 요청할 때 보안 주체 태그를 세션 태그로 지정할 수 있습니다. 태그는 세션의 자격 증명을 사용하여 생성한 요청에 적용됩니다.
-
세션 태그는 키 값 페어를 사용합니다. 예를 들어, 세션에 연락처 정보를 추가하려면 세션 태그 키
email
및 태그 값johndoe@example.com
을 추가할 수 있습니다. -
세션 태그는IAM 및 AWS STS의 태그 이름 지정 규칙을 따라야 합니다. 이 주제에는 세션 태그에 적용되는 대/소문자 구분 및 제한된 접두사에 대한 정보가 포함되어 있습니다.
-
새 세션 태그는 대소문자에 관계없이 동일한 태그 키의 기존에 맡은 역할 또는 페더레이션 사용자 태그를 재정의합니다.
-
AWS Management Console을 사용하여 세션 태그를 전달할 수는 없습니다.
-
세션 태그는 현재 세션에서만 유효합니다.
-
세션 태그는 역할 체인을 지원합니다. 기본적으로 AWS STS에서는 후속 역할 세션에 태그를 전달하지 않습니다. 그러나 세션 태그를 전이적으로 설정할 수 있습니다. 전이적 태그는 역할 체인 중 유지되고 역할 신뢰 정책 평가 이후 일치하는
ResourceTag
값을 대체합니다. 자세한 내용은 세션 태그를 사용하는 역할 체인 단원을 참조하십시오. -
세션 태그를 사용하여 리소스에 대한 액세스를 제어하거나 후속 세션에 전달할 수 있는 태그를 제어할 수 있습니다. 자세한 내용은 IAM 튜토리얼: ABAC에 SAML 세션 태그 사용 단원을 참조하십시오.
-
AWS CloudTrail 로그에서 세션 태그를 비롯하여 세션의 보안 주체 태그를 볼 수 있습니다. 자세한 내용은 CloudTrail에서 세션 태그 보기 단원을 참조하십시오.
-
각 세션 태그에는 단일 값을 전달해야 합니다. AWS STS에서는 다중 값 세션 태그를 지원하지 않습니다.
-
최대 50개의 세션 태그를 전달할 수 있습니다. AWS 계정의 IAM 리소스 수와 크기는 제한되어 있습니다. 자세한 내용은 IAM 및 AWS STS 할당량 단원을 참조하십시오.
-
AWS 변환은 전달된 세션 정책과 세션 태그를 별도의 제한이 있는 압축된 이진 형식으로 압축합니다. 이 제한을 초과할 경우 AWS CLI 또는 AWS API 오류 메시지에 결합된 정책과 태그가 크기 상한에 얼마나 가까운지가 백분율로 표시됩니다.
세션 태그를 추가하는 데 필요한 권한
API 작업과 일치하는 작업 외에도 정책에는 다음과 같은 권한 전용 작업이 있어야 합니다.
sts:TagSession
중요
세션 태그를 사용하는 경우 자격 증명 공급자(IdP)에 연결된 모든 역할에 대한 역할 신뢰 정책에 sts:TagSession
권한이 있어야 합니다. 이 권한 없이 세션 태그를 전달하는 IdP에 연결된 모든 역할의 경우 AssumeRole
작업이 실패합니다. 각 역할에 대한 역할 신뢰 정책을 업데이트하지 않으려는 경우 세션 태그를 전달하는 데 개별 IdP 인스턴스를 사용할 수 있습니다. 그런 다음 개별 IdP에 연결된 역할에만 sts:TagSession
권한을 추가합니다.
sts:TagSession
작업을 다음 조건 키와 함께 사용할 수 있습니다.
-
aws:PrincipalTag
- 이 키를 사용하여 요청한 보안 주체에 연결된 태그를 정책에서 지정한 태그와 비교합니다. 예를 들어, 요청을 하는 보안 주체에 지정된 태그가 있는 경우에만 보안 주체가 세션 태그를 전달하도록 허용할 수 있습니다. -
aws:RequestTag
- 요청에서 전달된 태그 키 값 페어를 정책에서 지정한 태그 페어와 비교합니다. 예를 들어, 보안 주체가 지정된 세션 태그를 전달할 수는 있지만, 지정된 값만 사용하도록 허용할 수 있습니다. -
aws:ResourceTag
- 정책에서 지정한 태그 키 값 페어를 리소스에 연결된 키 값 페어와 비교합니다. 예를 들어, 보안 주체가 수임하고 있는 역할에 지정된 태그가 포함된 경우에만 보안 주체가 세션 태그를 전달하도록 허용할 수 있습니다. -
aws:TagKeys
- 요청의 태그 키를 정책에서 지정한 키와 비교합니다. 예를 들어, 보안 주체가 지정된 태그 키를 가진 세션 태그만 전달하도록 허용할 수 있습니다. 이 조건 키는 전달할 수 있는 최대 세션 태그 세트를 제한합니다. -
sts:TransitiveTagKeys
- 요청의 전이적 세션 태그 키와 정책에 지정된 전이적 세션 태그 키를 비교합니다. 예를 들어, 보안 주체가 특정 태그만 전이적으로 설정하도록 허용하는 정책을 작성할 수 있습니다. 전이적 태그는 역할 체인 동안 지속됩니다. 자세한 내용은 세션 태그를 사용하는 역할 체인 단원을 참조하십시오.
예를 들어, 다음 역할 신뢰 정책은 test-session-tags
사용자가 정책이 연결된 역할을 수임할 수 있도록 허용합니다. 해당 사용자가 역할을 맡는 경우 AWS CLI 또는 AWS API를 사용하여 세 개의 필수 세션 태그와 필수 외부 ID를 전달해야 합니다. 또한 사용자는 Project
및 Department
태그를 전이적으로 설정하도록 선택할 수 있습니다.
예 세션 태그에 대한 역할 신뢰 정책의 예
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowIamUserAssumeRole", "Effect": "Allow", "Action": "sts:AssumeRole", "Principal": {"AWS": "arn:aws:iam::
123456789012
:user/test-session-tags
"}, "Condition": { "StringLike": { "aws:RequestTag/Project
": "*", "aws:RequestTag/CostCenter
": "*", "aws:RequestTag/Department
": "*" }, "StringEquals": {"sts:ExternalId": "Example987
"} } }, { "Sid": "AllowPassSessionTagsAndTransitive", "Effect": "Allow", "Action": "sts:TagSession", "Principal": {"AWS": "arn:aws:iam::123456789012
:user/test-session-tags
"}, "Condition": { "StringLike": { "aws:RequestTag/Project
": "*", "aws:RequestTag/CostCenter
": "*" }, "StringEquals": { "aws:RequestTag/Department
": [ "Engineering
", "Marketing
" ] }, "ForAllValues:StringEquals": { "sts:TransitiveTagKeys": [ "Project
", "Department
" ] } } } ] }
이 정책이 하는 일은 무엇입니까?
-
AllowIamUserAssumeRole
문은test-session-tags
사용자가 정책이 연결된 역할을 수임할 수 있도록 허용합니다. 해당 사용자가 역할을 맡을 때는 필수 세션 태그 및 외부 ID를 전달해야 합니다.-
이 문의 첫 번째 조건 블록의 경우 사용자가
Project
,CostCenter
및Department
세션 태그를 전달해야 합니다. 이 문에서 태그 값은 중요하지 않으므로 태그 값에 와일드카드(*)를 사용할 수 있습니다. 이 블록의 경우 사용자가 적어도 이 세 개의 세션 태그를 전달해야 하며 그렇지 않으면 작업이 실패합니다. 사용자는 추가 태그를 전달할 수 있습니다. -
두 번째 조건 블록의 경우 사용자가
Example987
값의 외부 ID를 전달해야 합니다.
-
-
AllowPassSessionTagsAndTransitive
문은sts:TagSession
권한 전용 작업을 허용합니다. 이 작업을 허용해야 사용자가 세션 태그를 전달할 수 있습니다. 정책에 두 번째 문은 없고 첫 번째 문만 포함되어 있는 경우 사용자는 역할을 맡을 수 없습니다.-
이 문의 첫 번째 조건 블록은 사용자가
CostCenter
및Project
세션 태그에 대한 값을 전달하도록 허용합니다. 정책의 태그 값에 와일드카드(*)를 사용하여 이 작업을 수행하려면 StringLike 조건 연산자를 사용해야 합니다. -
두 번째 조건 블록은 사용자가
Department
세션 태그의Engineering
또는Marketing
값만 전달하도록 허용합니다. -
세 번째 조건 블록은 전이적으로 설정할 수 있는 최대 태그 세트를 나열합니다. 사용자는 하위 세트를 설정하거나 태그를 전이적으로 설정하지 않도록 선택할 수 있습니다. 그러나 추가 태그를 전이적으로 설정할 수는 없습니다.
"Null":{"sts:TransitiveTagKeys":"false"}
를 포함하는 다른 조건 블록을 추가하여 태그 중 하나 이상을 전이적으로 설정하도록 요구할 수 있습니다.
-
AssumeRole을 사용하여 세션 태그 전달
AssumeRole
작업은 AWS 리소스에 액세스하는 데 사용할 수 있는 임시 자격 증명 세트를 반환합니다. IAM 사용자 또는 역할 자격 증명을 사용하여 AssumeRole
을 호출할 수 있습니다. 역할을 맡는 동안 세션 태그를 전달하려면 --tags
AWS CLI 옵션 또는 Tags
AWS API 파라미터를 사용합니다.
태그를 전이적으로 설정하려면 --transitive-tag-keys
AWS CLI 옵션 또는 TransitiveTagKeys
AWS API 파라미터를 사용합니다. 전이적 태그는 역할 체인 동안 지속됩니다. 자세한 내용은 세션 태그를 사용하는 역할 체인 단원을 참조하십시오.
다음 예제에서는 AssumeRole
을 사용하는 샘플 요청을 보여 줍니다. 이 예제에서는 my-role-example
역할을 맡을 때 my-session
이라는 세션을 생성합니다. 세션 태그 키 값 페어 Project
= Automation
, CostCenter
= 12345
및 Department
= Engineering
을 추가합니다. 또한 해당 키를 지정하여 Project
및 Department
태그를 전이적으로 설정합니다. 각 세션 태그에는 단일 값을 전달해야 합니다. AWS STS에서는 다중 값 세션 태그를 지원하지 않습니다.
예 AssumeRole CLI 요청의 예
aws sts assume-role \ --role-arn arn:aws:iam::123456789012:role/my-role-example \ --role-session-name my-session \ --tags Key=Project,Value=Automation Key=CostCenter,Value=12345 Key=Department,Value=Engineering \ --transitive-tag-keys Project Department \ --external-id Example987
AssumeRoleWithSAML을 사용하여 세션 태그 전달
AssumeRoleWithSAML
작업은 SAML 기반 페더레이션을 사용하여 인증됩니다. 이 작업은 AWS 리소스에 액세스하는 데 사용할 수 있는 임시 자격 증명 세트를 반환합니다. AWS Management Console 액세스를 위해 SAML 기반 연동을 사용하는 방법에 대한 자세한 내용은 SAML 2.0 페더레이션 사용자가 AWS Management Console에 액세스할 수 있게 하기 섹션을 참조하세요. AWS CLI 또는 AWS API 액세스에 대한 자세한 내용은 SAML 2.0 연동 섹션을 참조하세요. Active Directory 사용자를 위한 SAML 페더레이션을 구성하는 방법에 관한 자습서는 AWS 보안 블로그에서 Active Directory Federation Services(ADFS)를 사용한 AWS 페더레이션 인증
관리자는 회사 디렉터리의 멤버가 AWS STS AssumeRoleWithSAML
작업을 사용하여 AWS로 연동하도록 허용할 수 있습니다. 이렇게 하려면 다음 작업을 완료해야 합니다.
AWS에는 자격 증명 솔루션에 세션 태그에 대한 인증된 엔드 투 엔드 환경이 있는 파트너가 포함되어 있습니다. 이러한 자격 증명 공급자를 사용하여 세션 태그를 구성하는 방법은 서드 파티 SAML 솔루션 공급자를 AWS와 통합 섹션을 참조하세요.
SAML 속성을 세션 태그로 전달하려면 Name
속성이 https://aws.amazon.com/SAML/Attributes/PrincipalTag:
로 설정된 {TagKey}
Attribute
요소를 포함합니다. AttributeValue
요소를 사용하여 태그 값을 지정합니다. 각 세션 태그마다 별도의 Attribute
요소를 포함합니다.
예를 들어, 다음 자격 증명 속성을 세션 태그로 전달한다고 가정합니다.
-
Project:Automation
-
CostCenter:12345
-
Department:Engineering
이러한 속성을 전달하려면 SAML 어설션에 다음 요소를 포함합니다.
예 SAML 어설션의 코드 조각 예
<Attribute Name="https://aws.amazon.com/SAML/Attributes/PrincipalTag:Project"> <AttributeValue>Automation</AttributeValue> </Attribute> <Attribute Name="https://aws.amazon.com/SAML/Attributes/PrincipalTag:CostCenter"> <AttributeValue>12345</AttributeValue> </Attribute> <Attribute Name="https://aws.amazon.com/SAML/Attributes/PrincipalTag:Department"> <AttributeValue>Engineering</AttributeValue> </Attribute>
앞의 태그를 전이적으로 설정하려면 Name
속성이 https://aws.amazon.com/SAML/Attributes/TransitiveTagKeys
로 설정된 다른 Attribute
요소를 포함합니다. 전이적 태그는 역할 체인 동안 지속됩니다. 자세한 내용은 세션 태그를 사용하는 역할 체인 섹션을 참조하세요.
Project
및 Department
태그를 전이적으로 설정하려면 다음과 같은 다중 값 속성을 사용합니다.
예 SAML 어설션의 코드 조각 예
<Attribute Name="https://aws.amazon.com/SAML/Attributes/TransitiveTagKeys"> <AttributeValue>Project</AttributeValue> <AttributeValue>Department</AttributeValue> </Attribute>
AssumeRoleWithWebIdentity를 사용하여 세션 태그 전달
OIDC(OpenID Connect) 호환 페더레이션을 사용하여 AssumeRoleWithWebIdentity
작업을 인증합니다. 이 작업은 AWS 리소스에 액세스하는 데 사용할 수 있는 임시 자격 증명 세트를 반환합니다. AWS Management Console 액세스를 위해 웹 아이덴티티 페더레이션을 사용하는 방법에 대한 자세한 내용은 OIDC 페더레이션 섹션을 참조하세요.
OIDC(OpenID Connect)에서 세션 태그를 전달하려면 AssumeRoleWithWebIdentity
요청을 제출할 때 JSON 웹 토큰(JWT)에 세션 태그를 포함해야 합니다. OIDC 토큰 및 클레임에 대한 자세한 내용은 Amazon Cognito 개발자 안내서의 사용자 풀과 함께 토큰 사용을 참조하세요.
AWS는 JWT에 세션 태그를 포함하기 위한 두 가지 클레임 형식을 지원합니다.
-
중첩된 클레임 형식
-
평면화된 클레임 형식
중첩된 클레임 형식
중첩된 클레임 형식은 JWT의 https://aws.amazon.com/tags
네임스페이스 내 구조를 사용합니다. 이 형식에서,
-
위탁자 태그는
principal_tags
키 아래에 중첩된 객체로 표시됩니다. -
각 위탁자 태그는 배열에 하나 이상의 값을 가질 수 있습니다.
-
전이적 태그 키는
transitive_tag_keys
키 아래에 배열로 표시됩니다. -
principal_tags
와transitive_tag_keys
는 둘 다https://aws.amazon.com/tags
네임스페이스 아래에 중첩됩니다.
다음의 예제는 중첩된 객체 형식을 사용하는 디코딩된 JWT를 보여줍니다.
예 중첩된 클레임 형식을 사용하는 디코딩된 JSON 웹 토큰의 예
{ "sub": "johndoe", "aud": "ac_oic_client", "jti": "ZYUCeRMQVtqHypVPWAN3VB", "iss": "https://xyz.com", "iat": 1566583294, "exp": 1566583354, "auth_time": 1566583292, "https://aws.amazon.com/tags": { "principal_tags": { "Project": ["Automation"], "CostCenter": ["987654"], "Department": ["Engineering"] }, "transitive_tag_keys": [ "Project", "CostCenter" ] } }
평면화된 클레임 형식
평면화된 클레임 형식은 Microsoft Entra ID와 같이 JWT 클레임에서 중첩된 객체를 지원하지 않는 ID 제공업체와 호환됩니다. 이 형식에서,
-
위탁자 태그는
https://aws.amazon.com/tags/principal_tags/
접두사가 지정된 별도의 클레임으로 표시됩니다. -
각 위탁자 태그는 단일 문자열 값입니다.
-
전이적 태그 키는 단일 클레임에서
https://aws.amazon.com/tags/transitive_tag_keys
접두사가 지정된 문자열 배열로 표시됩니다.
이제 플랫 클레임 형식을 사용하여 동일한 정보가 어떻게 표현되는지 살펴보겠습니다.
예 평면화된 클레임 형식을 사용하는 디코딩된 JSON 웹 토큰의 예
{ "sub": "johndoe", "aud": "ac_oic_client", "jti": "ZYUCeRMQVtqHypVPWAN3VB", "iss": "https://xyz.com", "iat": 1566583294, "exp": 1566583354, "auth_time": 1566583292, "https://aws.amazon.com/tags/principal_tags/Project": "Automation", "https://aws.amazon.com/tags/principal_tags/CostCenter": "987654", "https://aws.amazon.com/tags/principal_tags/Department": "Engineering", "https://aws.amazon.com/tags/transitive_tag_keys": [ "Project", "CostCenter" ] }
디코딩된 JWT 예제는 둘 다 Project
, CostCenter
및 Department
세션 태그를 사용한 AssumeRoleWithWebIdentity
직접적인 호출을 보여줍니다. 두 토큰 모두 Project
및 CostCenter
태그를 전이적 태그로 설정합니다. 전이적 태그는 역할 체인 동안 지속됩니다. 자세한 내용은 세션 태그를 사용하는 역할 체인 단원을 참조하십시오.
평면화된 클레임 형식은 중첩된 클레임 형식과 동일한 결과를 얻지만 태그에 평면화된 구조를 사용합니다. 이를 통해 JWT 클레임에서 중첩된 JSON 객체가 지원되지 않는 환경에서 세션 태그를 포함할 수 있습니다. 두 형식 중 하나를 사용할 때는 ID 제공업체가 적절한 클레임 구조의 토큰을 발행하도록 구성되어 있는지 확인하세요. AWS는 두 클레임 형식을 모두 지원하므로 ID 제공업체의 특정 요구 사항에 가장 적합한 형식을 선택할 수 있습니다.
GetFederationToken을 사용하여 세션 태그 전달
GetFederationToken
을 사용하면 사용자를 페더레이션할 수 있습니다. 이 작업은 AWS 리소스에 액세스하는 데 사용할 수 있는 임시 자격 증명 세트를 반환합니다. 페더레이션 사용자 세션에 태그를 추가하려면 --tags
AWS CLI 옵션 또는 Tags
AWS API 파라미터를 사용합니다. GetFederationToken
을 사용할 경우 세션 태그를 전이적으로 설정할 수 없습니다. 임시 자격 증명을 사용하여 역할을 수임할 수 없기 때문입니다. 이 경우 역할 체인을 사용할 수 없습니다.
다음 예제에서는 GetFederationToken
을 사용하는 샘플 요청을 보여 줍니다. 이 예제에서는 토큰을 요청할 때 my-fed-user
라는 세션을 생성합니다. 세션 태그 키 값 페어 Project
= Automation
및 Department
= Engineering
을 추가합니다.
예 GetFederationToken CLI 요청의 예
aws sts get-federation-token \ --name my-fed-user \ --tags key=Project,value=Automation key=Department,value=Engineering
GetFederationToken
작업에서 반환되는 임시 자격 증명을 사용하는 경우 세션의 보안 주체 태그에 사용자의 태그와 전달된 세션 태그가 포함됩니다.
세션 태그를 사용하는 역할 체인
한 역할을 맡은 다음 임시 자격 증명을 사용하여 다른 역할을 맡을 수 있습니다. 이러한 작업을 세션 간에 계속할 수 있습니다. 이를 역할 체인이라고 합니다. 역할을 맡는 동안 세션 태그를 전달하면 키를 전이적으로 설정할 수 있습니다. 이렇게 하면 해당 세션 태그가 역할 체인의 후속 세션에 전달됩니다. 역할 태그를 전이적으로 설정할 수 없습니다. 이러한 태그를 후속 세션에 전달하려면 세션 태그로 지정합니다.
참고
전이적 태그는 역할 체인 중 유지되고 역할 신뢰 정책 평가 이후 일치하는 ResourceTag
값을 대체합니다.
다음 예제에서는 AWS STS에서 세션 태그, 전이적 태그 및 역할 태그를 역할 체인의 후속 세션에 전달하는 방식을 보여줍니다.
이 역할 체인 시나리오 예제에서는 AWS CLI에서 IAM 사용자 액세스 키를 사용하여 Role1
이라는 역할을 수임합니다. 그런 다음 결과 세션 자격 증명을 사용하여 Role2
라는 두 번째 역할을 맡습니다. 그런 다음 두 번째 세션 자격 증명을 사용하여 Role3
라는 세 번째 역할을 맡을 수 있습니다. 이러한 요청은 세 가지 개별 작업으로 발생합니다. IAM에서는 각 역할은 이미 태깅되어 있습니다. 그리고 각 요청 중에 추가 세션 태그를 전달합니다.
역할을 체인할 때 이전 세션의 태그가 이후 세션에서도 유지되도록 할 수 있습니다. assume-role
CLI 명령을 사용하여 이 작업을 수행하려면 태그를 세션 태그로 전달하고 전이적으로 설정해야 합니다. 태그 Star
= 1
을 세션 태그로 전달합니다. 또한 이 명령은 태그 Heart
= 1
을 역할에 연결하고 세션을 사용할 때 보안 주체 태그로 적용합니다. 그러나 Heart
= 1
태그가 두 번째 또는 세 번째 세션에 자동으로 전달되도록 할 수도 있습니다. 이를 수행하려면 수동으로 세션 태그로 포함합니다. 결과 세션 보안 주체 태그에는 이러한 두 태그가 모두 포함되며 전이적으로 설정됩니다.
다음 AWS CLI 명령을 사용하여 이 요청을 수행합니다.
예 AssumeRole CLI 요청의 예
aws sts assume-role \ --role-arn arn:aws:iam::123456789012:role/Role1 \ --role-session-name Session1 \ --tags Key=Star,Value=1 Key=Heart,Value=1 \ --transitive-tag-keys Star Heart
그런 다음 해당 세션에 대한 자격 증명을 사용하여 Role2
를 맡습니다. 이 명령은 태그 Sun
= 2
를 두 번째 역할에 연결하고 두 번째 세션을 사용할 때 보안 주체 태그로 적용합니다. Heart
및 Star
태그는 첫 번째 세션의 전이적 세션 태그를 상속합니다. 두 번째 세션의 결과 보안 주체 태그는 Heart
= 1
, Star
= 1
및 Sun
= 2
입니다. Heart
및 Star
는 계속 전이적으로 유지됩니다. Role2
에 연결된 Sun
태그는 세션 태그가 아니므로 전이적으로 표시되지 않습니다. 향후 세션에서는 이 태그를 상속하지 않습니다.
다음 AWS CLI 명령을 사용하여 이 두 번째 요청을 수행합니다.
예 AssumeRole CLI 요청의 예
aws sts assume-role \ --role-arn arn:aws:iam::123456789012:role/Role2 \ --role-session-name Session2
그런 다음 두 번째 세션 자격 증명을 사용하여 Role3
를 맡습니다. 세 번째 세션의 보안 주체 태그는 새 세션 태그, 상속된 전이적 세션 태그 및 역할 태그에서 가져옵니다. 두 번째 세션의 Heart
= 1
및 Star
= 1
태그는 첫 번째 세션의 전이적 세션 태그에서 상속됩니다. Sun
= 2
세션 태그를 전달하려고 하면 작업이 실패합니다. 상속된 Star
= 1 세션 태그는 역할의 Star
= 3
태그를 재정의합니다. 역할 체인에서 전이적 태그의 값은 역할 신뢰 정책 평가 후에 ResourceTag
값과 일치하는 역할을 재정의합니다. 이 예제에서는 Role3
이 Star
를 역할 신뢰 정책에서 ResourceTag
로 사용하는 경우 ResourceTag
값을 호출 역할 세션의 전이 태그 값으로 설정합니다. 역할의 Lightning
태그는 세 번째 세션에도 적용되며 전이적으로 설정되지 않습니다.
다음 AWS CLI 명령을 사용하여 세 번째 요청을 수행합니다.
예 AssumeRole CLI 요청의 예
aws sts assume-role \ --role-arn arn:aws:iam::123456789012:role/Role3 \ --role-session-name Session3
ABAC에 세션 태그 사용
속성 기반 액세스 제어(ABAC)는 태그 속성을 기반으로 권한을 정의하는 권한 부여 전략을 사용합니다.
회사에서 OIDC 또는 SAML 기반 자격 증명 공급자(IdP)를 사용하여 사용자 자격 증명을 관리하는 경우 세션 태그를 AWS에 전달하도록 어설션을 구성할 수 있습니다. 예를 들어 회사 사용자 자격 증명을 사용하면 직원이 AWS로 페더레이션할 때 AWS는 해당 속성을 결과 보안 주체에 적용합니다. 그런 다음 ABAC를 사용하여 이러한 속성에 따라 권한을 허용하거나 거부할 수 있습니다. 자세한 내용은 IAM 튜토리얼: ABAC에 SAML 세션 태그 사용 섹션을 참조하세요.
ABAC에 IAM Identity Center를 사용하는 방법에 대한 자세한 내용은 AWS IAM Identity Center 사용 설명서의 액세스 제어를 위한 속성을 참조하세요.
CloudTrail에서 세션 태그 보기
AWS CloudTrail을 사용하여 역할을 수임하거나 사용자를 페더레이션하는 데 사용되는 요청을 볼 수 있습니다. CloudTrail 로그 파일에는 수임한 역할 또는 페더레이션 사용자 세션의 보안 주체 태그에 대한 정보가 포함됩니다. 자세한 내용은 AWS CloudTrail을 사용하여 IAM 및 AWS STS API 호출 로깅 섹션을 참조하세요.
예를 들어, AWS STS AssumeRoleWithSAML
요청을 하고 세션 태그를 전달하고 해당 태그를 전이적으로 설정한다고 가정합니다. CloudTrail 로그에서 다음 정보를 찾을 수 있습니다.
예 AssumeRoleWithSAML CloudTrail 로그의 예
"requestParameters": { "sAMLAssertionID": "_c0046cEXAMPLEb9d4b8eEXAMPLE2619aEXAMPLE", "roleSessionName": "MyRoleSessionName", "principalTags": { "CostCenter": "987654", "Project": "Unicorn" }, "transitiveTagKeys": [ "CostCenter", "Project" ], "durationSeconds": 3600, "roleArn": "arn:aws:iam::123456789012:role/SAMLTestRoleShibboleth", "principalArn": "arn:aws:iam::123456789012:saml-provider/Shibboleth" },
다음 CloudTrail 로그 예제에서 세션 태그를 사용하는 이벤트를 볼 수 있습니다.