

# 인증 응답에 대한 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\~64자여야 하며 영숫자, 밑줄 및 다음 문자만 포함할 수 있습니다. **. , \+ = @ -**(하이픈). 공백은 포함할 수 없습니다. 값은 일반적으로 사용자 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분)\~43200초(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\~64자여야 하며 영숫자, 밑줄 및 다음 문자만 포함할 수 있습니다. **. , \+ = @ -**(하이픈). 공백은 포함할 수 없습니다. 이 값은 일반적으로 사용자 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`  |  문자열  | 