

# SAML 2.0 연동
<a name="id_roles_providers_saml"></a>

AWS는 많은 자격 증명 공급자(IdP)가 사용하는 개방형 표준인 [SAML 2.0(Security Assertion Markup Language 2.0)](https://wiki.oasis-open.org/security)이라는 아이덴티티 페더레이션을 지원합니다. 이 기능은 페더레이션 Single Sign-On(SSO)을 활성화하므로 조직의 모든 구성원에 대해 IAM 사용자를 생성하지 않아도 사용자가 AWS Management Console에 로그인하거나 AWS API 작업을 호출할 수 있습니다. SAML을 사용함으로써 AWS로 연동을 구성하는 과정을 단순화할 수 있는데, 이는 [사용자 지정 자격 증명 프록시 코드](https://docs.aws.amazon.com/STS/latest/UsingSTS/CreatingFedTokens.html)를 작성하는 대신 IdP의 서비스를 사용할 수 있기 때문입니다.

**참고**  
IAM SAML ID 페더레이션은 SAML 기반 페더레이션 ID 제공업체(IdP)의 암호화된 SAML 응답을 지원합니다. IAM Identity Center와 Amazon Cognito는 IAM SAML 자격 증명 공급자의 암호화된 SAML 어설션을 지원하지 않습니다.  
Amazon Cognito 사용자 풀을 사용하여 Amazon Cognito 자격 증명 풀 페더레이션에 암호화된 SAML 어설션 지원을 간접적으로 추가할 수 있습니다. 사용자 풀에는 IAM SAML 페더레이션과 독립적이며 [SAML 서명 및 암호화](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-SAML-signing-encryption.html)를 지원하는 SAML 페더레이션이 있습니다. 이 기능이 자격 증명 풀로 직접 확장되지는 않지만 사용자 풀은 자격 증명 풀의 IdP가 될 수 있습니다. 자격 증명 풀에서 SAML 암호화를 사용하려면 암호화가 적용된 SAML 공급자를 자격 증명 풀의 IdP인 사용자 풀에 추가하세요.  
SAML 공급자는 사용자 풀이 제공하는 키를 사용하여 SAML 어설션을 암호화할 수 있어야 합니다. 사용자 풀은 IAM이 제공한 인증서로 암호화된 어설션을 수락하지 않습니다.

IAM 페더레이션은 다음과 같은 사용 사례를 지원합니다.
+ [**조직의 사용자 또는 애플리케이션이 AWS API 작업을 호출할 수 있도록 허용하는 페더레이션 액세스**](#CreatingSAML-configuring). 이 사용 사례는 다음 섹션에서 설명합니다. 조직에서 생성되는 SAML 어설션(인증 응답의 일부)을 사용해 임시 보안 자격 증명을 얻습니다. 이 시나리오는 [임시 보안 자격 증명 요청](id_credentials_temp_request.md) 및 [OIDC 페더레이션](id_roles_providers_oidc.md)에 기술된 것과 같이 IAM이 지원하는 다른 페더레이션 시나리오와 유사합니다. 그러나 조직의 SAML 2.0 기반 IdP가 인증 수행 및 권한 부여 확인을 위한 세부 사항을 런타임에 대부분 처리합니다.
+ [**조직에서 AWS Management Console로 이루어지는 웹 기반 SSO(Single Sign-On)**](id_roles_providers_enable-console-saml.md). 사용자가 SAML 2.0 호환 IdP에서 호스팅하는 조직의 포털에 로그인하고 AWS로 이동하는 옵션을 선택하면 추가 로그인 정보를 제공하지 않고도 콘솔에 리디렉션될 수 있습니다. 타사 SAML IdP를 사용하여 콘솔에 SSO 액세스하거나 사용자 지정 IdP를 만들어 외부 사용자의 콘솔 액세스를 허용할 수 있습니다. 사용자 지정 IdP를 구축하는 방법에 대한 자세한 정보는 [AWS 콘솔에 대한 사용자 지정 ID 브로커 액세스 활성화](id_roles_providers_enable-console-custom-url.md)를 참조하세요.

**Topics**
+ [AWS에 대한 API 액세스를 위해 SAML 기반 페더레이션 사용](#CreatingSAML-configuring)
+ [SAML 2.0 기반 페더레이션 구성 개요](#CreatingSAML-configuring-IdP)
+ [AWS 리소스에 대한 SAML 페더레이션 액세스를 허용하는 역할 개요](#CreatingSAML-configuring-role)
+ [SAML 기반 페더레이션에서 사용자를 고유하게 식별](#CreatingSAML-userid)
+ [IAM에서 SAML ID 공급자 생성](id_roles_providers_create_saml.md)
+ [신뢰 당사자 신뢰 및 클레임 추가를 통해 SAML 2.0 IdP 구성](id_roles_providers_create_saml_relying-party.md)
+ [서드 파티 SAML 솔루션 공급자를 AWS와 통합](id_roles_providers_saml_3rd-party.md)
+ [인증 응답에 대한 SAML 어설션 구성](id_roles_providers_create_saml_assertions.md)
+ [SAML 2.0 페더레이션 위탁자의 AWS Management Console 액세스 활성화](id_roles_providers_enable-console-saml.md)
+ [브라우저에서 SAML 응답 보기](troubleshoot_saml_view-saml-response.md)

## AWS에 대한 API 액세스를 위해 SAML 기반 페더레이션 사용
<a name="CreatingSAML-configuring"></a>

직원들에게 자신의 컴퓨터에서 백업 폴더로 데이터를 복사하는 방법을 제공하려 한다고 가정해 봅시다. 사용자가 컴퓨터에서 실행하는 애플리케이션을 구축합니다. 이 애플리케이션은 백엔드에서 Amazon S3 버킷에 있는 객체를 읽고 씁니다. 사용자는 AWS에 직접 액세스할 수 없습니다. 그 대신 다음 프로세스를 사용합니다.

![\[SAML 어설션에 기반을 두어 임시 보안 자격 증명 얻기\]](http://docs.aws.amazon.com/ko_kr/IAM/latest/UserGuide/images/saml-based-federation-diagram.png)


1. 조직 내 사용자가 클라이언트 앱을 사용해 조직의 IdP로부터 인증을 요청합니다.

1. IdP가 조직의 자격 증명 스토어를 이용하여 사용자를 인증합니다.

1. IdP가 사용자에 대한 정보로 SAML 어설션을 만들어 클라이언트 앱으로 보냅니다. IAM SAML IdP에 SAML 암호화를 활성화하면 이 어설션이 외부 IdP에 의해 암호화됩니다.

1. 클라이언트 앱이 AWS STS[https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html) API를 호출하면서 SAML 공급자의 ARN, 수임할 역할의 ARN, IdP로부터 받은 SAML 어설션을 전달합니다. 암호화가 활성화된 경우 클라이언트 앱을 통해 전달되는 어설션은 전송 중에도 암호화된 상태로 유지됩니다.

1. (선택 사항) AWS STS는 외부 IdP에서 업로드한 프라이빗 키를 사용하여 암호화된 SAML 어설션을 복호화합니다.

1. 클라이언트 앱에 대한 API 응답에는 임시 보안 자격 증명이 포함되어 있습니다.

1. 클라이언트 앱이 임시 보안 자격 증명을 사용하여 Amazon S3 API 작업을 호출합니다.

## SAML 2.0 기반 페더레이션 구성 개요
<a name="CreatingSAML-configuring-IdP"></a>

앞의 시나리오와 다이어그램을 통해 설명한 대로 SAML 2.0 기반 페더레이션을 사용하기 전에, 서로를 신뢰하도록 조직의 IdP와 AWS 계정을 구성해야 합니다. 이 신뢰를 구성하는 일반적인 프로세스는 다음 단계에서 설명합니다. 조직 내에는 Microsoft Active Directory 연동 서비스(AD FS, Windows Server의 일부), Shibboleth 또는 기타 호환 가능한 SAML 2.0 공급자와 같이 [SAML 2.0을 지원하는 IdP](id_roles_providers_saml_3rd-party.md)가 반드시 있어야 합니다.

**참고**  
페더레이션 복원력을 개선하려면 여러 SAML 로그인 엔드포인트를 지원하도록 IdP 및 AWS 페더레이션을 구성하는 것이 좋습니다. 자세한 내용은 AWS 보안 블로그 문서 [How to use regional SAML endpoints for failover](https://aws.amazon.com/blogs//security/how-to-use-regional-saml-endpoints-for-failover)(장애 조치에 리전 SAML 엔드포인트를 사용하는 방법)를 참조하세요.

**조직의 IdP와 AWS가 서로 신뢰하도록 구성**

1. AWS를 조직의 IdP에 서비스 제공업체(SP)로 등록합니다. `https://region-code.signin.aws.amazon.com/static/saml-metadata.xml` 의 SAML 메타데이터 문서를 사용합니다.

   가능한 *region-code* 값 목록은 [AWS 로그인 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/signin-service.html)의 **리전(Region)** 열을 참조하세요.

   필요에 따라 `https://signin.aws.amazon.com/static/saml-metadata.xml` 에서 SAML 메타데이터 문서를 사용할 수 있습니다.

1. <a name="createxml"></a>조직의 IdP를 사용하여 IdP를 AWS에서 IAM ID 제공업체로 기술할 수 있는 동등한 SAML 메타데이터 XML 파일을 생성합니다. 그 파일에는 발급자 이름, 생성 일자, 만료 일자 및 AWS가 조직에서 오는 인증 응답의 유효성을 검증하는 데 사용할 수 있는 키가 포함되어 있어야 합니다.

   암호화된 SAML 어설션이 외부 IdP에서 전송되도록 허용하는 경우 조직의 IdP를 사용하여 프라이빗 키 파일을 생성하고 이 파일을 IAM SAML 구성에 .pem 파일 형식으로 업로드해야 합니다. AWS STS는 IdP에 업로드된 퍼블릭 키에 해당하는 SAML 응답을 복호화하기 위해 이 프라이빗 키가 필요합니다.
**참고**  
[SAML V2.0 Metadata Interoperability Profile Version 1.0](https://docs.oasis-open.org/security/saml/Post2.0/sstc-metadata-iop-os.html)의 정의에 따라, IAM은 SAML 메타데이터 문서의 X.509 인증서 만료를 평가하거나 이에 대해 조치를 취하지 않습니다. 만료된 X.509 인증서가 우려되는 경우 조직의 거버넌스 및 보안 정책에 따라 인증서 만료 날짜를 모니터링하고 인증서를 교체하는 것이 좋습니다.

1. <a name="samlovrcreateentity"></a>IAM 콘솔에서 SAML 자격 증명 공급자를 생성합니다. 이 과정에서 SAML 메타데이터 문서와 조직의 IdP가 [Step 2](#createxml)에서 생성한 프라이빗 복호화 키를 업로드합니다. 자세한 내용은 [IAM에서 SAML ID 공급자 생성](id_roles_providers_create_saml.md) 섹션을 참조하세요.

1. <a name="samlovrcreaterole"></a>IAM에서 하나 이상의 IAM 역할을 생성합니다. 역할의 신뢰 정책에서 SAML 공급자를 보안 주체로 설정함으로써 조직과 AWS 사이에 신뢰 관계를 설정합니다. 역할의 권한 정책은 조직의 사용자가 AWS에서 하도록 허용된 것을 설정합니다. 자세한 내용은 [타사 ID 공급자에 대한 역할 생성](id_roles_create_for-idp.md) 섹션을 참조하세요.
**참고**  
역할 신뢰 정책에 사용되는 SAML IDP는 해당 역할이 속한 계정과 동일한 계정에 있어야 합니다.

1. 조직의 IdP에서 조직의 사용자 또는 그룹을 IAM 역할로 매핑하는 어설션을 정의합니다. 조직의 다양한 사용자 및 그룹은 서로 다른 IAM 역할에 매핑될 수 있다는 점에 유의하세요. 매핑 수행을 위한 정확한 절차는 사용하고 있는 IdP에 따라 다릅니다. 사용자의 경우 Amazon S3 폴더에 대한 [앞의 시나리오](#CreatingSAML-configuring)에서 모든 사용자가 Amazon S3 권한을 제공하는 동일한 역할에 매핑될 수 있습니다. 자세한 내용은 [인증 응답에 대한 SAML 어설션 구성](id_roles_providers_create_saml_assertions.md) 섹션을 참조하세요.

   IdP가 AWS 콘솔에 대한 SSO를 지원하는 경우, 콘솔 세션의 최대 지속 기간을 구성할 수 있습니다. 자세한 내용은 [SAML 2.0 페더레이션 위탁자의 AWS Management Console 액세스 활성화](id_roles_providers_enable-console-saml.md) 섹션을 참조하세요.

1. 생성 중인 애플리케이션에서 AWS Security Token Service `AssumeRoleWithSAML` API를 호출해 그것을 [Step 3](#samlovrcreateentity) 단계에서 생성한 SAML 공급자의 ARN, [Step 4](#samlovrcreaterole) 단계에서 생성한 수임할 역할의 ARN 및 IdP에서 얻는 현재 사용자에 대한 SAML 어설션으로 전달합니다. AWS는 역할 수임 요청이 SAML 공급자에서 참조된 IdP로부터 오는지 확인합니다.

   자세한 내용은 *AWS Security Token Service API 참조*의 [AssumeRoleWithSAML](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html)을 참조하세요.

1. 요청이 성공하면 API는 일련의 임시 보안 자격 증명을 반환하고 애플리케이션은 이를 사용해 AWS에 서명된 요청을 보냅니다. 애플리케이션은 현재 사용자에 대한 정보를 갖고 있어서 이전 시나리오에 설명된 대로 Amazon S3의 사용자별 폴더에 액세스할 수 있습니다.

## AWS 리소스에 대한 SAML 페더레이션 액세스를 허용하는 역할 개요
<a name="CreatingSAML-configuring-role"></a>

IAM에서 생성하는 역할에서는 조직의 SAML 페더레이션 보안 주체가 AWS에서 무엇을 할 수 있는지를 정의합니다. 역할에 대한 신뢰 정책을 생성할 때 앞서 생성한 SAML 공급자를 `Principal`로 지정합니다. `Condition`으로 신뢰 정책을 추가로 자세히 살펴봄으로써 특정 SAML 속성과 일치하는 사용자만 그 역할에 액세스하도록 허용할 수 있습니다. 예를 들어 다음 샘플 정책에 설명되어 있듯이 SAML 소속이 `staff`(https://openidp.feide.no에 의해 어설션되듯이)인 사용자만이 그 역할에 액세스할 수 있도록 지정할 수 있습니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [{
    "Effect": "Allow",
    "Principal": {"Federated": "arn:aws:iam::111122223333:saml-provider/ExampleOrgSSOProvider"},
    "Action": "sts:AssumeRoleWithSAML",
    "Condition": {
      "StringEquals": {
        "saml:aud": "https://us-east-1.signin.aws.amazon.com/saml",
        "saml:iss": "https://openidp.feide.no"
      },
      "ForAllValues:StringLike": {"saml:edupersonaffiliation": ["staff"]}
    }
  }]
}
```

------

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Federated": "arn:aws-cn:iam::111122223333:saml-provider/ExampleOrgSSOProvider"
            },
            "Action": "sts:AssumeRoleWithSAML",
            "Condition": {
                "StringEquals": {
                    "saml:aud": "https://ap-east-1.signin.amazonaws.cn/saml",
                    "saml:iss": "https://openidp.feide.no"
                },
                "ForAllValues:StringLike": {
                    "saml:edupersonaffiliation": [
                        "staff"
                    ]
                }
            }
        }
    ]
}
```

------

**참고**  
역할 신뢰 정책에 사용되는 SAML IDP는 해당 역할이 속한 계정과 동일한 계정에 있어야 합니다.

정책의 `saml:aud` 컨텍스트 키는 콘솔에 로그인할 때 브라우저에서 표시하는 URL을 지정합니다. 이 로그인 엔드포인트 URL은 ID 제공업체의 수신자 속성과 일치해야 합니다. 특정 리전 내에 로그인 URL을 포함할 수 있습니다. AWS에서는 페더레이션 복원력을 개선하기 위해 글로벌 엔드포인트 대신 리전별 엔드포인트를 사용할 것을 권장합니다. 엔드포인트가 하나만 구성되면 엔드포인트를 사용할 수 없게 되는 드문 경우 AWS에 페더레이션할 수 없습니다. 가능한 *region-code* 값 목록은 [AWS 로그인 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/signin-service.html)의 **리전(Region)** 열을 참조하세요.

다음 예제에서는 선택 사항인 `region-code`가 포함된 로그인 URL 형식을 보여줍니다.

`https://region-code.signin.aws.amazon.com/saml`

SAML 암호화가 필요한 경우 로그인 URL에는 AWS가 SAML 공급업체에 할당하는 고유 식별자가 포함되어야 하며, 이 식별자는 ID 제공업체 세부 정보 페이지에서 확인할 수 있습니다. 다음 예제에서 로그인 URL에는 로그인 경로에 /acs/를 추가해야 하는 IdP 고유 식별자가 포함됩니다.

`https://region-code.signin.aws.amazon.com/saml/acs/IdP-ID`

해당 역할의 권한 정책에 대해서는, 역할에 사용하는 방식으로 권한을 지정합니다. 예를 들어 조직의 사용자가 Amazon Elastic Compute Cloud 인스턴스를 관리할 수 있는 경우 **AmazonEC2FullAccess** 관리형 정책에서처럼 권한 정책에서 Amazon EC2 작업을 명시적으로 허용해야 합니다.

정책에서 확인할 수 있는 SAML 키에 대한 자세한 정보는 [SAML 기반 AWS STS 연동에 사용할 수 있는 키](reference_policies_iam-condition-keys.md#condition-keys-saml) 섹션을 참조하세요.

## SAML 기반 페더레이션에서 사용자를 고유하게 식별
<a name="CreatingSAML-userid"></a>

IAM에서 액세스 정책을 생성할 때 사용자의 자격 증명을 기반으로 권한을 지정할 수 있으면 종종 쓸모가 있습니다. 예를 들어 SAML을 사용하여 페더레이션된 사용자의 경우 애플리케이션에서 Amazon S3에 정보를 다음과 같은 구조를 사용하여 저장할 수 있습니다.

```
amzn-s3-demo-bucket/app1/user1
amzn-s3-demo-bucket/app1/user2
amzn-s3-demo-bucket/app1/user3
```

버킷(`amzn-s3-demo-bucket`)과 폴더(`app1`)는 정적 값이므로 Amazon S3 콘솔 또는 AWS CLI를 통해 생성할 수 있습니다. 그러나 사용자 고유 폴더(*user1*, *user2*, *user3* 등)는 사용자가 연동 프로세스를 통해 최초로 로그인할 때까지 사용자를 식별하는 값이 알려지지 않기 때문에 코드를 사용해 런타임에 생성되어야 합니다.

사용자 고유의 세부 정보를 리소스 이름의 일부로 참조하는 정책을 작성하려면, 정책 조건에서 사용될 수 있는 SAML 키에서 사용자 자격 증명이 사용 가능해야 합니다. 다음 키는 IAM 정책에서 사용할 SAML 2.0 기반 페더레이션에 사용할 수 있습니다. 다음 키에서 반환되는 값을 사용하여 Amazon S3 폴더와 같은 리소스의 고유한 사용자 식별자를 생성할 수 있습니다.
+ `saml:namequalifier`. `Issuer` 응답 값(`saml:iss`)과 `AWS` 계정 ID 및 IAM에서 SAML 공급자의 표시 이름(ARN의 마지막 부분)을 포함하는 문자열의 연결을 기반으로 하는 해시 값 계정 ID와 SAML 공급자 표시 이름의 연결을 IAM 정책에서 `saml:doc` 키로 사용할 수 있습니다. 계정 ID와 공급자 이름을 "/123456789012/provider\$1name"처럼 '/'로 구분해야 합니다. 자세한 정보는 `saml:doc`의 [SAML 기반 AWS STS 연동에 사용할 수 있는 키](reference_policies_iam-condition-keys.md#condition-keys-saml) 키를 참조하세요.

  `NameQualifier`와 `Subject`의 조합은 SAML 페더레이션 보안 주체를 고유한 이름으로 식별하는 데 사용할 수 있습니다. 다음 유사 코드는 이 값이 계산되는 방식을 보여줍니다. 이 유사 코드에서 `+`는 연결을 나타내고, `SHA1`는 SHA-1을 사용해 메시지 다이제스트를 생성하는 기능을 나타내며, `Base64`는 해시 출력의 Base-64 인코딩 버전을 생성하는 기능을 나타냅니다.

   `Base64 ( SHA1 ( "https://example.com/saml" + "123456789012" + "/MySAMLIdP" ) )` 

   SAML 기반 연동에 사용 가능한 정책 키에 대한 자세한 정보는 다음([SAML 기반 AWS STS 연동에 사용할 수 있는 키](reference_policies_iam-condition-keys.md#condition-keys-saml))을 참조하세요.
+ `saml:sub` (문자열). 이것은 클레임의 주체로서 여기에는 조직 내 사용자 개개인을 식별할 수 있는 고유 값이 포함됩니다(예: `_cbb88bf52c2510eabe00c1642d4643f41430fe25e3`).
+ `saml:sub_type` (문자열). 이 키는 `persistent`, `transient`, 또는 SAML 어설션에서 사용되는 `Format` 및 `Subject` 요소의 전체 `NameID` URI일 수 있습니다. `persistent`라는 값은 `saml:sub`의 값이 모든 세션에 걸쳐 사용자에게 동일하다는 것을 나타냅니다. 값이 `transient`인 경우 각 세션마다 사용자의 `saml:sub` 값이 다릅니다. `NameID` 요소의 `Format` 속성에 대한 자세한 내용은 [인증 응답에 대한 SAML 어설션 구성](id_roles_providers_create_saml_assertions.md) 섹션을 참조하세요.

다음 예에서는 앞의 키를 사용하여 Amazon S3의 사용자별 폴더에 대한 권한을 부여하는 권한 정책을 보여줍니다. 해당 정책에서는 `saml:namequalifier` 및 `saml:sub`를 모두 포함하는 접두사를 사용하여 Amazon S3 객체를 식별한다고 가정합니다. `Condition` 요소에는 `saml:sub_type`이 `persistent`로 설정되어 있는지 확인하는 테스트가 포함되어 있다는 것에 유의하세요. `transient`로 설정되어 있다면 사용자에 대한 `saml:sub` 값은 각 세션마다 다를 수 있고 값의 조합은 사용자 고유 폴더를 식별하는 데 사용되어서는 안 됩니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": [
      "s3:GetObject",
      "s3:PutObject",
      "s3:DeleteObject"
    ],
    "Resource": [
      "arn:aws:s3:::amzn-s3-demo-bucket-org-data/backup/${saml:namequalifier}/${saml:sub}",
      "arn:aws:s3:::amzn-s3-demo-bucket-org-data/backup/${saml:namequalifier}/${saml:sub}/*"
    ],
    "Condition": {"StringEquals": {"saml:sub_type": "persistent"}}
  }
}
```

------

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": [
      "s3:GetObject",
      "s3:PutObject",
      "s3:DeleteObject"
    ],
    "Resource": [
      "arn:aws-cn:s3:::amzn-s3-demo-bucket-org-data/backup/${saml:namequalifier}/${saml:sub}",
      "arn:aws-cn:s3:::amzn-s3-demo-bucket-org-data/backup/${saml:namequalifier}/${saml:sub}/*"
    ],
    "Condition": {"StringEquals": {"saml:sub_type": "persistent"}}
  }
}
```

------

IdP의 어설션을 정책 키에 매핑하는 것에 대한 자세한 정보는 [인증 응답에 대한 SAML 어설션 구성](id_roles_providers_create_saml_assertions.md) 섹션을 참조하세요.

# IAM에서 SAML ID 공급자 생성
<a name="id_roles_providers_create_saml"></a>

IAM SAML 2.0 자격 증명 공급자는 [SAML 2.0(Security Assertion Markup Language 2.0)](https://wiki.oasis-open.org/security) 표준을 지원하는 외부 자격 증명 공급자(IdP) 서비스를 기술하는 IAM의 엔터티입니다. 사용자가 AWS 리소스에 액세스할 수 있도록 Shibboleth 또는 Active Directory 페더레이션 서비스와 같은 SAML 호환 IdP와 AWS 간에 신뢰를 구축하고자 할 때 IAM ID 제공업체를 사용합니다. IAM SAML 자격 증명 공급자는 IAM 신뢰 정책에서 보안 주체로 사용됩니다.

이 시나리오에 대한 자세한 내용은 [SAML 2.0 연동](id_roles_providers_saml.md)를 참조하세요.

AWS Management Console에서 또는 AWS CLI, Tools for Windows PowerShell 또는 AWS API 호출을 사용하여 IAM 자격 증명 공급자를 생성하고 관리할 수 있습니다.

SAML 공급자를 생성한 후에는 1개 이상의 IAM 역할을 생성해야 합니다. 역할은 AWS의 자격 증명으로서 자신만의 고유한 자격 증명이 없지만(사용자가 그러하듯이), 이 컨텍스트에서는 IdP에서 인증한 SAML 페더레이션 보안 주체에게 역할이 동적으로 할당됩니다. 그 역할은 조직의 IdP가 AWS에 액세스하기 위해 임시 보안 인증을 요청할 수 있도록 허용합니다. 역할에 할당된 정책은 사용자가 AWS에서 허용된 작업이 무엇인지 결정합니다. SAML 연동을 위한 역할을 생성하려면 [타사 ID 공급자에 대한 역할 생성](id_roles_create_for-idp.md) 섹션을 참조하세요.

마지막으로 역할을 만든 후에는 AWS에 대한 정보와 SAML 페더레이션 보안 주체가 사용하기를 원하는 역할로 IdP를 구성하여 SAML 신뢰를 완료합니다. 이를 가리켜 IdP와 AWS 간 신뢰 당사자 신뢰 구성이라고 합니다. 신뢰 당사자 신뢰를 구성하려면 [신뢰 당사자 신뢰 및 클레임 추가를 통해 SAML 2.0 IdP 구성](id_roles_providers_create_saml_relying-party.md) 섹션을 참조하세요.

**Topics**
+ [사전 조건](#idp-manage-identityprovider-prerequisites)
+ [IAM SAML 자격 증명 공급자 생성 및 관리(콘솔)](#idp-manage-identityprovider-console)
+ [SAML 암호화 키 관리](#id_federation_manage-saml-encryption)
+ [IAM SAML 자격 증명 공급자 생성(AWS CLI)](#idp-create-identityprovider-CLI)
+ [IAM SAML 자격 증명 공급자 생성 및 관리(AWS API)](#idp-create-identityprovider-API)
+ [다음 단계](#id_roles_create-for-saml-next-steps)

## 사전 조건
<a name="idp-manage-identityprovider-prerequisites"></a>

SAML 자격 증명 공급자를 생성하려면 IdP에서 가져온 다음 정보가 있어야 합니다.
+ IdP에서 SAML 메타데이터 문서를 가져옵니다. 이 문서에는 발급자 이름, 만료 정보 및 IdP에서 가져온 SAML 인증 응답(어설션)을 확인하는 데 사용할 수 있는 키가 포함되어 있습니다. 메타데이터 문서를 생성하려면 외부 IdP가 제공하는 자격 증명 관리 소프트웨어를 사용하세요.
**중요**  
이 메타데이터 파일에는 발급자 이름, 만료 정보 및 IdP에서 가져온 SAML 인증 응답(어설션)을 확인하는 데 사용할 수 있는 키가 포함되어 있습니다. 메타데이터 파일은 바이트 순서 표시(BOM)가 없는 UTF-8 형식으로 인코딩되어야 합니다. BOM을 제거하려면 Notepad\$1\$1와 같은 텍스트 편집 도구를 사용해 파일을 UTF-8로 인코딩합니다.  
SAML 메타데이터 문서의 일부로 포함된 X.509 인증서는 1,024비트 이상의 키 크기를 사용해야 합니다. 또한 X.509 인증서에는 반복되는 확장이 없어야 합니다. 확장을 사용할 수 있지만 확장은 인증서에 한 번만 나타날 수 있습니다. X.509 인증서가 두 조건 중 하나를 충족하지 못하면 IdP 생성에 실패하고 'Unable to parse metadata' 오류를 반환합니다.  
[SAML V2.0 Metadata Interoperability Profile Version 1.0](https://docs.oasis-open.org/security/saml/Post2.0/sstc-metadata-iop-os.html)의 정의에 따라, IAM은 SAML 메타데이터 문서의 X.509 인증서 만료를 평가하거나 이에 대해 조치를 취하지 않습니다. 만료된 X.509 인증서가 우려되는 경우 조직의 거버넌스 및 보안 정책에 따라 인증서 만료 날짜를 모니터링하고 인증서를 교체하는 것이 좋습니다.
+ SAML 암호화를 사용하도록 선택하는 경우 IdP를 사용하여 프라이빗 키 파일을 생성하고 이 파일을 .pem 파일 형식으로 IAM SAML 구성에 업로드해야 합니다. AWS STS는 IdP가 사용하는 퍼블릭 키에 해당하는 SAML 응답을 복호화하기 위해 이 프라이빗 키가 필요합니다. 다음 알고리즘은 지원됩니다.
  + 암호화 알고리즘
    + AES-128
    + AES-256
    + RSA-OAEP
  + 키 전송 알고리즘
    + AES-CBC
    + AES-GCM

  프라이빗 키를 생성하는 단계는 ID 제공업체의 설명서를 참조하세요.
**참고**  
IAM Identity Center와 Amazon Cognito는 IAM SAML 자격 증명 공급자의 암호화된 SAML 어설션을 지원하지 않습니다. Amazon Cognito 사용자 풀을 사용하여 Amazon Cognito 자격 증명 풀 페더레이션에 암호화된 SAML 어설션 지원을 간접적으로 추가할 수 있습니다. 사용자 풀에는 IAM SAML 페더레이션과 독립적이며 [SAML 서명 및 암호화](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-SAML-signing-encryption.html)를 지원하는 SAML 페더레이션이 있습니다. 이 기능이 자격 증명 풀로 직접 확장되지는 않지만 사용자 풀은 자격 증명 풀의 IdP가 될 수 있습니다. 자격 증명 풀에서 SAML 암호화를 사용하려면 암호화가 적용된 SAML 공급자를 자격 증명 풀의 IdP인 사용자 풀에 추가하세요.  
SAML 공급자는 사용자 풀이 제공하는 키를 사용하여 SAML 어설션을 암호화할 수 있어야 합니다. 사용자 풀은 IAM이 제공한 인증서로 암호화된 어설션을 수락하지 않습니다.

필요한 SAML 메타데이터 문서를 생성하는 방법을 비롯해, 사용 가능한 다수의 IdP를 구성하여 AWS에서 작동되도록 하는 방법에 대한 지침은 [서드 파티 SAML 솔루션 공급자를 AWS와 통합](id_roles_providers_saml_3rd-party.md) 섹션을 참조하세요.

SAML 페더레이션에 대한 도움이 필요하면 [SAML 페더레이션 문제 해결](troubleshoot_saml.md)을 참조하세요.

## IAM SAML 자격 증명 공급자 생성 및 관리(콘솔)
<a name="idp-manage-identityprovider-console"></a>

AWS Management Console을 사용하여 IAM SAML 자격 증명 공급자를 생성, 업데이트, 삭제할 수 있습니다. SAML 페더레이션에 대한 도움이 필요하면 [SAML 페더레이션 문제 해결](troubleshoot_saml.md)을 참조하세요.

**IAM SAML 자격 증명 공급자를 생성하려면(콘솔)**

1. AWS Management Console에 로그인하여 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)에서 IAM 콘솔을 엽니다.

1. 탐색 창에서 [**자격 증명 공급자(Identity providers)**]를 선택한 다음 [**공급자 추가(Add provider)**]를 선택합니다.

1. [**공급자 구성(Configure provider)**]에 대해 [**SAML**]을 선택합니다.

1. 자격 증명 공급자의 이름을 입력합니다.

1. [**메타데이터 문서(Metadata document)**에서 [**파일 선택(Choose file)**을 선택하고 [사전 조건](#idp-manage-identityprovider-prerequisites)에서 다운로드한 SAML 메터데이터 문서를 지정합니다.
**참고**  
SAML 메타데이터 문서의 `validUntil` 또는 `cacheDuration` 속성은 ID 공급자의 **유효 종료** 날짜를 정의합니다. SAML 메타데이터 문서에 유효 기간 속성이 포함되어 있지 않으면 **유효 종료** 날짜가 X.509 인증서 만료 날짜와 일치하지 않습니다.  
IAM은 SAML 메타데이터 문서에서 X.509 인증서 만료를 평가하거나 조치를 취하지 않습니다. 만료된 X.509 인증서가 우려되는 경우 조직의 거버넌스 및 보안 정책에 따라 인증서 만료 날짜를 모니터링하고 인증서를 교체하는 것이 좋습니다.

1. (선택 사항) **SAML 암호화**에서 **파일 선택**을 선택하고 [사전 조건](#idp-manage-identityprovider-prerequisites)에서 생성한 프라이빗 키 파일을 선택합니다. IdP로부터 암호화된 요청만 수락하려면 **암호화 필요**를 선택합니다.

1. (선택 사항) **태그 추가(Add tags)**에 키 값 페어를 추가하여 IdP를 식별하고 구성할 수 있습니다. 태그를 사용하여 AWS 리소스에 대한 액세스를 제어할 수도 있습니다. SAML 자격 증명 공급자의 태깅에 대한 자세한 내용은 [IAM SAML ID 제공업체 태깅](id_tags_saml.md) 섹션을 참조하세요.

   **태그 추가**를 선택합니다. 각 태그 키 값 페어의 값을 입력합니다.

1. 제공한 정보를 확인합니다. 완료되면 [**공급자 추가(Add provider)**]를 선택합니다.

1. ID 제공업체에 IAM 역할을 할당하세요. 이 역할은 자격 증명 공급자가 관리하는 외부 사용자 자격 증명에 계정의 AWS 리소스에 대한 액세스 권한을 부여합니다. ID 연동을 위한 역할을 생성하는 방법에 대한 자세한 내용은 [타사 ID 공급자에 대한 역할 생성](id_roles_create_for-idp.md) 섹션을 참조하세요.
**참고**  
역할 신뢰 정책에 사용되는 SAML IDP는 해당 역할이 속한 계정과 동일한 계정에 있어야 합니다.

**SAML 공급자를 삭제하려면(콘솔)**

1. AWS Management Console에 로그인하여 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)에서 IAM 콘솔을 엽니다.

1. 탐색 창에서 [**자격 증명 공급자(Identity providers)**]를 선택합니다.

1. 삭제할 자격 증명 공급자 옆의 라디오 버튼을 선택합니다.

1. **삭제**를 선택합니다. 새 창이 열립니다.

1. 필드에 단어 `delete`를 입력하여 공급자 삭제를 확인합니다. 그런 다음 **삭제**를 선택합니다.

## SAML 암호화 키 관리
<a name="id_federation_manage-saml-encryption"></a>

외부 IdP의 SAML 응답에서 암호화된 어설션을 수신하도록 IAM SAML 공급자를 구성할 수 있습니다. 사용자는 `[sts:AssumeRoleWithSAML](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html)` 호출을 통해 암호화된 SAML 어설션을 사용하여 AWS에서 역할을 맡을 수 있습니다.

SAML 암호화는 어설션이 중개자 또는 서드 파티를 통해 전달될 때 보안을 유지합니다. 또한 이 기능을 사용하면 FedRAMP 또는 SAML 어설션의 암호화를 요구하는 내부 규정 준수 정책 요구 사항을 충족할 수 있습니다.

IAM SAML 자격 증명 공급자를 구성하려면 [IAM에서 SAML ID 공급자 생성](#id_roles_providers_create_saml) 섹션을 참조하세요. SAML 페더레이션에 대한 도움이 필요하면 [SAML 페더레이션 문제 해결](troubleshoot_saml.md)을 참조하세요.

### SAML 암호화 키 교체
<a name="id_federation_manage-saml-keys-rotate"></a>

IAM은 사용자가 IAM SAML 제공업체에 업로드한 프라이빗 키를 사용하여 IdP의 암호화된 SAML 어설션을 복호화합니다. 각 자격 증명 공급자마다 최대 2개의 프라이빗 키 파일을 저장할 수 있으므로 필요에 따라 프라이빗 키를 교체할 수 있습니다. 2개의 파일이 저장되면 각 요청이 먼저 가장 최근의 **다음에 추가됨** 날짜로 복호화를 시도한 다음 IAM이 가장 오래된 **다음에 추가됨** 날짜로 요청 복호화를 시도합니다.

1. AWS Management Console에 로그인하여 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)에서 IAM 콘솔을 엽니다.

1. 탐색 창에서 **자격 증명 공급자**를 선택한 다음 목록에서 공급자를 선택합니다.

1. **SAML 암호화** 탭을 선택하고 **새 키 추가**를 선택합니다.

1. **파일 선택**을 선택하고 IdP에서 다운로드한 프라이빗 키를 .pem 파일로 업로드한 다음 **키 추가**를 선택합니다.

1. **SAML 복호화를 위한 프라이빗 키** 섹션에서 만료된 프라이빗 키 파일을 선택하고 **제거**를 선택합니다. 첫 번째 어설션 복호화 시도가 성공하려면 새 프라이빗 키를 추가한 후 만료된 프라이빗 키를 제거하는 것이 좋습니다.

## IAM SAML 자격 증명 공급자 생성(AWS CLI)
<a name="idp-create-identityprovider-CLI"></a>

AWS CLI를 사용하여 SAML 공급자를 생성, 업데이트, 삭제할 수 있습니다. SAML 페더레이션에 대한 도움이 필요하면 [SAML 페더레이션 문제 해결](troubleshoot_saml.md)을 참조하세요.

**IAM 자격 증명 공급자를 생성하고 메타데이터 문서를 업로드하려면(AWS CLI)**
+ 다음 명령을 실행합니다. [https://docs.aws.amazon.com/cli/latest/reference/iam/create-saml-provider.html](https://docs.aws.amazon.com/cli/latest/reference/iam/create-saml-provider.html) 

**IAM SAML 자격 증명 공급자를 업데이트하려면(AWS CLI)**

메타데이터 파일과 SAML 암호화 설정을 업데이트하고 IAM SAML 공급자의 프라이빗 키 복호화 파일을 교체할 수 있습니다. 프라이빗 키를 교체하려면 새 프라이빗 키를 추가한 다음 별도의 요청에서 이전 키를 제거합니다. 프라이빗 키 교체에 대한 자세한 내용은 [SAML 암호화 키 관리](#id_federation_manage-saml-encryption) 섹션을 참조하세요.
+ 다음 명령을 실행합니다. [https://docs.aws.amazon.com/cli/latest/reference/iam/update-saml-provider.html](https://docs.aws.amazon.com/cli/latest/reference/iam/update-saml-provider.html) 

**기존 IAM 자격 증명 공급자를 태깅하려면(AWS CLI)**
+ 다음 명령을 실행합니다. [https://docs.aws.amazon.com/cli/latest/reference/iam/tag-saml-provider.html](https://docs.aws.amazon.com/cli/latest/reference/iam/tag-saml-provider.html) 

**기존 IAM 자격 증명 공급자의 태그를 나열하려면(AWS CLI)**
+ 다음 명령을 실행합니다. [https://docs.aws.amazon.com/cli/latest/reference/iam/list-saml-provider-tags.html](https://docs.aws.amazon.com/cli/latest/reference/iam/list-saml-provider-tags.html) 

**기존 IAM 자격 증명 공급자에서 태그를 제거하려면(AWS CLI)**
+ 다음 명령을 실행합니다. [https://docs.aws.amazon.com/cli/latest/reference/iam/untag-saml-provider.html](https://docs.aws.amazon.com/cli/latest/reference/iam/untag-saml-provider.html) 

**IAM SAML 자격 증명 공급자를 삭제하려면(AWS CLI)**

1. (선택 사항) ARN, 생성 날짜, 만료 등 모든 공급자에 대한 정보를 나열하려면 다음 명령을 실행합니다.
   + [https://docs.aws.amazon.com/cli/latest/reference/iam/list-saml-providers.html](https://docs.aws.amazon.com/cli/latest/reference/iam/list-saml-providers.html)

1. (선택 사항) ARN, 생성 날짜, 만료 날짜, 암호화 설정, 프라이빗 키 정보 등 특정 공급자에 대한 정보를 얻으려면 다음 명령을 실행합니다.
   + [https://docs.aws.amazon.com/cli/latest/reference/iam/get-saml-provider.html](https://docs.aws.amazon.com/cli/latest/reference/iam/get-saml-provider.html)

1. IAM 자격 증명 공급자를 삭제하려면 다음 명령을 실행합니다.
   + [https://docs.aws.amazon.com/cli/latest/reference/iam/delete-saml-provider.html](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-saml-provider.html)

## IAM SAML 자격 증명 공급자 생성 및 관리(AWS API)
<a name="idp-create-identityprovider-API"></a>

AWS API를 사용하여 SAML 공급자를 생성, 업데이트, 삭제할 수 있습니다. SAML 페더레이션에 대한 도움이 필요하면 [SAML 페더레이션 문제 해결](troubleshoot_saml.md)을 참조하세요.

**IAM 자격 증명 공급자를 생성하고 메타데이터 문서를 업로드하려면(AWS API)**
+ 다음 연산을 호출합니다. [https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateSAMLProvider.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateSAMLProvider.html) 

**IAM SAML 자격 증명 공급자를 업데이트하려면(AWS API)**

메타데이터 파일과 SAML 암호화 설정을 업데이트하고 IAM SAML 공급자의 프라이빗 키 복호화 파일을 교체할 수 있습니다. 프라이빗 키를 교체하려면 새 프라이빗 키를 추가한 다음 별도의 요청에서 이전 키를 제거합니다. 프라이빗 키 교체에 대한 자세한 내용은 [SAML 암호화 키 관리](#id_federation_manage-saml-encryption) 섹션을 참조하세요.
+ 다음 연산을 호출합니다. [https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateSAMLProvider.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateSAMLProvider.html) 

**기존 IAM 자격 증명 공급자를 태깅하려면(AWS API)**
+ 다음 연산을 호출합니다. [https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagSAMLProvider.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagSAMLProvider.html) 

**기존 IAM 자격 증명 공급자의 태그를 나열하려면(AWS API)**
+ 다음 연산을 호출합니다. [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListSAMLProviderTags.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListSAMLProviderTags.html) 

**기존 IAM 자격 증명 공급자에서 태그를 제거하려면(AWS API)**
+ 다음 연산을 호출합니다. [https://docs.aws.amazon.com/IAM/latest/APIReference/API_UntagSAMLProvider.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UntagSAMLProvider.html) 

**IAM 자격 증명 공급자를 삭제하려면(AWS API)**

1. (선택 사항)ARN, 생성 날짜, 만료 등 모든 IdP에 대한 정보를 나열하려면 다음 연산을 호출합니다.
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListSAMLProviders.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListSAMLProviders.html)

1. (선택 사항) ARN, 생성 날짜, 만료 날짜, 암호화 설정, 프라이빗 키 정보 등 특정 공급자에 대한 정보를 얻으려면 다음 연산을 호출합니다.
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetSAMLProvider.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetSAMLProvider.html)

1. IdP를 삭제하려면 다음 연산을 호출합니다.
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteSAMLProvider.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteSAMLProvider.html)

## 다음 단계
<a name="id_roles_create-for-saml-next-steps"></a>

SAML ID 제공업체를 생성한 후 IdP와의 신뢰 당사자 트러스트를 설정합니다. IdP의 인증 응답에서 가져온 클레임을 정책에서 사용하여 역할에 대한 액세스를 제어할 수도 있습니다.
+ IdP에 서비스 공급자로서 AWS의 정보를 알려야 합니다. 이를 가리켜 IdP와 AWS 간 신뢰 당사자 트러스트 추가라고 합니다. 신뢰 당사자 신뢰를 추가하기 위한 정확한 프로세스는 사용 중인 IdP에 따라 달라집니다. 자세한 내용은 [신뢰 당사자 신뢰 및 클레임 추가를 통해 SAML 2.0 IdP 구성](id_roles_providers_create_saml_relying-party.md)을 참조하세요.
+ IdP가 AWS에 클레임이 포함된 리소스를 전송하는 경우 수신 클레임 중 다수가 AWS 콘텍스트 키에 매핑됩니다. Condition 요소를 사용하여 IAM 정책에서 이러한 컨텍스트 키를 사용하고 역할에 대한 액세스를 제어할 수 있습니다. 자세한 내용은 [인증 응답에 대한 SAML 어설션 구성](id_roles_providers_create_saml_assertions.md) 섹션을 참조하세요.

# 신뢰 당사자 신뢰 및 클레임 추가를 통해 SAML 2.0 IdP 구성
<a name="id_roles_providers_create_saml_relying-party"></a>

SAML 액세스를 위한 IAM 자격 증명 공급자 및 역할을 생성한다는 것은 외부 자격 증명 공급자(IdP)와 관련 사용자에게 허용된 작업을 AWS에 알려주는 것입니다. 그 다음 단계는 IdP에게 서비스 공급자인 AWS에 대해 알려주는 것입니다. 이를 가리켜 IdP와 AWS 간 *신뢰 당사자 신뢰* 추가라고 합니다. 신뢰 당사자 신뢰를 추가하기 위한 정확한 프로세스는 사용 중인 IdP에 따라 달라집니다. 자세한 정보는 자격 증명 관리 소프트웨어의 설명서를 참조하세요.

오늘날 IdP는 신뢰 당사자 정보와 인증서가 저장된 XML 문서를 IdP가 읽을 수 있도록 URL 지정을 허용하는 곳이 많습니다. AWS의 경우 로그인 엔드포인트 URL을 사용합니다. 다음 예제에서는 선택 사항인 `region-code`가 포함된 URL 형식을 보여줍니다.

`https://region-code.signin.aws.amazon.com/static/saml-metadata.xml`

SAML 암호화가 필요한 경우 URL에는 AWS가 SAML 공급업체에 할당하는 고유 식별자가 포함되어야 하며, 이 식별자는 ID 제공업체 세부 정보 페이지에서 확인할 수 있습니다. 다음 예제에서는 고유 식별자가 포함된 리전 로그인 URL을 보여줍니다.

`https://region-code.signin.aws.amazon.com/static/saml/IdP-ID/saml-metadata.xml`

가능한 *region-code* 값 목록은 [AWS 로그인 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/signin-service.html)의 **리전(Region)** 열을 참조하세요. AWS 값의 경우 비리전별 엔드포인트 `https://signin.aws.amazon.com/saml`을 사용할 수도 있습니다.

URL을 직접 지정할 수 없는 경우 위 URL에서 XML 문서를 다운로드하여 IdP 소프트웨어로 가져오면 됩니다.

또한, AWS를 신뢰 당사자로 지정하는 IdP에서는 적절한 클레임 규칙을 생성해야 합니다. IdP가 AWS 엔드포인트에 보내는 SAML 응답에는 *클레임*이 하나 이상 있는 SAML *어셜션*이 포함됩니다. 클레임은 사용자 및 사용자 소속 그룹에 대한 정보입니다. 클레임 규칙은 그 정보를 SAML 속성에 매핑합니다. 이는 IAM 정책에서 AWS가 SAML 페더레이션 보안 주체의 권한을 검사하는 데 필요한 속성이 IdP의 SAML 인증 응답에 저장되어 있는지 확인하도록 해줍니다. 자세한 내용은 다음 항목을 참조하세요.
+  [AWS 리소스에 대한 SAML 페더레이션 액세스를 허용하는 역할 개요](id_roles_providers_saml.md#CreatingSAML-configuring-role). 이 주제에서는 IAM 정책의 SAML별 키 사용을 비롯해 이 키를 사용하여 SAML 페더레이션 보안 주체의 권한을 제한하는 방법에 대해 살펴봅니다.
+ [인증 응답에 대한 SAML 어설션 구성](id_roles_providers_create_saml_assertions.md). 이 주제에서는 사용자에 대한 정보가 포함된 SAML 클레임을 구성하는 방법에 대해 살펴봅니다. 그 클레임은 SAML 어설션에 번들링되어 있으며 AWS로 전동되는 SAML 응답에 포함되어 있습니다. AWS 정책에 필요한 그 정보가 AWS가 인식하고 사용할 수 있는 형식으로 SAML 어설션에 반드시 포함되도록 해야 합니다.
+  [서드 파티 SAML 솔루션 공급자를 AWS와 통합](id_roles_providers_saml_3rd-party.md). 이 주제에서는 아이덴티티 솔루션과 AWS의 통합 방법에 대한 타사 설명서 링크를 제공합니다.

**참고**  
페더레이션 복원력을 개선하려면 여러 SAML 로그인 엔드포인트를 지원하도록 IdP 및 AWS 페더레이션을 구성하는 것이 좋습니다. 자세한 내용은 AWS 보안 블로그 문서 [How to use regional SAML endpoints for failover](https://aws.amazon.com/blogs//security/how-to-use-regional-saml-endpoints-for-failover)(장애 조치에 리전 SAML 엔드포인트를 사용하는 방법)를 참조하세요.

# 서드 파티 SAML 솔루션 공급자를 AWS와 통합
<a name="id_roles_providers_saml_3rd-party"></a>

**참고**  
인간 사용자가 AWS에 액세스할 때 임시 보안 인증을 사용하도록 하는 것이 좋습니다. AWS IAM Identity Center 사용을 고려해 보셨나요? IAM Identity Center를 사용하여 여러 AWS 계정에 대한 액세스를 중앙에서 관리하고 사용자에게 한 곳에서 할당된 모든 계정에 대한 MFA 보호 Single Sign-On 액세스를 제공할 수 있습니다. IAM Identity Center를 사용하면 IAM Identity Center에서 사용자 자격 증명을 생성하고 관리하거나 기존 SAML 2.0 호환 자격 증명 제공업체에 쉽게 연결할 수 있습니다. 자세한 정보는 *AWS IAM Identity Center 사용 설명서*의 [IAM Identity Center란 무엇인가요?](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html) 섹션을 참조하세요.

다음 링크는 AWS 연동을 처리할 타사 SAML 2.0 자격 증명 공급자(IdP) 솔루션을 구성하는 데 도움이 됩니다. 자격 증명 공급자에 문의하여 SAML 토큰 암호화를 지원하는지 확인하세요. SAML 암호화 요구 사항은 [SAML 암호화 키 관리](id_roles_providers_create_saml.md#id_federation_manage-saml-encryption) 섹션을 참조하세요.

**작은 정보**  
AWS Support 엔지니어는 타사 소프트웨어를 사용하는 몇 가지 통합 작업과 함께 비즈니스 및 엔터프라이즈 지원 계획이 있는 고객을 지원할 수 있습니다. 지원되는 플랫폼 및 애플리케이션의 최신 목록은 *AWS Support FAQ*에서 [지원되는 타사 소프트웨어는 무엇입니까?](https://aws.amazon.com/premiumsupport/faqs/#what3rdParty)를 참조하세요.


****  

| Solution | 추가 정보 | 
| --- | --- | 
| Auth0 |  [Amazon Web Services와 통합](https://auth0.com/docs/integrations/aws) - Auth0 설명서 웹 사이트의 이 페이지에는 AWS Management Console에서 통합 인증(SSO)을 설정하는 방법을 설명하는 리소스에 대한 링크가 있으며, JavaScript 예제가 포함되어 있습니다. [세션 태그](id_session-tags.md)를 전달하도록 Auth0을 구성할 수 있습니다. 자세한 내용은 [Auth0, IAM 세션 태그에 관한 AWS와의 파트너십 발표](https://auth0.com/blog/auth0-partners-with-aws-for-iam-session-tags/)를 참조하세요. | 
| Microsoft Entra |  [자습서: AWS 단일 계정 액세스와 Microsoft Entra SSO 통합](https://learn.microsoft.com/en-us/azure/active-directory/saas-apps/amazon-web-service-tutorial) - Microsoft 웹 사이트의 이 자습서에서는 SAML 페더레이션을 사용하여 Microsoft Entra(이전 Azure AD)를 ID 제공업체(IdP)로 설정하는 방법을 설명합니다. | 
| Centrify | [Centrify 구성 및 AWS에 SSO용 SAML 사용](https://docs.centrify.com/Content/Applications/AppsWeb/AmazonSAML.htm) - Centrify 웹 사이트의 이 페이지는 Centrify를 구성해 SSO를 위한 SAML을 AWS에 사용하는 방법에 대해 설명합니다. | 
| CyberArk | [CyberArk](https://docs.cyberark.com/Product-Doc/OnlineHelp/Idaptive/Latest/en/Content/Applications/AppsWeb/AmazonSAML.htm)를 구성하여 CyberArk 사용자 포털에서 SAML 통합 인증(SSO)을 통해 로그인하는 사용자에게 Amazon Web Services(AWS) 액세스를 제공합니다. | 
| ForgeRock | [ForgeRock Identity Platform](https://backstage.forgerock.com/docs/am/6.5/saml2-guide/#saml2-create-hosted-idp)이 AWS와 통합됩니다. [세션 태그](id_session-tags.md)를 전달하도록 ForgeRock을 구성할 수 있습니다. 자세한 내용은 [Amazon Web Services의 속성 기반 액세스 제어](https://www.forgerock.com/blog/attribute-based-access-control-amazon-web-services)를 참조하세요. | 
| Google Workspace | [Amazon Web Services 클라우드 애플리케이션](https://support.google.com/a/answer/6194963) - Google Workspace Admin Help 사이트에 있는 이 문서는 AWS를 서비스 공급자로 하여 Google Workspace를 SAML 2.0 IdP로 구성하는 방법을 설명합니다. | 
| IBM | [세션 태그](id_session-tags.md)를 전달하도록 IBM을 구성할 수 있습니다. 자세한 내용은 [AWS 세션 태그를 지원하는 최초 제품 중 하나인 IBM Cloud Identity IDaaS](https://community.ibm.com/community/user/security/blogs/adam-case/2019/11/25/ibm-cloud-identity-idaas-one-of-first-to-support-aws-session-tags)를 참조하세요. | 
| JumpCloud |  [Amazon AWS에서 Single Sign On(SSO)을 위한 IAM 역할을 통해 액세스 권한 부여](https://support.jumpcloud.com/support/s/article/Granting-Access-via-IAM-Roles-for-Single-Sign-On-SSO-with-Amazon-AWS) - JumpCloud 웹 사이트의 이 문서에서는 AWS의 IAM 역할을 기반으로 SSO를 설정하고 활성화하는 방법을 설명합니다. | 
| Matrix42 | [MyWorkspace 시작 안내서](https://myworkspace.matrix42.com/documents/MyWorkspace-Getting-Started-with-AWS.pdf) - 이 안내서에서는 AWS Identity 서비스를 Matrix42 MyWorkspace와 통합하는 방법에 대해 설명합니다. | 
| Microsoft AD FS(Active Directory Federation Services) |  [Field Notes: Integrating Active Directory Federation Service with AWS IAM Identity Center](https://aws.amazon.com/blogs/architecture/field-notes-integrating-active-directory-federation-service-with-aws-single-sign-on/)(필드 노트: Active Directory Federation Service와 SSO 통합) - AWS 아키텍처 블로그의 이 게시물에서는 AD FS와 AWS IAM Identity Center(IAM Identity Center) 간의 인증 흐름을 설명합니다. IAM Identity Center는 SAML 2.0을 통한 아이덴티티 페더레이션을 지원하므로 AD FS 솔루션과의 통합이 가능합니다. 사용자는 회사 보안 인증을 사용하여 IAM Identity Center 포털에 로그인할 수 있으므로 IAM Identity Center에서 별도의 보안 인증을 유지 관리하는 관리 오버헤드를 줄일 수 있습니다. [세션 태그](id_session-tags.md)를 전달하도록 AD FS를 구성할 수도 있습니다. 자세한 내용은 [AD FS에서 속성 기반 액세스 제어를 사용하여 IAM 권한 관리 간소화](https://aws.amazon.com/blogs/security/attribute-based-access-control-ad-fs-simplify-iam-permissions-management/)를 참조하세요.  | 
| miniOrange | [AWS용 ](http://miniorange.com/amazon-web-services-%28aws%29-single-sign-on-%28sso%29) - miniOrange 웹 사이트의 이 페이지에서는 기업용 AWS에 대한 보안 액세스 및 AWS 애플리케이션에 대한 완전한 액세스 제어를 설정하는 방법을 설명합니다. | 
| Okta |  [Okta를 사용하여 Amazon Web Services 명령줄 인터페이스 통합](https://support.okta.com/help/Documentation/Knowledge_Article/Integrating-the-Amazon-Web-Services-Command-Line-Interface-Using-Okta) - Okta 지원 사이트의 이 페이지에서는 Okta를 AWS와 함께 사용하도록 구성하는 방법을 알아볼 수 있습니다. [세션 태그](id_session-tags.md)를 전달하도록 Okta를 구성할 수 있습니다. 자세한 내용은 [Okta 및 AWS 파트너, 세션 태그를 통해 액세스 간소화](https://www.okta.com/blog/2019/11/okta-and-aws-partner-to-simplify-access-via-session-tags/)를 참조하세요. | 
| Okta | [AWS 계정 페더레이션](https://help.okta.com/oie/en-us/Content/Topics/DeploymentGuides/AWS/aws-deployment.htm) – Okta 웹사이트의 이 섹션은 AWS에 대해 IAM Identity Center를 설정하고 지원하는 방법을 설명합니다. | 
| OneLogin | [OneLogin Knowledgebase](https://onelogin.service-now.com/support)에서 SAML AWS라는 검색어를 입력하여 단일 역할 및 다중 역할 시나리오를 위해 OneLogin과 AWS 사이에 IAM Identity Center 기능을 설정하는 방법이 설명된 일련의 문서를 찾습니다. [세션 태그](id_session-tags.md)를 전달하도록 OneLogin을 구성할 수 있습니다. 자세한 내용은 [OneLogin 및 세션 태그: AWS 리소스에 대한 속성 기반 액세스 제어](https://www.onelogin.com/blog/aws-session-tags-integration)를 참조하세요. | 
| Ping Identity |  [PingFederate AWS 커넥터](https://support.pingidentity.com/s/marketplace-integration-details?recordId=a7i1W0000004HBwQAM) - 통합 인증(SSO) 및 프로비저닝 연결을 쉽게 설정할 수 있는 빠른 연결 템플릿인 PingFederate AWS 커텍터에 대한 세부 정보를 봅니다. 설명서를 읽고 AWS와의 통합을 위한 최신 PingFederate AWS Connector를 다운로드합니다. [세션 태그](id_session-tags.md)를 전달하도록 Ping ID를 구성할 수 있습니다. 자세한 내용은 [AWS에서 속성 기반 액세스 제어를 위한 Ping Identity 지원 발표](https://support.pingidentity.com/s/document-item?bundleId=integrations&topicId=pon1571779451105.html)를 참조하세요.  | 
| RadiantLogic | [Radiant Logic 기술 파트너](http://www.radiantlogic.com/about/partners/technology-partners/) - Radiant Logic의 RadiantOne 페더레이션 자격 증명 서비스를 AWS와 통합하여 SAML 기반의 SSO를 위한 자격 증명 허브를 구축할 수 있습니다. | 
| RSA | [Amazon Web Services - RSA Ready Implementation Guide](https://community.rsa.com/s/article/Amazon-Web-Services-RSA-Ready-Implementation-Guide)에서는 AWS 및 RSA 구현 안내를 제공합니다. SAML 구성에 대한 자세한 내용은 [Amazon Web Services - SAML My Page SSO Configuration - RSA Ready Implementation Guide](https://community.rsa.com/s/article/Amazon-Web-Services-SAML-My-Page-SSO-Configuration-RSA-Ready-Implementation-Guide)를 참조하세요. | 
| Salesforce.com |  [Salesforce에서 AWS와의 SSO를 구성하는 방법](https://developer.salesforce.com/page/Configuring-SAML-SSO-to-AWS) - Salesforce.com 개발자 사이트에 실린 이 사용 방법 설명서에서는 Salesforce에 IdP(자격 증명 공급자)를 설정하고 AWS를 서비스 공급자로 구성하는 방법을 설명합니다. | 
| SecureAuth |  [AWS - SecureAuth SAML SSO](https://docs.secureauth.com/2104/en/amazon-web-services--aws---idp-initiated--integration-guide.html) - SecureAuth 웹 사이트 관련에 관한 이 문서는 SecureAuth 어플라이언스를 위해 SAML과 AWS의 통합을 설정하는 방법을 설명합니다. | 
| Shibboleth |  [AWS Management Console에 대한 SSO를 위해 Shibboleth를 사용하는 방법](https://aws.amazon.com/blogs/security/how-to-use-shibboleth-for-single-sign-on-to-the-aws-management-console) - AWS 보안 블로그의 이 항목에서는 Shibboleth를 설정하고 이를 AWS에 대한 자격 증명 공급자로 구성하는 방법을 단계별로 안내합니다. [세션 태그](id_session-tags.md)를 전달하도록 Shibboleth를 구성할 수 있습니다. | 

자세한 정보는 AWS 웹 사이트의 [IAM 파트너](https://aws.amazon.com/iam/partners/) 페이지를 참조하세요.

# 인증 응답에 대한 SAML 어설션 구성
<a name="id_roles_providers_create_saml_assertions"></a>

조직에서 사용자의 ID를 확인한 후 외부 ID 제공업체(idP)가 AWS 로그인 엔드포인트 URL로 인증 응답을 전송합니다. 이 응답은 [SAML 2.0을 위한 HTTP POST 바인딩](http://docs.oasis-open.org/security/saml/v2.0/saml-bindings-2.0-os.pdf) 표준을 준수하고 다음 요소 또는 *클레임*이 저장된 SAML 토큰을 포함하는 POST 요청입니다. SAML 호환 IdP에서 이 클레임들을 구성합니다. 이 클레임들을 입력하는 방법에 대한 지침에 대해서는 귀하의 IdP를 위한 문서를 참고하세요.

IdP가 AWS에 클레임이 포함된 리소스를 전송하는 경우 수신 클레임 중 다수가 AWS 콘텍스트 키에 매핑됩니다. 이러한 컨텍스트 키는 `Condition` 요소를 사용하여 IAM 정책에서 확인할 수 있습니다. 사용 가능한 매핑 목록은 [SAML 속성을 AWS 신뢰 정책 컨텍스트 키에 매핑](#saml-attribute-mapping) 섹션에 나와 있습니다.

## `Subject` 및 `NameID`
<a name="saml_subject-name-id"></a>

응답에 `SubjectConfirmation` 속성과 `SubjectConfirmationData` 속성을 둘 다 포함하는 `NotOnOrAfter` 요소와 함께 정확하게 `Recipient` 요소가 하나 있어야 합니다. 수신자 속성에는 AWS 로그인 엔드포인트 URL과 일치하는 값이 포함되어야 합니다. IdP는 이 속성을 참조하기 위해 `ACS`, `Recipient` 또는 `Target`이라는 용어를 사용할 수 있습니다.

SAML 암호화가 필요한 경우 로그인 URL에는 AWS가 SAML 공급업체에 할당하는 고유 식별자가 포함되어야 하며, 이 식별자는 ID 제공업체 세부 정보 페이지에서 확인할 수 있습니다. 다음 예제에서는 선택 사항인 `region-code`가 포함된 로그인 URL 형식을 보여줍니다.

`https://region-code.signin.aws.amazon.com/saml`

다음 예제에서 로그인 URL에는 로그인 경로에 /acs/를 추가해야 하는 고유 식별자가 포함됩니다.

`https://region-code.signin.aws.amazon.com/saml/acs/IdP-ID`

가능한 *region-code* 값 목록은 [AWS 로그인 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/signin-service.html)의 **리전(Region)** 열을 참조하세요. AWS 값의 경우 글로벌 로그인 엔드포인트 `https://signin.aws.amazon.com/saml`을 사용할 수도 있습니다.

`NameID` 요소는 영구 값, 임시 값을 갖거나 IdP 솔루션에서 제공한 전체 형식 URI로 구성될 수 있습니다. 영구 값은 `NameID`의 값이 세션 간 사용자에서도 동일하다는 것을 나타냅니다. 임시 값인 경우 각 세션마다 사용자의 `NameID` 값이 다릅니다. 싱글 사인온 상호작용은 다음과 같은 유형의 식별자를 지원합니다.
+ `urn:oasis:names:tc:SAML:2.0:nameid-format:persistent`
+ `urn:oasis:names:tc:SAML:2.0:nameid-format:transient`
+ `urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress`
+ `urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified`
+ `urn:oasis:names:tc:SAML:1.1:nameid-format:X509SubjectName`
+ `urn:oasis:names:tc:SAML:1.1:nameid-format:WindowsDomainQualifiedName`
+ `urn:oasis:names:tc:SAML:2.0:nameid-format:kerberos`
+ `urn:oasis:names:tc:SAML:2.0:nameid-format:entity`

다음 발췌문은 한 가지 예를 보여줍니다. 자신의 값을 표시된 것으로 대치합니다.

```
<Subject>
  <NameID Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent">_cbb88bf52c2510eabe00c1642d4643f41430fe25e3</NameID>
  <SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
    <SubjectConfirmationData NotOnOrAfter="2013-11-05T02:06:42.876Z" Recipient="https://region-code.signin.aws.amazon.com/saml/SAMLSP4SHN3UIS2D558H46"/>
  </SubjectConfirmation>
</Subject>
```

**중요**  
`saml:aud` 콘텍스트 키는 SAML *수신자* 속성에서 온 것으로, 그 이유는 이 속성이 `accounts.google.com:aud`와 같은 OIDC 대상 필드와 동일한 SAML이기 때문입니다.

## `PrincipalTag` SAML 속성
<a name="saml_role-session-tags"></a>

(선택 사항) `Name` 속성이 `https://aws.amazon.com/SAML/Attributes/PrincipalTag:{TagKey}`로 설정된 `Attribute` 요소를 사용할 수 있습니다. 이 요소를 사용하면 속성을 SAML 어설션에 세션 태그로 전달할 수 있습니다. 세션 태그에 대한 자세한 내용은 [AWS STS에서 세션 태그 전달](id_session-tags.md) 섹션을 참조하세요.

속성을 세션 태그로 전달하려면 태그 값을 지정하는 `AttributeValue` 요소를 포함합니다. 예를 들어, 태그 키 값 페어 `Project` = `Marketing` 및 `CostCenter` = `12345`를 전달하려면 다음 속성을 사용합니다. 각 태그에 대해 별도의 `Attribute` 요소를 포함합니다.

```
<Attribute Name="https://aws.amazon.com/SAML/Attributes/PrincipalTag:Project">
  <AttributeValue>Marketing</AttributeValue>
</Attribute>
<Attribute Name="https://aws.amazon.com/SAML/Attributes/PrincipalTag:CostCenter">
  <AttributeValue>12345</AttributeValue>
</Attribute>
```

위의 태그를 전이적으로 설정하려면 `Name` 속성이 `https://aws.amazon.com/SAML/Attributes/TransitiveTagKeys`로 설정된 다른 `Attribute` 요소를 포함합니다. 세션 태그를 전이적으로 설정하는 선택적 다중 값 속성입니다. 전이적 태그는 SAML 세션을 사용하여 AWS에서 다른 역할을 맡을 때 유지됩니다. 이를 [역할 체인](id_roles.md#iam-term-role-chaining)이라고 합니다. 예를 들어, `Principal` 및 `CostCenter` 태그를 전이적으로 설정하려면 다음 속성을 사용하여 키를 지정합니다.

```
<Attribute Name="https://aws.amazon.com/SAML/Attributes/TransitiveTagKeys">
  <AttributeValue>Project</AttributeValue>
  <AttributeValue>CostCenter</AttributeValue>
</Attribute>
```

## `Role` SAML 속성
<a name="saml_role-attribute"></a>

`Name` 속성이 `https://aws.amazon.com/SAML/Attributes/Role`로 설정된 `Attribute` 요소를 사용할 수 있습니다. 이 요소는 IdP에 의해 사용자가 매핑되는 IAM 자격 증명 공급자 및 역할을 나열하는 `AttributeValue` 요소를 한 개 이상 포함합니다. IAM 역할 및 IAM 자격 증명 공급자는 [AssumeRoleWithSAML](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html)에 전달되는 `RoleArn` 및 `PrincipalArn` 파라미터와 동일한 형식의 쉼표로 구분된 ARN 쌍으로 지정됩니다. 이 요소는 하나 이상의 역할 공급자 페어(`AttributeValue` 요소)를 포함해야 하며 여러 페어를 포함할 수 있습니다. 요소가 다수의 페어를 포함하는 경우 사용자가 WebSSO를 사용하여 AWS Management Console에 로그인할 때 어떤 역할을 수임할지 선택하라는 메시지가 표시됩니다.

**중요**  
`Name` 태그의 `Attribute` 속성 값은 대/소문자를 구분합니다. 정확하게 `https://aws.amazon.com/SAML/Attributes/Role`로 설정해야 합니다.

```
<Attribute Name="https://aws.amazon.com/SAML/Attributes/Role">
  <AttributeValue>arn:aws:iam::account-number:role/role-name1,arn:aws:iam::account-number:saml-provider/provider-name</AttributeValue>
  <AttributeValue>arn:aws:iam::account-number:role/role-name2,arn:aws:iam::account-number:saml-provider/provider-name</AttributeValue>
  <AttributeValue>arn:aws:iam::account-number:role/role-name3,arn:aws:iam::account-number:saml-provider/provider-name</AttributeValue>
</Attribute>
```

## `RoleSessionName` SAML 속성
<a name="saml_role-session-attribute"></a>

`Name` 속성이 `https://aws.amazon.com/SAML/Attributes/RoleSessionName`로 설정된 `Attribute` 요소를 사용할 수 있습니다. 이 요소에는 역할을 수임할 때 발급된 임시 자격 증명의 식별자를 제공하는 `AttributeValue` 요소가 하나 포함되어 있습니다. 이 요소를 사용하여 임시 자격 증명을 애플리케이션을 사용하는 사용자와 연결할 수 있습니다. 이 요소는 AWS Management Console 콘솔에서 사용자 정보를 표시하는 데 사용됩니다. `AttributeValue` 요소의 값은 2\$164자여야 하며 영숫자, 밑줄 및 다음 문자만 포함할 수 있습니다. **. , \$1 = @ -**(하이픈). 공백은 포함할 수 없습니다. 값은 일반적으로 사용자 ID(`john`) 또는 이메일 주소(`johndoe@example.com`)입니다. 사용자의 표시 이름(`John Doe`)과 같이 값이 공백을 포함하면 안 됩니다.

**중요**  
`Name` 태그의 `Attribute` 속성 값은 대/소문자를 구분합니다. 정확하게 `https://aws.amazon.com/SAML/Attributes/RoleSessionName`로 설정해야 합니다.

```
<Attribute Name="https://aws.amazon.com/SAML/Attributes/RoleSessionName">
  <AttributeValue>user-id-name</AttributeValue>
</Attribute>
```

## `SessionDuration` SAML 속성
<a name="saml_role-session-duration"></a>

(선택 사항) `Name` 속성이 `https://aws.amazon.com/SAML/Attributes/SessionDuration"`로 설정된 `Attribute` 요소를 사용할 수 있습니다. 이 요소에는 사용자가 AWS Management Console에 액세스할 수 있는 기간을 지정하는 `AttributeValue` 요소가 한 개 포함되어 있습니다. 이 시간이 지나면 새로운 임시 자격 증명을 요청해야 합니다. 이 값은 세션에 대한 기간(초)을 나타내는 정수입니다. 이 값은 900초(15분)\$143200초(12시간)일 수 있습니다. 이 속성이 없으면 자격 증명은 한 시간 동안 지속됩니다(`DurationSeconds` API의 `AssumeRoleWithSAML` 파라미터 기본값).

이 속성을 사용하려면 `https://region-code.signin.aws.amazon.com/saml`에서 콘솔 로그인 웹 엔드포인트를 통해 AWS Management Console에 대한 SSO(Single Sign-On) 액세스를 제공하도록 SAML 공급자를 구성해야 합니다. 가능한 *region-code* 값 목록은 [AWS 로그인 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/signin-service.html)의 **리전(Region)** 열을 참조하세요. URL `https://signin.aws.amazon.com/static/saml`을 사용할 수 있습니다. 이 속성은 AWS Management Console에 대해서만 세션을 연장할 수 있습니다. 다른 자격 증명의 수명을 늘릴 수는 없습니다. 그러나 `AssumeRoleWithSAML` API 호출에 존재하는 경우 세션 기간을 *단축*하는 데 사용할 수 있습니다. 호출에 의해 반환되는 자격 증명의 기본 수명은 60분입니다.

`SessionNotOnOrAfter` 속성도 정의된 경우 콘솔 세션 중 두 속성 `SessionDuration` 또는 `SessionNotOnOrAfter` 중 ***더 작은*** 값으로 최대값이 설정됩니다.

지속 기간을 더 늘려 콘솔 세션을 활성화하면 자격 증명이 손상될 위험이 높아집니다. 이러한 위험을 줄이려면 IAM 콘솔의 **역할 요약** 페이지에서 **세션 취소(Revoke Sessions)**를 선택하여 원하는 역할의 활성 콘솔 세션을 즉시 비활성화하면 됩니다. 자세한 내용은 [IAM 역할 임시 보안 자격 증명 취소](id_roles_use_revoke-sessions.md) 섹션을 참조하세요.

**중요**  
`Name` 태그의 `Attribute` 속성 값은 대/소문자를 구분합니다. 정확하게 `https://aws.amazon.com/SAML/Attributes/SessionDuration`로 설정해야 합니다.

```
<Attribute Name="https://aws.amazon.com/SAML/Attributes/SessionDuration">
  <AttributeValue>1800</AttributeValue>
</Attribute>
```

## `SourceIdentity` SAML 속성
<a name="saml_sourceidentity"></a>

(선택 사항) `Name` 속성이 `https://aws.amazon.com/SAML/Attributes/SourceIdentity`로 설정된 `Attribute` 요소를 사용할 수 있습니다. 이 요소에는 하나의 IAM 역할을 사용하는 사용자 또는 애플리케이션에 식별자를 제공하는 `AttributeValue` 요소가 포함됩니다. 소스 자격 증명의 값은 SAML 세션을 사용하여 AWS에서 다른 역할을 수임할 때([역할 체인](id_roles.md#iam-term-role-chaining)이라고 함) 유지됩니다. 소스 자격 증명 값은 역할 세션 중에 수행된 모든 작업의 요청에 표시됩니다. 역할 세션 중에는 설정된 값을 변경할 수 없습니다. 그런 다음 관리자는 AWS CloudTrail 로그를 통해 소스 자격 증명 정보를 모니터링하고 감사하여 공유 역할로 작업을 수행한 사용자를 결정합니다.

`AttributeValue` 요소의 값은 2\$164자여야 하며 영숫자, 밑줄 및 다음 문자만 포함할 수 있습니다. **. , \$1 = @ -**(하이픈). 공백은 포함할 수 없습니다. 이 값은 일반적으로 사용자 ID(`john`) 또는 이메일 주소(`johndoe@example.com`) 등 사용자와 연결된 속성입니다. 사용자의 표시 이름(`John Doe`)과 같이 값이 공백을 포함하면 안 됩니다. 소스 자격 증명 사용에 대한 자세한 내용은 [위임된 역할로 수행한 작업 모니터링 및 제어](id_credentials_temp_control-access_monitor.md) 섹션을 참조하세요.

**중요**  
[`SourceIdentity`](#saml_sourceidentity) 속성을 사용하도록 SAML 어설션이 구성된 경우 역할 신뢰 정책에도 `sts:SetSourceIdentity` 작업이 포함되어야 합니다. 그러지 않으면 수임 역할 작업이 실패합니다. 소스 자격 증명 사용에 대한 자세한 내용은 [위임된 역할로 수행한 작업 모니터링 및 제어](id_credentials_temp_control-access_monitor.md) 섹션을 참조하세요.

소스 자격 증명 속성을 전달하려면 소스 자격 증명의 값을 지정하는 `AttributeValue` 요소를 포함합니다. 예를 들어, 소스 자격 증명 `Diego`를 전달하려면 다음 속성을 사용합니다.

```
<Attribute Name="https://aws.amazon.com/SAML/Attributes/SourceIdentity">
  <AttributeValue>Diego</AttributeValue>
```

## SAML 속성을 AWS 신뢰 정책 컨텍스트 키에 매핑
<a name="saml-attribute-mapping"></a>

이 섹션의 표들은 흔히 사용되는 SAML 속성들을 나열하고, 그 속성들이 AWS에서 신뢰 정책 조건 콘텍스트 키에 어떻게 매핑되는지 보여줍니다. 이러한 키를 사용하여 역할에 대한 액세스를 제어할 수 있습니다. 이렇게 하려면 키를 SAML 액세스 요청과 함께 제공되는 어설션에 포함된 값과 비교합니다.

**중요**  
이런 키는 IAM 신뢰 정책(역할을 수임할 수 있는 사용자를 결정하는 정책)에서만 사용할 수 있고, 권한 정책에는 적용할 수 없습니다.

eduPerson 및 eduOrg 속성 표에서 값은 문자열 또는 문자열 목록의 형태로 입력됩니다. 문자열 값의 경우, `StringEquals` 또는 `StringLike` 조건을 이용해 IAM 신뢰 정책에서 이러한 값을 테스트할 수 있습니다. 문자열 목록이 포함된 값의 경우에는 `ForAnyValue` 및 `ForAllValues` [정책 설정 연산자](reference_policies_condition-single-vs-multi-valued-context-keys.md#reference_policies_condition-multi-valued-context-keys)를 사용해 신뢰 정책에서 값을 테스트합니다.

**참고**  
AWS 컨텍스트 키당 하나의 클레임만을 포함해야 합니다. 하나 이상의 클레임을 포함하는 경우, 하나의 클레임만 매핑됩니다.

다음 표는 eduPerson 및 eduOrg 속성을 보여줍니다.


| eduPerson 또는 eduOrg 속성(`Name` 키) | 이 AWS 콘텍스트 키(`FriendlyName` 키)에 매핑 | Type | 
| --- | --- | --- | 
|   `urn:oid:1.3.6.1.4.1.5923.1.1.1.1`   |   `eduPersonAffiliation`   |  문자열 목록  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.1.1.2`   |   `eduPersonNickname`   |  문자열 목록  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.1.1.3`   |   `eduPersonOrgDN`   |  문자열  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.1.1.4`   |   `eduPersonOrgUnitDN`   |  문자열 목록  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.1.1.5`   |   `eduPersonPrimaryAffiliation`   |  문자열  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.1.1.6`   |   `eduPersonPrincipalName`   |  문자열  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.1.1.7`   |   `eduPersonEntitlement`   |  문자열 목록  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.1.1.8`   |   `eduPersonPrimaryOrgUnitDN`   |  문자열  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.1.1.9`   |   `eduPersonScopedAffiliation`   |  문자열 목록  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.1.1.10`   |   `eduPersonTargetedID`   |  문자열 목록  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.1.1.11`   |   `eduPersonAssurance`   |  문자열 목록  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.2.1.2`   |   `eduOrgHomePageURI`   |  문자열 목록  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.2.1.3`   |   `eduOrgIdentityAuthNPolicyURI`   |  문자열 목록  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.2.1.4`   |   `eduOrgLegalName`   |  문자열 목록  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.2.1.5`   |   `eduOrgSuperiorURI`   |  문자열 목록  | 
|   `urn:oid:1.3.6.1.4.1.5923.1.2.1.6`   |   `eduOrgWhitePagesURI`   |  문자열 목록  | 
|   `urn:oid:2.5.4.3`   |   `cn`   |  문자열 목록  | 

다음 표는 Active Directory 속성을 보여줍니다.


| AD 속성 | 이 AWS 컨텍스트 키에 매핑 | Type | 
| --- | --- | --- | 
|  `http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name`  |  `name`  |  문자열  | 
|  `http://schemas.xmlsoap.org/claims/CommonName`  |  `commonName`  |  문자열  | 
|  `http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname`  |  `givenName`  |  문자열  | 
|  `http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname`  |  `surname`  |  문자열  | 
|  `http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress`  |  `mail`  |  문자열  | 
|  `http://schemas.microsoft.com/ws/2008/06/identity/claims/primarygroupsid`  |  `uid`  |  문자열  | 

다음 표는 X.500 속성을 보여줍니다.


| X.500 속성 | 이 AWS 컨텍스트 키에 매핑 | Type | 
| --- | --- | --- | 
|  `2.5.4.3`  |  `commonName`  |  문자열  | 
|  `2.5.4.4`  |  `surname`  |  문자열  | 
|  `2.4.5.42`  |  `givenName`  |  문자열  | 
|  `2.5.4.45`  |  `x500UniqueIdentifier`  |  문자열  | 
|  `0.9.2342.19200300100.1.1`  |  `uid`  |  문자열  | 
|  `0.9.2342.19200300100.1.3`  |  `mail`  |  문자열  | 
|  `0.9.2342.19200300.100.1.45`  |  `organizationStatus`  |  문자열  | 

# SAML 2.0 페더레이션 위탁자의 AWS Management Console 액세스 활성화
<a name="id_roles_providers_enable-console-saml"></a>

역할을 사용해 SAML 2.0 호환 ID 공급자(IdP) 및 AWS를 구성하여 SAML 페더레이션 보안 주체가 AWS Management Console에 액세스하도록 허용할 수 있습니다. 역할은 콘솔에서 작업을 수행할 수 있는 권한을 사용자에게 부여합니다. SAML 페더레이션 보안 주체가 다른 방법으로 AWS에 액세스할 수 있게 하려면 다음 주제 중 하나를 참조하세요.
+ AWS CLI: [IAM 역할로 전환(AWS CLI)](id_roles_use_switch-role-cli.md)
+ Tools for Windows PowerShell: [IAM 역할로 전환(Tools for Windows PowerShell)](id_roles_use_switch-role-twp.md)
+ AWS API: [IAM 역할로 전환(AWS API)](id_roles_use_switch-role-api.md)

## 개요
<a name="enable-console-saml-overview"></a>

다음 다이어그램은 SAML 지원 Single Sign-On의 흐름을 보여줍니다.

**참고**  
이와 같은 SAML의 특수한 사용이 [SAML 2.0 연동](id_roles_providers_saml.md)에 설명된 더 일반적인 사용과 차이가 나는 이유는, 이 워크플로우가 사용자를 대신해 AWS Management Console을 열기 때문입니다. 이를 위해서는 `AssumeRoleWithSAML` API를 직접 호출하는 대신 AWS 로그인 엔드포인트를 사용해야 합니다. 엔드포인트는 사용자를 위해 API를 호출하고 사용자의 브라우저를 AWS Management Console로 자동 리디렉션하는 URL을 반환합니다.

![\[SAML을 이용한 AWS 관리 콘솔에 대한 통합 인증(SSO)\]](http://docs.aws.amazon.com/ko_kr/IAM/latest/UserGuide/images/saml-based-sso-to-console.diagram.png)


다이어그램은 다음 단계들을 보여줍니다.

1. 사용자는 검색을 통해 조직의 포털에 이르러 옵션을 선택해 AWS Management Console로 갑니다. 조직에서 포털은 일반적으로, 조직과 AWS 간의 신뢰 교환을 처리하는 IdP 기능입니다. 예를 들어 Active Directory Federation Services에서 포털 URL은 `https://ADFSServiceName/adfs/ls/IdpInitiatedSignOn.aspx`입니다.

1. 포털은 사용자의 조직 내 자격 증명을 확인합니다.

1. 포털은 사용자를 식별하고 사용자에 대한 속성을 포함하는 어설션이 포함된 SAML 인증 응답을 생성합니다. 콘솔 세션의 유효 기간을 지정하는 `SessionDuration`이라는 SAML 어설션 속성을 포함하여 IdP를 구성할 수도 있습니다. 속성을 [세션 태그](id_session-tags.md)로 전달하도록 IdP를 구성할 수도 있습니다. 포털은 이 응답을 클라이언트 브라우저로 전송합니다.

1. 클라이언트 브라우저는 AWS Single Sign-On 엔드포인트로 리디렉션되고 SAML 어설션을 게시합니다.

1. 엔드포인트는 사용자 대신 임시 보안 자격 증명을 요청하고 그 자격 증명을 사용하는 콘솔 로그인 URL을 생성합니다.

1. AWS는 리디렉션으로 클라이언트에게 로그인 URL을 반송합니다.

1. 클라이언트 브라우저는 AWS Management Console로 리디렉션됩니다. SAML 인증 응답이 여러 개의 IAM 역할에 매핑되는 속성을 포함하는 경우 사용자는 콘솔에 액세스하는 데 사용할 역할을 선택하라는 메시지를 먼저 받습니다.

사용자의 시점에서는 그 과정을 투명하게 들여다볼 수 있습니다. 사용자는 조직의 내부 포털에서 시작하여 AWS 자격 증명을 제공할 필요 없이 AWS Management Console에서 마칩니다.

세부 단계들에 대한 링크를 따라 이 행동을 구성하는 방법을 개관하시려면 다음 섹션들을 참조하세요.

## AWS에 대한 SAML 공급자로 네트워크 구성하기
<a name="fedconsole-config-network-as-saml"></a>

귀하의 조직 네트워크의 내부에서 자격 증명 스토어(Windows Active Directory 등)를 구성해 Windows Active Directory Federation Services, Shibboleth와 같은 SAML 기반 IdP로 작업합니다. IdP를 사용하여 귀하의 조직을 IdP로 기술하고 인증 키를 포함하는 메타데이터 문서를 생성합니다. 또한 조직의 포털을 구성해, AWS Management Console에 대한 사용자 요청을 SAML 어설션을 이용한 인증을 위해 AWS SAML 엔드포인트로 라우팅합니다. metadata.xml 파일을 생성하기 위해 IdP를 어떻게 구성하는가는 IdP에 따라 다릅니다. 지침을 보시려면 IdP의 문서를 참고하시거나 지원되는 SAML 공급자들 중 다수의 웹 문서 링크가 있는 [서드 파티 SAML 솔루션 공급자를 AWS와 통합](id_roles_providers_saml_3rd-party.md)를 참조하세요.

## IAM에서 SAML 공급자 생성
<a name="fedconsole-create-saml-provider"></a>

그 다음에는 AWS Management Console에 로그인하여 IAM 콘솔로 이동합니다. 그곳에서 새로운 SAML 공급자를 생성합니다. 그 공급자는 조직의 Idp에 대한 정보를 담고 있는 IAM의 엔터티입니다. 이 과정의 일부로 이전 섹션에서 조직의 IdP 소프트웨어가 생성한 메타데이터 문서를 업로드합니다. 자세한 내용은 [IAM에서 SAML ID 공급자 생성](id_roles_providers_create_saml.md) 섹션을 참조하세요.

## AWS에서 SAML 페더레이션 보안 주체 대한 권한 구성
<a name="fedconsole-grantperms"></a>

다음 단계는 조직의 IdP와 IAM 간에 신뢰 관계를 수립하는 IAM 역할을 생성하는 것입니다. 이 역할은 연동을 위해 IdP를 보안 주체(신뢰할 수 있는 엔터티)로 식별해야 합니다. 그 역할은 조직의 IdP에 의해 인증된 사용자들이 AWS에서 할 수 있도록 허용되는 것이 무엇인지 정의하기도 합니다. IAM 콘솔을 사용하여 이 역할을 생성할 수 있습니다. 역할을 수임할 수 있는 사용자를 나타내는 신뢰 정책을 생성할 때 이전에 IAM에서 생성한 SAML 공급자를 지정합니다. 또한 역할을 맡을 수 있도록 사용자가 일치해야 하는 SAML 속성을 하나 이상 지정합니다. 예를 들어 SAML `[eduPersonOrgDN](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_iam-condition-keys.html#ck_edupersonorgdn)` 값이 `ExampleOrg`인 사용자에게만 로그인을 허용하도록 구성할 수 있습니다. 그 역할 마법사는 조건을 자동으로 추가해 `saml:aud` 속성을 테스트함으로써 그 역할이 AWS Management Console에 로그인하는 것을 위해서만 위임되는 것인지 확인합니다.

SAML 암호화가 필요한 경우 로그인 URL에는 AWS가 SAML 공급업체에 할당하는 고유 식별자가 포함되어야 하며, 이 식별자는 ID 제공업체 세부 정보 페이지에서 확인할 수 있습니다. 그 역할을 위한 신뢰 정책은 다음과 같을 수 있습니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Federated": "arn:aws:iam::111122223333:saml-provider/ExampleOrgSSOProvider"
            },
            "Action": "sts:AssumeRoleWithSAML",
            "Condition": {
                "StringEquals": {
                    "saml:edupersonorgdn": "ExampleOrg",
                    "saml:aud": "https://region-code.signin.aws.amazon.com/saml/acs/SAMLSP4SHN3UIS2D558H46"
                }
            }
        }
    ]
}
```

------

**참고**  
역할 신뢰 정책에 사용되는 SAML IDP는 해당 역할이 속한 계정과 동일한 계정에 있어야 합니다.

`https://region-code.signin.aws.amazon.com/static/saml-metadata.xml`에서 `saml:aud` 속성에 대해 리전별 엔드포인트를 사용하는 것이 좋습니다. 가능한 *region-code* 값 목록은 [AWS 로그인 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/signin-service.html)의 **리전(Region)** 열을 참조하세요.

역할의 [권한 정책](access_policies.md)에 대해 어떤 역할, 사용자, 또는 그룹에 사용하는 방식으로 권한을 지정합니다. 예를 들어, 조직의 사용자가 Amazon EC2 인스턴스를 관리하도록 허용될 경우 권한 정책에서 명시적으로 Amazon EC2 작업을 허용합니다. 이렇게 하려면 **Amazon EC2 모든 액세스** 관리형 정책과 같은 [관리형 정책](access_policies_manage-attach-detach.md)을 할당합니다.

SAML IdP를 위한 역할 생성에 관한 자세한 정보는 [SAML 2.0 페더레이션을 위한 역할 생성(콘솔)](id_roles_create_for-idp_saml.md)을 참조하세요.

## 구성 완료 및 SAML 어설션 생성
<a name="fedconsole-configassertions"></a>

`https://region-code.signin.aws.amazon.com/static/saml-metadata.xml` 또는 `https://signin.aws.amazon.com/static/saml-metadata.xml`에 있는 `saml-metadata.xml` 파일을 설치하여 AWS가 서비스 제공업체임을 SAML IdP에 알립니다. SAMl 암호화가 필요한 경우 파일은 `https://region-code.signin.aws.amazon.com/static/saml/SAMLSP4SHN3UIS2D558H46/saml-metadata.xml`에서 찾을 수 있습니다.

가능한 *region-code* 값 목록은 [AWS 로그인 엔드포인트](https://docs.aws.amazon.com/general/latest/gr/signin-service.html)의 **리전(Region)** 열을 참조하세요.

그 파일의 설치 방법은 IdP에 따라 다릅니다. 어떤 IdP는 URL을 입력할 수 있는 옵션을 제공하고, 그 결과 IdP가 그 파일을 획득하고 설치해 줍니다. 다른 IdP들의 경우에는 URL에서 파일을 내려받은 다음 로컬 파일로 제공해야 합니다. 세부 정보를 보시려면 IdP의 문서를 참고하시거나 지원되는 SAML 공급자들 중 다수의 웹 문서 링크가 있는 [서드 파티 SAML 솔루션 공급자를 AWS와 통합](id_roles_providers_saml_3rd-party.md)를 참조하세요.

또한, IdP가 인증 응답의 일부로 AWS에 SAML 속성으로 전달하기 원하는 정보를 구성합니다. 이 정보의 대부분은 정책에서 평가할 수 있는 조건 컨텍스트 키로 AWS에 나타납니다. 이러한 조건 키를 사용하면 올바른 컨텍스트의 승인된 사용자에게만 AWS 리소스에 액세스할 수 있는 권한이 부여됩니다. 콘솔을 사용할 수 있는 시간을 제한하는 시간 창을 지정할 수 있습니다. 또한 사용자가 콘솔에 액세스할 수 있는 최대 시간(최대 12시간)을 지정할 수 있습니다. 사용자는 이 시간 이후에 자신의 자격 증명을 새로 고쳐야 합니다. 자세한 내용은 [인증 응답에 대한 SAML 어설션 구성](id_roles_providers_create_saml_assertions.md) 섹션을 참조하세요.

# 브라우저에서 SAML 응답 보기
<a name="troubleshoot_saml_view-saml-response"></a>

다음 절차에서는 SAML 2.0 관련 문제를 해결할 때 브라우저에서 서비스 공급자의 SAML 응답을 보는 방법에 대해 설명합니다.

브라우저에서 문제를 재현할 수 있는 페이지로 이동합니다. 그런 다음 해당 브라우저의 단계를 따릅니다.

**Topics**
+ [Google Chrome](#chrome)
+ [Mozilla Firefox](#firefox)
+ [Apple Safari](#safari)
+ [Base64 인코딩 SAML 응답에 대해 해야 할 작업](#whatnext)

## Google Chrome
<a name="chrome"></a>

**Chrome에서 SAML 응답을 보려면**

이 단계는 Google Chrome의 버전 106.0.5249.103(공식 빌드)(arm64)을 사용하여 테스트되었습니다. 다른 버전을 사용할 경우 그에 맞게 단계를 적용해야 할 수 있습니다.

1. **F12**를 눌러 **Developer Tools**(개발자 도구) 콘솔을 시작합니다.

1. **Network**(네트워크) 탭을 선택한 다음 **Developer Tools**(개발자 도구) 창의 왼쪽 상단에서 **Preserve log**(로그 보존)을 선택합니다.

1. 문제를 재현합니다.

1. (선택 사항) **Developer Tools**(개발자 도구) **Network**(네트워크) 로그 창에 **Method**(메서드) 열이 보이지 않는 경우 아무 열 레이블에서 마우스 오른쪽 버튼으로 클릭하고 **Method**(메서드)를 선택하여 열을 추가할 수 있습니다.

1. **Developer Tools**(개발자 도구) **Network**(네트워크) 로그 창에서 **SAML Post**(SAML 게시물)을 찾습니다. 해당 행을 선택하고 상단에서 **Payload**(페이로드) 탭을 봅니다. 인코딩된 요청을 포함하는 **SAMLResponse** 요소를 확인합니다. 연결된 값은 Base64 인코딩 응답입니다.

## Mozilla Firefox
<a name="firefox"></a>

**Firefox에서 SAML 응답을 보려면**

이 절차는 Mozilla Firefox 버전 105.0.3(64-bit)에서 테스트했습니다. 다른 버전을 사용할 경우 그에 맞게 단계를 적용해야 할 수 있습니다.

1. **F12**를 눌러 **Web Developer Tools**(웹 개발자 도구) 콘솔을 시작합니다.

1. **네트워크** 탭을 선택합니다.

1. **Web Developer Tools**(웹 개발자 도구) 창 상단 오른쪽에서 옵션(작은 기어 모양 아이콘)을 클릭합니다. **Persist logs**(로그 유지)를 선택합니다.

1. 문제를 재현합니다.

1. (선택 사항) **Web Developer Tools**(웹 개발자 도구) **Network**(네트워크) 로그 창에 **Method**(메서드) 열이 보이지 않는 경우 아무 열 레이블에서 마우스 오른쪽 버튼으로 클릭하고 **Method**(메서드)를 선택하여 열을 추가할 수 있습니다.

1. 테이블에서 **POST** **SAML**을 확인합니다. 해당 행을 선택한 다음 **Request**(요청) 탭을 보고 **SAMLResponse** 요소를 찾습니다. 연결된 값은 Base64 인코딩 응답입니다.

## Apple Safari
<a name="safari"></a>

**Safari에서 SAML 응답을 보려면**

이 단계는 Apple Safari 버전 16.0(17614.1.25.9.10, 17614)을 사용하여 테스트되었습니다. 다른 버전을 사용할 경우 그에 맞게 단계를 적용해야 할 수 있습니다.

1. Safari에서 Web Inspector를 사용하도록 설정합니다. **기본 설정** 창을 열고 **고급** 탭을 선택한 후 **메뉴 표시줄에 Develop 메뉴 표시(Show Develop menu in the menu bar)**를 선택합니다.

1. 이제 Web Inspector를 열 수 있습니다. 메뉴 막대에서 **Develop**(개발)을 선택한 다음 **Show Web Inspector**(Web Inspector 표시)를 선택합니다.

1. **네트워크** 탭을 선택합니다.

1. **Web Inspector** 창의 왼쪽 상단에서 옵션(세 개의 수평선이 포함된 작은 원형 아이콘)을 선택합니다. **Preserve Log**(로그 보존)을 선택합니다.

1. (선택 사항) **Web Inspector** **Network**(네트워크) 로그 창에 **Method**(메서드) 열이 보이지 않는 경우 아무 열 레이블에서 마우스 오른쪽 버튼으로 클릭하고 **Method**(메서드)를 선택하여 열을 추가할 수 있습니다.

1. 문제를 재현합니다.

1. 테이블에서 **POST** **SAML**을 확인합니다. 해당 행을 선택하고 헤더(Headers) 탭을 봅니다.

1. 인코딩된 요청을 포함하는 **SAMLResponse** 요소를 확인합니다. 아래로 스크롤하여 `Request Data`라는 `SAMLResponse`를 확인합니다. 연결된 값은 Base64 인코딩 응답입니다.

## Base64 인코딩 SAML 응답에 대해 해야 할 작업
<a name="whatnext"></a>

브라우저에서 Base64 인코딩 SAML 응답 요소를 확인했으면 복사한 후 Base-64 디코딩 도구에서 사용하여 XML 태그 응답을 추출합니다.

**보안 팁**  
표시되는 SAML 응답 데이터에는 중요한 보안 데이터가 포함되어 있을 수 있으므로 *온라인* base64 디코더를 사용하지 않을 것을 권장합니다. 대신 로컬 컴퓨터에 설치된 도구를 사용하십시오. 로컬 컴퓨터에 설치된 도구는 네트워크를 통해 SAML 데이터를 전송하지 않습니다.

**Windows 시스템용 내장 옵션(PowerShell):**

```
PS C:\> [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String("base64encodedtext"))
```

**MacOS 및 Linux 시스템용 내장 옵션:**

```
$ echo "base64encodedtext" | base64 --decode
```

**디코딩된 파일의 값 검토**  
디코딩된 SAML 응답 파일의 값을 검토합니다.
+ saml:NameID 속성 값이 인증된 사용자의 사용자 이름과 일치하는지 확인합니다.
+ https://aws.amazon.com/SAML/Attributes/Role 값을 검토합니다. ARN과 SAML 공급자는 대소문자를 구분하며 [ARN](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html)은 계정의 리소스와 일치해야 합니다.
+ https://aws.amazon.com/SAML/Attributes/RoleSessionName 값을 검토합니다. 값은 [클레임 규칙](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_saml_relying-party.html)에 있는 값과 일치해야 합니다.
+ 이메일 주소 또는 계정 이름의 속성 값을 구성하는 경우 값이 올바른지 확인합니다. 값은 인증된 사용자의 이메일 주소 또는 계정 이름과 일치해야 합니다.

**오류 확인 및 구성 확인**  
값에 오류가 있는지 확인하고 다음 구성이 올바른지 확인합니다.
+ 클레임 규칙이 필수 요소를 충족하고 모든 ARN이 정확합니다. 자세한 내용은 [신뢰 당사자 신뢰 및 클레임 추가를 통해 SAML 2.0 IdP 구성](id_roles_providers_create_saml_relying-party.md) 섹션을 참조하세요.
+ SAML 공급자에서 IdP의 최신 메타데이터 파일을 AWS에 업로드했습니다. 자세한 내용은 [SAML 2.0 페더레이션 위탁자의 AWS Management Console 액세스 활성화](id_roles_providers_enable-console-saml.md) 섹션을 참조하세요.
+ IAM 역할의 신뢰 정책을 올바르게 구성했습니다. 자세한 내용은 [역할 수임 방법](id_roles_manage-assume.md) 섹션을 참조하세요.