認証レスポンスの SAML アサーションを設定する - AWS Identity and Access Management

認証レスポンスの SAML アサーションを設定する

組織内でユーザーの ID が確認されたら、外部 ID プロバイダー (IdP) は AWS SAML エンドポイント (https://signin.aws.amazon.com/saml) に認証レスポンスを送信します。このレスポンスは、HTTP POST Binding for SAML 2.0 標準に従った SAML トークンを含み、さらに以下の要素またはクレームを含む POST リクエストであることが必要です。これらのクレームを SAML 互換 IdP に設定します。これらのクレームの入力方法については、IdP のドキュメントを参照してください。

IdP が AWS へのクレームを含むレスポンスを送信すると、多くの受信クレームは AWS コンテキストキーにマッピングされます。これらのコンテキストキーは Condition 要素を使用して IAM ポリシーにチェックインすることができます。使用可能なマッピングの一覧は、「SAML 属性の AWS 信頼ポリシーコンテキストキーへのマッピング」に掲載されています。

Subject、、および NameID

例を以下に示します。マークされた値を独自の値に置き換えます。SubjectConfirmation 属性と SubjectConfirmationData 属性の両方が含まれる NotOnOrAfter 要素を持つ Recipient 要素が 1 つだけ必要です。これらの属性内の値は、以下の例に示すように、AWS エンドポイント (https://signin.aws.amazon.com/saml) と一致している必要があります。シングルサインオンのやり取りでサポートされている名前の識別子の形式については、Oracle Sun OpenSSO エンタープライズ管理リファレンスを参照してください。

<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://signin.aws.amazon.com/saml"/> </SubjectConfirmation> </Subject>

AudienceRestriction、、および Audience

セキュリティ上の理由から、IdP が AWS に送信する SAML アサーションに AWS を対象者として含める必要があります。Audience 要素の値で、https://signin.aws.amazon.com/saml または urn:amazon:webservices を指定します。次の SAML アサーションからの XML スニペットの例は、このキーを IdP で指定する方法を示しています。どちらかのサンプルがお客様のユースケースに適用されます。

<Conditions> <AudienceRestriction> <Audience>https://signin.aws.amazon.com/saml</Audience> </AudienceRestriction> </Conditions>
<Conditions> <AudienceRestriction> <Audience>urn:amazon:webservices</Audience> </AudienceRestriction> </Conditions>
重要

IdPからの SAML アサーションの SAML AudienceRestriction 値は、IAMポリシーでテストできる saml:aud コンテキストキーにマップされません。代わりに、saml:aud コンテキストキーは SAML受取人属性から取得されます。これは、たとえば accounts.google.com:aud による OIDC オーディエンスフィールドと同等の SAML であるためです。

SAML PrincipalTag Attribute

(オプション) Attribute 属性が Name に設定された https://aws.amazon.com/SAML/Attributes/PrincipalTag:{TagKey} 要素を使用できます。この要素を使用すると、SAML アサーションでセッションタグとして属性を渡すことができます。セッションタグの詳細については、「AWS STS でのセッションタグの受け渡し」を参照してください。

属性をセッションタグとして渡すには、タグの値を指定する AttributeValue 要素を含めます。たとえば、タグのキーバリューのペア Project = MarketingCostCenter = 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>

上記のタグを推移的として設定するには、Attribute 属性を Name に設定した別の https://aws.amazon.com/SAML/Attributes/TransitiveTagKeys 要素を含めます。これは、セッションタグを推移的として設定するオプションの多値属性です。推移タグは、SAML セッションを使用して AWS で別のロールを引き受けるときに保持されます。これは、ロールの連鎖と呼ばれます。たとえば、Principal タグ と CostCenter タグの両方を推移的として設定するには、次の属性を使用してキーを指定します。

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

SAML Role Attribute

Attribute 属性が Name に設定された https://aws.amazon.com/SAML/Attributes/Role 要素を使用できます。この要素には、IdP によってユーザーがマッピングされている IAM SAML ID プロバイダーおよびロールおよびを一覧表示する AttributeValue 要素が 1 つ以上含まれます。IAM ロールと IAM ID プロバイダーは、AssumeRoleWithSAMLに渡される RoleArn パラメーターと PrincipalArn パラメーターと同じ形式でコンマ区切りの ARN のペアとして指定されます。この要素には、少なくとも 1 つのロールとプロバイダーのペア(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>

SAML RoleSessionName Attribute

Attribute 属性が Name に設定された https://aws.amazon.com/SAML/Attributes/RoleSessionName 要素を使用できます。この要素には、ロールが引き継がれたときに発行される一時的な認証情報の識別子を提供する AttributeValue 要素が1つ含まれています。これを使用して、アプリケーションを使用しているユーザーに一時的な認証情報を関連付けることができます。この要素は、AWS Management Consoleでユーザー情報を表示するときに使用されます。AttributeValue 要素の値は 2~64 文字で、英数字、アンダースコア、および . , + = @ - (ハイフン).のみを含めることができます。スペースを含めることはできません。通常、この値はユーザー ID (johndoe) またはメールアドレス (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>

SAML SessionDuration Attribute

(オプション) Attribute 属性が Name に設定された https://aws.amazon.com/SAML/Attributes/SessionDuration" 要素を使用できます。この要素には、ユーザーが新しい一時的な認証情報をリクエストする前に、ユーザーが AttributeValue にアクセスできる時間を指定する 1 つの AWS Management Console 要素が含まれます。値は、セッションの秒数を表す整数です。値の範囲は 900 秒 (15 分) から 43200 秒 (12 時間) です。この属性が存在しない場合は、認証情報は 1 時間有効です (DurationSeconds API の AssumeRoleWithSAML パラメータのデフォルト値)。

この属性を使用するには、AWS Management Console でコンソールのサインインウェブエンドポイントを通じて https://signin.aws.amazon.com/saml へのシングルサインオンアクセスを提供する SAML プロバイダーを設定する必要があります。この属性が AWS Management Console にのみセッションを拡張することに注意してください。他の認証情報の存続期間を延長することはできません。ただし、AssumeRoleWithSAML API コール中に存在する場合は、セッション期間を短縮するために使用できます。呼び出しによって返される認証情報のデフォルトの有効期間は 60 分です。

また、SessionNotOnOrAfter 属性も定義されている場合は、2つの属性の小さい方の値、SessionDuration または SessionNotOnOrAfter がコンソールセッションの最大期間を確立することにも注意してください。

コンソールセッションを拡張された期間有効にする場合、認証情報が侵害されるリスクが高まります。このリスクを軽減するには、IAM コンソールの [Role Summary] ページで、[Revoke Sessions] を選択して、どのロールのアクティブなコンソールセッションもすぐに無効にできます。詳細については、「IAM ロールの一時的なセキュリティ認証情報の取り消し」を参照してください。

重要

Name タグの Attribute 属性の値は大文字と小文字が区別されます。これは厳密に https://aws.amazon.com/SAML/Attributes/SessionDuration に設定する必要があります。

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

SAML SourceIdentity Attribute

(オプション) Attribute 属性が Name に設定された https://aws.amazon.com/SAML/Attributes/SourceIdentity 要素を使用できます。この要素には、1 つのIAM ロールを使用しているユーザーまたはアプリケーションの識別子を提供する AttributeValue 要素が含まれています。SAML セッションを使用して、ロールチェーンと呼ばれる AWS の別のロールを引き受ける場合、ソースIDの値は保持されます。ソース ID の値は、ロールセッション中に実行されるすべてのアクションのリクエストに存在します。設定される値は、ロールセッション中に変更できません。その後、管理者は AWS CloudTrail ログを使用して、ソース ID 情報をモニタリングおよび監査し、共有ロールでアクションを実行したユーザーを特定します。

AttributeValue 要素の値は 2~64 文字で、英数字、アンダースコア、および . , + = @ - (ハイフン).のみを含めることができます。スペースを含めることはできません。値は通常、ユーザーID(johndoe)やメールアドレス(johndoe@example.com)など、ユーザーに関連付けられている属性です。ユーザーの表示名 (John Doe) のように、スペースを含む値とすることはできません。ソースアイデンティティの使用の詳細については、「引き受けたロールで実行されるアクションのモニタリングと制御」を参照してください。

重要

SAML アサーションが SourceIdentity 属性を使用するように設定されている場合、信頼ポリシーにも sts:SetSourceIdentity アクションを含める必要があります。ソースアイデンティティの使用の詳細については、「引き受けたロールで実行されるアクションのモニタリングと制御」を参照してください。

ソース ID 属性を渡すには、ソース ID の値を指定する AttributeValue 要素を含めます。たとえば、ソース ID DiegoRamirez を渡すには次の属性を使用します。

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

SAML 属性の AWS 信頼ポリシーコンテキストキーへのマッピング

このセクションの表では、よく使用される SAML 属性や、それらと AWS の信頼ポリシー条件コンテキストキーのマッピングを一覧で示します。これらのキーを使用して、ロールへのアクセスを制御できます。そのためには、SAML アクセスリクエストに付随するアサーションに含まれる値とキーを比較します。

重要

これらのキーは、IAM 信頼ポリシー (誰がロールを利用するかを定義するポリシー) でのみ利用でき、アクセス許可ポリシーには適用できません。

eduPerson および eduOrg 属性の表では、値は文字列または文字列のリストとして型付けされています。文字列値の場合、StringEquals または StringLike 条件を使用して、IAM 信頼ポリシーでこれらの値をテストできます。文字列のリストを含む値の場合、ForAnyValue および ForAllValues ポリシー set 演算子を使用して、信頼ポリシーで値をテストできます。

注記

AWS コンテキストキーごとに含めることができるクレームは 1 つだけです。複数含めた場合は、1 つのクレームのみが対応付けられます。

eduPerson 属性と eduOrg 属性
eduPerson 属性または eduOrg 属性 (Name キー) この AWS コンテキストキー (FriendlyName キー) へのマッピング タイプ

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 コンテキストキーへのマッピング タイプ

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コンテキストキーへのマッピング タイプ

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

文字列