ロールベース SSO の SAML レスポンスと SAML アサーションに含める必要がある要素と、任意の要素を一覧で示します。
背景情報
SAML 2.0 ベースのシングルサインオン (SSO) フローでは、企業ユーザーが ID プロバイダー (IdP) にサインインした後、IdP は SAML 2.0 HTTP-POST バインディングに従って、SAML アサーションを含む認証応答を生成します。ブラウザまたはアプリケーションは、この応答を自動的に Alibaba Cloud に転送します。Alibaba Cloud はアサーションを使用してユーザーのサインイン状態を検証し、サインイン主体を抽出します。アサーションには Alibaba Cloud が要求するすべての要素を含める必要があります。含まれていない場合、SSO は失敗します。
SAML レスポンス
IdP は、以下に示す必須要素をすべて含む SAML レスポンスを Alibaba Cloud に送信する必要があります。いずれかの要素が欠落している場合、SSO は失敗します。
<saml2p:Response>
<saml2:Issuer>...</saml2:Issuer>
<saml2p:Status>
...
</saml2p:Status>
<saml2:Assertion>
<saml2:Issuer>...</saml2:Issuer>
<ds:Signature>
...
</ds:Signature>
<saml2:Subject>
<saml2:NameID>${NameID}</saml2:NameID>
<saml2:SubjectConfirmation>
...
</saml2:SubjectConfirmation>
</saml2:Subject>
<saml2:Conditions>
<saml2:AudienceRestriction>
<saml2:Audience>${Audience}</saml2:Audience>
</saml2:AudienceRestriction>
</saml2:Conditions>
<saml2:AuthnStatement>
...
</saml2:AuthnStatement>
<saml2:AttributeStatement>
<saml2:Attribute Name="https://www.aliyun.com/SAML-Role/Attributes/RoleSessionName">
...
</saml2:Attribute>
<saml2:Attribute Name="https://www.aliyun.com/SAML-Role/Attributes/Role">
...
</saml2:Attribute>
</saml2:AttributeStatement>
</saml2:Assertion>
</saml2p:Response>SAML アサーション要素
[標準SAML 2.0要素]
これらの要素はSAML 2.0 プロトコル仕様に準拠しています。
要素
説明
発行者Issuerの値は、Alibaba Cloud で IdP エンティティを作成したときにアップロードした IdP メタデータファイル内のEntityIDと一致している必要があります。署名Alibaba Cloud では、改ざんを防止するために、署名付き SAML アサーションが必要です。
Signature要素とその子要素には、署名値や署名アルゴリズムなどの情報を含める必要があります。件名Subject要素には、次の要素を含める必要があります。NameID要素は 1 つのみです。NameIDの値は、SAML 2.0 プロトコルに従って、通常はユーザーの IdP 識別子に設定します。Alibaba Cloud は、この値を使用してサインインサブジェクトを識別しません。SubjectConfirmationData要素を含むSubjectConfirmation要素を 1 つだけ含める必要があります。SubjectConfirmationData要素には、次の属性が必要です。NotOnOrAfter: SAML アサーションの有効期限を指定します。Recipient: Alibaba Cloud は、この属性の値を使用して、アサーションが Alibaba Cloud 向けであることを検証します。値はhttps://signin.alibabacloud.com/saml-role/ssoである必要があります。
例
Subject要素:<Subject> <NameID Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent">administrator</NameID> <SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer"> <SubjectConfirmationData NotOnOrAfter="2019-01-01T00:01:00.000Z" Recipient="https://signin.alibabacloud.com/saml-role/sso"/> </SubjectConfirmation> </Subject>
条件Conditions要素には、少なくとも 1 つのAudience要素を含むAudienceRestriction要素を含める必要があります。1 つのAudience要素の値はurn:alibaba:cloudcomputing:internationalである必要があります。説明IdP で Alibaba Cloud RAM を参照する複数の SAML アプリケーションを設定し、パラメーター付きのエンティティ ID (例:
urn:alibaba:cloudcomputing:international#abc.123) を使用する場合、Audience要素は、パラメーターのサフィックスを含めてエンティティ ID と完全に一致する必要があります。例:
Conditions要素:<Conditions> <AudienceRestriction> <Audience>urn:alibaba:cloudcomputing:international</Audience> </AudienceRestriction> </Conditions>[Alibaba Cloudのカスタム要素]
AttributeStatement要素は、以下の Alibaba Cloud 固有のAttribute要素を含める必要があります:Name属性がhttps://www.aliyun.com/SAML-Role/Attributes/RoleであるAttribute要素この要素は必須で、複数の値に対応しています。各
AttributeValueには、ユーザーが引き受け可能なロールを、RAM ロール ARN と IdP ARN をカンマ (,) で区切った形式で指定します。両方の ARN はコンソールから取得します:RAM ロール ARN: ロール ページで RAM ロール名をクリックし、基本情報 セクションで ARN を確認します。
IdP ARN: [SSO] ページの ロールベースの SSO ログイン方式 タブで、IdP 名をクリックし、詳細 セクションで ARN を見つけます。
説明複数の値を指定した場合、コンソールにサインインするユーザーは、表示されるリストからロールを選択できます。
ロール
Attribute要素の例:<Attribute Name="https://www.aliyun.com/SAML-Role/Attributes/Role"> <AttributeValue>acs:ram::$account_id:role/role1,acs:ram::$account_id:saml-provider/provider1</AttributeValue> <AttributeValue>acs:ram::$account_id:role/role2,acs:ram::$account_id:saml-provider/provider1</AttributeValue> </Attribute>説明$account_idは、RAM ロールと IdP を所有する Alibaba Cloud アカウントの ID です。Name属性がhttps://www.aliyun.com/SAML-Role/Attributes/RoleSessionNameであるAttribute要素この要素は必須であり、1 つの値のみを受け入れます。
AttributeValueは、コンソールのユーザー情報と ActionTrail ログに表示されます。同じロールを引き受けるユーザーを区別するために、ユーザーごとに一意のRoleSessionName(従業員 ID やメールアドレスなど) を使用します。AttributeValueは 2~64 文字で、英字、数字、および次の特殊文字-_.@=を使用できます。例 RoleSessionName
Attribute要素:<Attribute Name="https://www.aliyun.com/SAML-Role/Attributes/RoleSessionName"> <AttributeValue>user_id</AttributeValue> </Attribute>Name属性がhttps://www.aliyun.com/SAML-Role/Attributes/SessionDurationであるAttribute要素この要素は任意であり、最大 1 つの値を受け入れます。
AttributeValueは、秒単位のセッション期間を表す整数である必要があります。最小値は 900 で、最大値はRole属性で指定された RAM ロールに設定された最大セッション期間を超えることはできません。SessionDuration
属性要素の例:<Attribute Name="https://www.aliyun.com/SAML-Role/Attributes/SessionDuration"> <AttributeValue>1800</AttributeValue> </Attribute>
[セッション期間]
コンソールへのサインインでは、
SessionDuration値が SAML アサーションからセッション期間として使用されます。AuthnStatement要素でSessionNotOnOrAfterも定義されている場合、SessionDurationとSessionNotOnOrAfterのうち短い方が適用されます。 どちらも指定されていない場合、セッション期間はデフォルトでロールの 最大セッション時間 設定になりますが、{key, select, AllowUserToChangePassword {ユーザーによるパスワードの管理を許可} AllowUserToManageMFADevices {ユーザーによる MFA デバイスの管理を許可} AllowUserToManageAccessKeys {ユーザーによる AccessKey の管理を許可} AllowUserToManageServiceCredentials {ユーザーによる API Key の管理を許可} AllowUserToManagePersonalDingTalk {ユーザーによる DingTalk バインドの管理を許可} AllowUserLongTermLogin {長期ログインの維持を許可} HelpAllowUserLongTermLogin {長期ログインをサポートするアプリ:アリババクラウド App、アリババクラウド ECS クライアント。} LoginSessionDuration {ログインセッションの有効期限} HelpLoginSessionDuration {ログインセッションの継続時間を指定します。有効値は {min} ~ {max} 時間です。} ValueOfLoginSessionDuration {{value} 時間} AllowUserToLoginWithPasskey {ユーザーによるパスキーログインを許可} MaxIdleDaysForUsers {ユーザーの最大アイドル日数} HelpMaxIdleDaysForUsersTitle {設定の変更は翌日に有効になります。以下の条件をすべて満たすユーザーは、コンソールへのログインが無効になります。} HelpMaxIdleDaysForUsersFirstCondition {1. 最後のログインから設定期間以上が経過している、またはユーザーの作成から設定期間以上が経過しており一度もログインしていない。} HelpMaxIdleDaysForUsersSecondCondition {2. ユーザーのログイン設定が 7 日以内に更新されていない。} MaxIdleDaysForAccessKeys {AccessKey の最大ア HelpMaxIdleDaysForAccessKeysTitle {設定の変更は翌日に有効になります。以下の条件をすべて満たす AccessKey は無効になります。} HelpMaxIdleDaysForAccessKeysFirstCondition {1. AccessKey の最終使用日時から最大アイドル期間以上が経過している。} HelpMaxIdleDaysForAccessKeysSecondCondition 7 日以内に更新されていない。} ValueOfIdleDays {{value} 日} other {{key}} } 設定が上限となります。 RAM ユーザーのセキュリティ設定の管理。 RAM ロールの最大セッション期間の設定。プログラムによるサインインでは、AssumeRoleWithSAML を呼び出すときに
DurationSecondsを指定し、かつAuthnStatement要素でSessionNotOnOrAfterも定義した場合、STS トークンの有効期間はDurationSecondsとSessionNotOnOrAfterのうち、短い方の値になります。どちらも指定されていない場合、有効期間はデフォルトで 3,600 秒になります。