このトピックでは、ロールベース SSO の場合、ID プロバイダー (IdP) が発行する SAML アサーションに必要とされる属性要素について説明します。

シナリオ

SAML 2.0 ベースの SSO では、ユーザーの ID が検証された後、IdP が認証レスポンスを生成し、ブラウザやプログラムを介して Alibaba Cloud に送信します。 このレスポンスには、SAML 2.0 標準の HTTP POST バインディングに準拠したSAML アサーションが含まれています。

Alibaba Cloud は、SAML アサーションを使用して、ユーザーのログインステータスと ID を判断します。 したがって、SAML アサーションには、Alibaba Cloud で必要な要素を含める必要があります。

SAML 2.0 の共通要素

  • Issuer

    Issuer 要素の値は、Alibaba Cloud で作成した IdP にアップロードされた IdP メタデータファイル内の EntityID に一致しなければなりません。

  • Signature

    Alibaba Cloud の SAML アサーションを署名として使用する必要があります。 Signature 要素には、署名値や署名アルゴリズムなどの情報が含まれている必要があります。

  • Subject

    Subject 要素には、次のサブ要素が含まれている必要があります。

    • NameID サブ要素を 1 つのみ。 SAML 2.0 に従って、NameID の値を指定する必要があります。 ただし、Alibaba Cloud は NameID の値に従ってログイン ID を判断するわけではありません。
    • SubjectConfirmationData サブ要素を含む SubjectConfirmation サブ要素を 1 つのみ。 SubjectConfirmationData サブ要素には、次の属性が含まれている必要があります。
      • NotOnOrAfter:SAML アサーションの有効期間を指定します。
      • Recipient:Alibaba Cloud は、Recipient 要素の値に従って、SAML アサーションの受信者かどうかを確認します。 したがって、Recipienthttps://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

    Conditions 要素には、AudienceRestriction サブ要素が含まれている必要があります。 AudienceRestriction サブ要素には、Audience サブ要素を含めることができます。Audience サブ要素の値は、urn:alibaba:cloudcomputing:international でなければなりません。

    以下は、 Conditions 要素の例です。

    <Conditions>
      <AudienceRestriction>
        <Audience>urn:alibaba:cloudcomputing:international</Audience>
      </AudienceRestriction>
    </Conditions>

Alibaba Cloud で必要なカスタム要素

SAML アサーションの AttributeStatement 要素には、Alibaba Cloud で必要な次の Attribute サブ要素が含まれている必要があります。

  • Name 属性に https://www.aliyun.com/SAML-Role/Attributes/Role を設定した Attribute 要素は必須です。
    この要素には、IdP のユーザーが引き受け可能なロールを記載した AttributeValue サブ要素が 1 つ以上含まれています。 AttributeValue サブ要素の値は、ロール ARN と IdP ARN がカンマで区切られたペアです。 RAM コンソールでロール ARN と IdP ARN を取得できます。
    • ロール ARN を取得するには、[RAM ロール] ページに移動し、対象の RAM ロールをクリックします。
    • IdP ARN を取得するには、[SSO] ページに移動します。 [ロールベースの SSO ログイン方式] タブで、対象の IdP の名前をクリックします。
    サブ要素に複数のペアが含まれている場合、コンソールからログインする際、どのロールを引き受けるのかを選択するよう求められます。
    以下は、Role サブ要素の例です。
    <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 要素は必須です。

    この要素には、RAM コンソールと ActionTrail ログにユーザー情報を表示するために使用される AttributeValue サブ要素が 1 つだけ含まれています。 複数のユーザーが 1 つのロールを引き受けるようにする場合、ユーザーごとに異なるユーザー ID やメールアドレスなど、一意の RoleSessionName 値を使用します。

    AttributeValue サブ要素の値は、2 から 64 文字でなければなりません。文字、数字、カンマ (,)、ピリオド (.)、ハイフン (-)、アンダースコア (_)、プラス記号 (+)、等号 (=)、およびアットマーク (@) を含めることができます。

    以下は、RoleSessionName サブ要素の例です。
    <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 要素はオプションです。

    この要素は、ログイン期間を指定する AttributeValue サブ要素を 1 つだけ含みます。 コンソールからログインが開始された場合、AttributeValue サブ要素はセッションの秒数を表します。 プログラムからログインが開始された場合、 AttributeValue サブ要素は STS トークンの有効期間を表します。

    AttributeValue の値は、ログイン期間を秒単位で表す整数です。 値の範囲は、900 秒 (15 分) から 3600 秒 (1 時間) です。 このサブ要素が存在しない場合、ログイン期間は 1 時間です。

    以下は、SessionDuration サブ要素の例です。
    <Attribute Name="https://www.aliyun.com/SAML-Role/Attributes/SessionDuration">
      <AttributeValue> 1800 </AttributeValue>
    </Attribute>