Windows Server 2012 R2 の Elastic Compute Service (ECS) インスタンスにデプロイされた AD FS 環境を使用して、AD FS (ID プロバイダー) と Alibaba Cloud (サービスプロバイダー) の間でロールベース SSO を構成します。
背景情報
お客様の会社では、Active Directory (AD) を使用して従業員を管理し、AD FS を使用して Alibaba Cloud を含むエンタープライズアプリケーションとフェデレーションします。AD 管理者は、ユーザーグループのメンバーシップを通じて、従業員の Alibaba Cloud アカウントへのアクセスを制御します。この例では、お客様の会社に 2 つの Alibaba Cloud アカウント (Account1 と Account2) があり、それぞれに Admin 権限と Reader 権限があります。アリスは AD グループ Aliyun-<account-id>-ADFS-Admin と Aliyun-<account-id>-ADFS-Reader に所属しており、両方のアカウントでアリスのロールベース SSO を有効にすることが目的です。
-
<account-id>は Account1 または Account2 の ID です。アリスは合計 4 つの AD グループ (各アカウントの Admin と Reader) に所属しています。 -
このトピックの AD 構成はあくまでガイダンスです。Alibaba Cloud は Microsoft AD 構成のサポートを提供しません。AD FS をセットアップするには、「Windows インスタンスに AD ドメインを構築する」をご参照ください。
仕組み
次の図は、コンソールのサインオンフローを示しています。

フェデレーションを構成すると、アリスのような従業員は SSO を通じて Alibaba Cloud コンソールにログインできます (SAML ベースのロール SSO の概要)。
ユーザーは Alibaba Cloud の認証情報を必要とせずに、企業の ID システムを通じて認証されます。
手順 1:Alibaba Cloud での AD FS の信頼設定
-
RAM コンソールで、ADFS という名前の ID プロバイダー (IdP) を作成し、そのメタデータを指定します。AD FS メタデータ URL は
https://<ADFS-server>/federationmetadata/2007-06/federationmetadata.xmlです。説明<ADFS-server>を AD FS サーバーのドメイン名または IP アドレスに置き換えます。Alibaba Cloud の SP でロールベース SSO の SAML 設定を構成する。
説明メタデータファイルがサイズ制限を超える場合は、
<fed:ClaimTypesRequested>タグおよび<fed:ClaimTypesOffered>タグ内のすべての内容を削除して、サイズを削減できます。 -
Alibaba Cloud アカウント Account1 で、IdP を信頼する 2 つの RAM ロール (ADFS-Admin と ADFS-Reader) を作成します。先ほど作成した ADFS IdP を選択します。2 つのロールにそれぞれ
AdministratorAccessポリシーとReadOnlyAccessポリシーを付与します。 -
Account2 で、同じ名前 (ADFS-Admin および ADFS-Reader) の RAM ロールを作成し、Account1 で作成した IdP (ADFS) を信頼するように設定します。各ロールに、それぞれ
AdministratorAccessポリシーとReadOnlyAccessポリシーを付与します。
この設定が完了すると、Alibaba Cloud アカウントは AD FS からの SAML リクエスト内のユーザー ID とロール情報を信頼します。
手順 2:AD FS での Alibaba Cloud の信頼設定
AD FS では、SAML SP は [証明書利用者] と呼ばれます。AD FS で Alibaba Cloud を証明書利用者としてセットアップします。
-
[サーバー マネージャー] で [ツール] メニューをクリックし、[AD FS 管理] を選択します。
-
[AD FS] 管理コンソールで、[証明書利用者信頼の追加ウィザード] を開始します。
[ようこそ] ページで [要求に対応] を選択し、[開始] をクリックします。
-
Alibaba Cloud のロールベース SSO 用の SAML SP メタデータを指定します。メタデータ URL は または
https://signin.alibabacloud.com/saml-role/sp-metadata.xmlです。[データ ソースの選択] ページで、[オンラインまたはローカル ネットワーク上で公開されている証明書利用者に関するデータをインポートする] を選択します。[フェデレーション メタデータ アドレス (ホスト名または URL)] テキストボックスにメタデータ URL を入力し、[次へ] をクリックします。
-
既定の設定のままウィザードを完了します。
手順 3:SAML アサーション属性の構成
AD FS は、SAML アサーションに NameID、Role、RoleSessionName 属性を含める必要があります。発行変換規則を使用してこれらを構成します。
-
NameIDAD の Windows アカウント名を
NameID属性にマッピングします。-
証明書利用者を右クリックし、[要求規則の編集] を選択します。
-
[発行変換規則] を追加します。
説明発行変換規則は、ユーザー属性を SAML アサーション属性にマッピングします。AD の Windows アカウント名を
NameIDとして発行する規則を追加します。 -
[要求規則テンプレート] で [入力方向の要求を変換] を選択し、[次へ] をクリックします。
-
次の設定で規則を構成し、[完了] をクリックします。
-
[要求規則名]: NameID
-
[入力方向の要求の種類]: Windows アカウント名
-
[出力方向の要求の種類]: Name ID
-
[出力方向の名前 ID の形式]: 永続的な識別子
-
[すべての要求値をそのまま渡す] を選択します。
構成が完了すると、AD FS は必要な形式で
NameIDを送信します。<NameID Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent"> YourDomain\rolessouser </NameID> -
-
-
RoleSessionNameAD のユーザープリンシパル名 (UPN) を
RoleSessionName属性にマッピングします。-
[規則の追加] をクリックします。
-
[要求規則テンプレート] リストで [LDAP 属性を要求として送信] を選択し、[次へ] をクリックします。
-
次の設定で規則を構成し、[完了] をクリックします。
-
[要求規則名]: RoleSessionName
-
[属性ストア]: Active Directory
-
[LDAP 属性] で [User-Principal-Name] を選択します。要件に応じて、メールなどの他の属性も選択できます。
-
[出力方向の要求の種類] に
https://www.aliyun.com/SAML-Role/Attributes/RoleSessionNameを入力します。
-
構成が完了すると、AD FS は必要な形式で
RoleSessionNameを送信します。<Attribute Name="https://www.aliyun.com/SAML-Role/Attributes/RoleSessionName"> <AttributeValue>rolessouser@example.com<AttributeValue> </Attribute> -
-
Roleカスタム規則を使用して、AD グループのメンバーシップを Alibaba Cloud のロール名に変換します。
-
[規則の追加] をクリックします。
-
[要求規則テンプレート] リストで [カスタム規則を使用して要求を送信] を選択し、[次へ] をクリックします。
-
次の設定で規則を構成し、[完了] をクリックします。
-
[要求規則名]: Get AD Groups
-
[カスタム規則]:
c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"] => add(store = "Active Directory",types = ("http://temp/variable"), query = ";tokenGroups;{0}", param =c.Value);
説明この規則は、AD グループのメンバーシップを取得し、http://temp/variable に保存します。
-
-
[規則の追加] をクリックします。
-
前述の手順を繰り返して別のカスタム規則を追加し、[完了] をクリックします。
-
[要求規則名]: Role
-
[カスタム規則]:
c:[Type == "http://temp/variable", Value =~ "(?i)^Aliyun-([\d]+)"] => issue(Type = "https://www.aliyun.com/SAML-Role/Attributes/Role",Value = RegExReplace(c.Value, "Aliyun-([\d]+)-(.+)", "acs:ram::$1:role/$2,acs:ram::$1:saml-provider/<provider-name>"));説明<provider-name>を、「手順 1:Alibaba Cloud での AD FS の信頼設定」で作成した ID プロバイダーの名前に置き換えます。この例では、名前は ADFS です。
この規則は、Aliyun-<account-id>-ADFS-Admin または Aliyun-<account-id>-ADFS-Reader に一致する AD グループを、Alibaba Cloud の対応する RAM ロールにマッピングします。
-
構成が完了すると、IdP は必要な形式で SAML アサーションを返します。
<Attribute Name="https://www.aliyun.com/SAML-Role/Attributes/Role"> <AttributeValue>acs:ram::<account-id>:role/ADFS-Admin,acs:ram::<account-id>:saml-provider/<provider-name></AttributeValue> </Attribute> -
結果の確認
-
https://<ADFS-server>/adfs/ls/IdpInitiatedSignOn.aspxにある AD FS SSO ポータルに移動し、Alibaba Cloud アプリケーションを選択してから、ユーザー名とパスワードを入力します。説明<ADFS-server>を AD FS サーバーのドメイン名または IP アドレスに置き換えます。Web ページを利用できない場合は、次の PowerShell コマンドを実行して有効にします:Set-AdfsProperties -EnableIdpInitiatedSignonPage $True。AD FS サインインページに "You are not signed in" というメッセージと、[Sign in to this site] と [Sign in to one of the following sites] の 2 つのオプションが表示されます。[Sign in to one of the following sites] を選択し、ドロップダウンリストから [Aliyun] などのターゲットサイトを選択して、[Sign in] をクリックします。
-
Alibaba Cloud のロールベース SSO ページで、引き受けるロールを選択し、[ログイン] をクリックします。
説明マッピングされた AD グループが 1 つのみの場合は、ロールを選択せずに直接ログインします。
マッピングされた AD グループが複数ある場合は、ロール選択ページに利用可能な Alibaba Cloud アカウントとロール ([ADFS-Reader]、[ADFS-Admin]) が表示されます。対象のアカウントとロールを選択し、[ログイン] をクリックします。