IAM 튜토리얼: ABAC에 SAML 세션 태그 사용 - AWS Identity and Access Management

IAM 튜토리얼: ABAC에 SAML 세션 태그 사용

ABAC(속성 기반 액세스 제어)는 속성을 기반으로 권한을 정의하는 권한 부여 전략입니다. AWS에서는 이러한 속성을 태그라고 합니다. IAM 엔터티(사용자 또는 역할)와 AWS 리소스에 태그를 연결할 수 있습니다. 엔터티를 사용하여 AWS에 요청하면 해당 엔터티가 보안 주체가 되고 해당 보안 주체에 태그가 포함됩니다.

역할을 맡거나 사용자를 연동할 때 세션 태그를 전달할 수도 있습니다. 그런 다음 태그 조건 키를 사용하여 해당 태그를 기반으로 보안 주체에 권한을 부여하는 정책을 정의할 수 있습니다. 태그를 사용하여 AWS 리소스에 대한 액세스를 제어하면 AWS 정책에 대한 변경 사항이 줄어들면서 팀과 리소스가 성장할 수 있습니다. ABAC 정책은 각 개별 리소스를 나열해야 하는 기존 AWS 정책보다 유연합니다. ABAC에 대한 자세한 내용 및 기존 정책과 비교할 때의 이점은 AWS용 ABAC란 무엇입니까? 단원을 참조하십시오.

회사에서 SAML 기반 자격 증명 공급자(IdP)를 사용하여 회사 사용자 자격 증명을 관리하는 경우 AWS에서 SAML 속성을 사용하여 세밀한 액세스 제어를 수행할 수 있습니다. 속성에는 비용 센터 식별자, 사용자 이메일 주소, 부서 분류 및 프로젝트 할당이 포함될 수 있습니다. 이러한 속성을 세션 태그로 전달하면 이러한 세션 태그를 기반으로 AWS에 대한 액세스를 제어할 수 있습니다.

세션 보안 주체에 SAML 속성을 전달하여 ABAC 자습서를 완료하려면 이 주제에 포함된 변경 사항을 사용하여 IAM 튜토리얼: 태그를 기반으로 AWS 리소스에 액세스할 수 있는 권한 정의의 작업을 완료합니다.

사전 조건

ABAC에 대해 SAML 세션 태그를 사용하는 단계를 수행하려면 다음 사항이 이미 있어야 합니다.

  • 특정 속성을 가진 테스트 사용자를 생성할 수 있는 SAML 기반 IdP에 대한 액세스

  • 관리 권한이 있는 사용자로 로그인하는 기능.

  • AWS Management Console에서 IAM 사용자, 역할 및 정책을 생성 및 편집해 본 경험. 그러나 IAM 관리 프로세스를 기억해야 하는 경우를 위해 ABAC 튜토리얼에서는 단계별 지침을 볼 수 있는 링크를 제공합니다.

  • IAM에서 SAML 기반 IdP를 설정해 본 경험. 자세한 내용과 자세한 IAM 설명서에 대한 링크를 보려면 AssumeRoleWithSAML을 사용하여 세션 태그 전달 섹션을 참조하세요.

1단계: 테스트 사용자 생성

1단계: 테스트 사용자 생성의 지침을 건너뜁니다. 자격 증명은 공급자에 정의되어 있으므로 직원에 대한 IAM 사용자를 추가할 필요는 없습니다.

2단계: ABAC 정책 생성

2단계: ABAC 정책 생성의 지침에 따라 IAM에서 지정된 관리형 정책을 생성합니다.

3단계: SAML 역할 생성 및 구성

SAML용 ABAC 자습서를 사용하는 경우 역할을 생성하고, SAML IdP를 구성하고, AWS Management Console 액세스를 활성화하기 위한 추가 단계를 수행해야 합니다. 자세한 내용은 3단계: 역할 생성 섹션을 참조하세요.

3A단계: SAML 역할 생성

SAML 자격 증명 공급자 및 1단계에서 생성한 test-session-tags 사용자를 신뢰하는 단일 역할을 생성합니다. ABAC 자습서에서는 역할 태그가 서로 다른 별도의 역할을 사용합니다. SAML IdP에서 세션 태그를 전달하기 때문에 역할은 하나만 필요합니다. SAML 기반 역할을 생성하는 방법은 SAML 2.0 페더레이션을 위한 역할 생성(콘솔) 단원을 참조하십시오.

역할 이름을 access-session-tags로 지정합니다. 역할에 access-same-project-team 권한 정책을 연결합니다. 다음 정책을 사용하도록 역할 신뢰 정책을 편집합니다. 역할의 신뢰 관계를 편집하는 방법에 대한 자세한 지침은 역할 수정(콘솔) 단원을 참조하십시오.

다음 역할 신뢰 정책은 SAML 자격 증명 공급자 및 test-session-tags 사용자가 역할을 맡을 수 있도록 허용합니다. 역할을 맡을 때는 세 개의 지정된 세션 태그를 전달해야 합니다. 이 sts:TagSession 작업은 세션 태그 전달을 허용하는 데 필요합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowSamlIdentityAssumeRole", "Effect": "Allow", "Action": [ "sts:AssumeRoleWithSAML", "sts:TagSession" ], "Principal": {"Federated":"arn:aws:iam::123456789012:saml-provider/ExampleCorpProvider"}, "Condition": { "StringLike": { "aws:RequestTag/cost-center": "*", "aws:RequestTag/access-project": "*", "aws:RequestTag/access-team": [ "eng", "qas" ] }, "StringEquals": {"SAML:aud": "https://signin.aws.amazon.com/saml"} } } ] }

AllowSamlIdentityAssumeRole 문을 사용하면 엔지니어링 및 품질 보증 팀의 멤버가 Example Corporation IdP에서 AWS로 연동될 때 이 역할을 맡을 수 있습니다. ExampleCorpProvider SAML 공급자는 IAM에 정의되어 있습니다. 관리자가 세 개의 필수 세션 태그를 전달하도록 SAML 어설션을 이미 설정했습니다. 어설션에서 추가 태그를 전달할 수 있지만 이 세 가지 태그는 반드시 있어야 합니다. 자격 증명의 속성은 cost-centeraccess-project 태그에 대한 값을 가질 수 있습니다. 그러나 자격 증명이 엔지니어링 또는 품질 보증 팀에 속한다는 것을 나타내려면 access-team 속성 값이 eng 또는 qas와 일치해야 합니다.

3B단계: SAML IdP 구성

cost-center, access-projectaccess-team 속성을 세션 태그로 전달하도록 SAML IdP를 구성합니다. 자세한 내용은 AssumeRoleWithSAML을 사용하여 세션 태그 전달 섹션을 참조하세요.

이러한 속성을 세션 태그로 전달하려면 SAML 어설션에 다음 요소를 포함합니다.

<Attribute Name="https://aws.amazon.com/SAML/Attributes/PrincipalTag:cost-center"> <AttributeValue>987654</AttributeValue> </Attribute> <Attribute Name="https://aws.amazon.com/SAML/Attributes/PrincipalTag:access-project"> <AttributeValue>peg</AttributeValue> </Attribute> <Attribute Name="https://aws.amazon.com/SAML/Attributes/PrincipalTag:access-team"> <AttributeValue>eng</AttributeValue> </Attribute>

3C 단계: 콘솔 액세스 활성화

페더레이션 SAML 사용자에 대해 콘솔 액세스를 활성화합니다. 자세한 내용은 SAML 2.0 페더레이션 사용자가 AWS Management Console에 액세스할 수 있게 하기 섹션을 참조하세요.

4단계: 비밀 생성 테스트

access-session-tags 역할을 사용하여 AWS Management Console에 연동합니다. 자세한 내용은 SAML 2.0 페더레이션 사용자가 AWS Management Console에 액세스할 수 있게 하기 섹션을 참조하세요. 그런 다음 4단계: 비밀 생성 테스트의 지침에 따라 비밀을 생성합니다. 다양한 SAML 자격 증명을 속성과 함께 사용하여 ABAC 자습서에 표시된 태그와 일치시킵니다. 자세한 내용은 4단계: 비밀 생성 테스트 섹션을 참조하세요.

5단계: 비밀 보기 테스트

5단계: 비밀 보기 테스트 단원의 지침에 따라 이전 단계에서 생성한 비밀을 확인합니다. 다양한 SAML 자격 증명을 속성과 함께 사용하여 ABAC 자습서에 표시된 태그와 일치시킵니다.

6단계: 테스트 확장성

6단계: 테스트 확장성 단원의 지침에 따라 확장성을 테스트합니다. 다음 속성을 사용하여 SAML 기반 IdP에 새 자격 증명을 추가하면 됩니다.

  • cost-center = 101010

  • access-project = cen

  • access-team = eng

7단계: 비밀 업데이트 및 삭제 테스트

7단계: 비밀 업데이트 및 삭제 테스트 단원의 지침에 따라 비밀을 업데이트 및 삭제합니다. 다양한 SAML 자격 증명을 속성과 함께 사용하여 ABAC 자습서에 표시된 태그와 일치시킵니다.

중요

요금이 청구되지 않도록 생성한 모든 비밀을 삭제합니다. Secrets Manager의 요금에 대한 자세한 내용은 AWS Secrets Manager 요금을 참조하세요.

요약

이제 권한 관리를 위해 SAML 세션 태그 및 리소스 태그를 사용하는 데 필요한 모든 단계를 성공적으로 완료했습니다.

참고

특정 조건에서만 작업을 허용하는 정책을 추가했습니다. 더 광범위한 권한을 가진 사용자 또는 역할에 다른 정책을 적용하는 경우, 작업에서 태그 지정이 필요하도록 제한을 받지 않을 수 있습니다. 예를 들어 AdministratorAccess AWS 관리형 정책을 사용하여 사용자에게 전체 관리 권한을 부여하는 경우, 이러한 정책은 해당 액세스를 제한하지 않습니다. 여러 정책이 적용될 때 권한이 결정되는 방법에 대한 자세한 내용은 계정 내에서 요청 허용 여부 결정 단원을 참조하십시오.