認証レスポンス用の SAML アサーションを設定する
組織内でユーザーの ID が確認すると、外部 ID プロバイダー (IdP) が AWS サインインエンドポイント URL に認証応答を送信します。このレスポンスは、HTTP POST Binding for SAML 2.0
IdP が AWS へのクレームを含むレスポンスを送信すると、多くの受信クレームは AWS コンテキストキーにマッピングされます。これらのコンテキストキーは Condition 要素を使用して IAM ポリシーにチェックインすることができます。使用可能なマッピングの一覧は、「SAML 属性の AWS 信頼ポリシーコンテキストキーへのマッピング」に掲載されています。
Subject および NameID
応答には、NotOnOrAfter 属性と Recipient 属性の両方を含む SubjectConfirmationData 要素を持つ SubjectConfirmation 要素が 1 つだけ含まれている必要があります。受取人属性には、AWS サインインエンドポイント URL に一致する値を含める必要があります。IdPによっては、この属性を ACS、Recipient、または Target と呼ぶことがあります。
SAML 暗号化が必要な場合、サインイン URL に SAML プロバイダーに割り当てる一意の識別子 AWS が含まれている必要があります。この識別子は 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 サインインエンドポイント」の [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 受取人属性から取得します。この属性は、SAML バージョンの OIDC オーディエンスフィールドと言えるものだからです (例えば、accounts.google.com:aud)。
PrincipalTag SAML 属性
(オプション) Name 属性が https://aws.amazon.com/SAML/Attributes/PrincipalTag: に設定された {TagKey}Attribute 要素を使用できます。この要素を使用すると、SAML アサーションでセッションタグとして属性を渡すことができます。セッションタグの詳細については、「AWS STS でセッションタグを渡します」を参照してください。
属性をセッションタグとして渡すには、タグの値を指定する 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>
上記のタグを推移的として設定するには、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>
Role SAML 属性
Name 属性が https://aws.amazon.com/SAML/Attributes/Role に設定された Attribute 要素を使用できます。この要素には、IdP によってユーザーがマッピングされている IAM SAML ID プロバイダーおよびロールおよびを一覧表示する AttributeValue 要素が 1 つ以上含まれます。IAM ロールと IAM ID プロバイダーは、AssumeRoleWithSAMLに渡される RoleArn パラメーターと PrincipalArn パラメーターと同じ形式でコンマ区切りの ARN のペアとして指定されます。この要素には、少なくとも 1 つのロールとプロバイダーのペア(AttributeValue 要素)を含める必要があり、複数のペアを含めることができます。要素に複数のペアを含める場合、ユーザーが WebSSO を使用して AWS マネジメントコンソール にサインインすると、引き受けるロールを選択する画面が表示されます。
重要
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 属性
Name 属性が https://aws.amazon.com/SAML/Attributes/RoleSessionName に設定された Attribute 要素を使用できます。この要素には、ロールが引き継がれたときに発行される一時的な認証情報の識別子を提供する AttributeValue 要素が1つ含まれています。これを使用して、アプリケーションを使用しているユーザーに一時的な認証情報を関連付けることができます。この要素は、AWS マネジメントコンソールでユーザー情報を表示するときに使用されます。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 属性
(オプション) Name 属性が https://aws.amazon.com/SAML/Attributes/SessionDuration" に設定された Attribute 要素を使用できます。この要素には、ユーザーが新しい一時的な認証情報をリクエストする前に、ユーザーが AWS マネジメントコンソール にアクセスできる時間を指定する 1 つの AttributeValue 要素が含まれます。値は、セッションの秒数を表す整数です。値の範囲は 900 秒 (15 分) から 43200 秒 (12 時間) です。この属性が存在しない場合は、認証情報は 1 時間有効です (DurationSeconds API の AssumeRoleWithSAML パラメータのデフォルト値)。
この属性を使用するには、AWS マネジメントコンソール でコンソールのサインインウェブエンドポイントを通じて https:// へのシングルサインオンアクセスを提供する SAML プロバイダーを設定する必要があります。実行可能な region-code.signin.aws.amazon.com/samlregion-code 値のリストについては、「AWS サインインエンドポイント」の [Region] (リージョン) 列を参照します。任意で次のURL https://signin.aws.amazon.com/static/saml が使用できます。この属性が AWS マネジメントコンソール にのみセッションを拡張することに注意してください。他の認証情報の存続期間を延長することはできません。ただし、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>
SourceIdentity SAML 属性
(オプション) Name 属性が https://aws.amazon.com/SAML/Attributes/SourceIdentity に設定された Attribute 要素を使用できます。この要素には、1 つのIAM ロールを使用しているユーザーまたはアプリケーションの識別子を提供する AttributeValue 要素が含まれています。SAML セッションを使用して、ロールチェーンと呼ばれる AWS の別のロールを引き受ける場合、ソースIDの値は保持されます。ソース ID の値は、ロールセッション中に実行されるすべてのアクションのリクエストに存在します。設定される値は、ロールセッション中に変更できません。その後、管理者は AWS CloudTrail ログを使用して、ソース ID 情報をモニタリングおよび監査し、共有ロールでアクションを実行したユーザーを特定します。
AttributeValue 要素の値は 2~64 文字で、英数字、アンダースコア、および . , + = @ - (ハイフン).のみを含めることができます。スペースを含めることはできません。値は通常、ユーザーID(john)やメールアドレス(johndoe@example.com)など、ユーザーに関連付けられている属性です。ユーザーの表示名 (John Doe) のように、スペースを含む値とすることはできません。ソースアイデンティティの使用の詳細については、「引き受けたロールで実行されるアクションのモニタリングと制御」を参照してください。
重要
SAML アサーションが SourceIdentity 属性を使用するように設定されている場合、信頼ポリシーにも sts:SetSourceIdentity アクションを含める必要があります。ソースアイデンティティの使用の詳細については、「引き受けたロールで実行されるアクションのモニタリングと制御」を参照してください。
ソース ID 属性を渡すには、ソース ID の値を指定する AttributeValue 要素を含めます。たとえば、ソース ID Diego を渡すには次の属性を使用します。
<Attribute Name="https://aws.amazon.com/SAML/Attributes/SourceIdentity"> <AttributeValue>Diego</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 キー) へのマッピング |
タイプ |
|---|---|---|
|
|
|
文字列のリスト |
|
|
|
文字列のリスト |
|
|
|
String |
|
|
|
文字列のリスト |
|
|
|
String |
|
|
|
String |
|
|
|
文字列のリスト |
|
|
|
String |
|
|
|
文字列のリスト |
|
|
|
文字列のリスト |
|
|
|
文字列のリスト |
|
|
|
文字列のリスト |
|
|
|
文字列のリスト |
|
|
|
文字列のリスト |
|
|
|
文字列のリスト |
|
|
|
文字列のリスト |
|
|
|
文字列のリスト |
次の表は、Active Directory 属性を示しています。
| AD 属性 | この AWS コンテキストキーへのマッピング | タイプ |
|---|---|---|
|
|
|
文字列 |
|
|
|
文字列 |
|
|
|
文字列 |
|
|
|
文字列 |
|
|
|
文字列 |
|
|
|
String |
次の表は、X.500 属性を示しています。
| X.500 属性 | この AWSコンテキストキーへのマッピング | タイプ |
|---|---|---|
|
|
|
文字列 |
|
|
|
文字列 |
|
|
|
文字列 |
|
|
|
文字列 |
|
|
|
文字列 |
|
|
|
文字列 |
|
|
|
String |