認証レスポンスの 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 の受取人の属性から saml:aud コンテキストキーがマッピングされます。これは、accounts.google.com:aud など、OIDC の対象者のフィールドに等しい SAML であるためです。

SAML PrincipalTag Attribute

(オプション) Name 属性が https://aws.amazon.com/SAML/Attributes/PrincipalTag:{TagKey} に設定された Attribute 要素を使用できます。この要素を使用すると、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>

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

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

SAML Role Attribute

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

Name 属性が https://aws.amazon.com/SAML/Attributes/RoleSessionName に設定された Attribute 要素を使用できます。この要素にはロールが引き受けられたときに発行される一時的な認証情報用の識別子を提供する 1 つの AttributeValue 要素が含まれています。これを使用して、一時的な認証情報をアプリケーションを使用しているユーザーと関連付けることができます。この要素は、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

(オプション)Name 属性が https://aws.amazon.com/SAML/Attributes/SessionDuration" に設定された Attribute 要素を使用できます。この要素には、ユーザーが新しい一時的な認証情報をリクエストする前に、ユーザーが AWS Management Console にアクセスできる時間を指定する 1 つの AttributeValue 要素が含まれます。値は、セッションの秒数を表す整数です。値の範囲は 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 属性も定義されている場合、SessionDuration または SessionNotOnOrAfter の 2 つの属性の小さい方の値によってコンソールセッションの最大継続時間が確立されることにも注意してください。

コンソールセッションを拡張された期間有効にする場合、認証情報が侵害されるリスクが高まります。このリスクを軽減するには、IAM コンソールの [ロールの概要] ページで、[セッションの無効化] を選択して、どのロールのアクティブなコンソールセッションもすぐに無効にできます。詳細については、「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

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

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

重要

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

ソース 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

文字列