このチュートリアルでは、Active Directory フェデレーションサービス (AD FS) と Alibaba Cloud を設定して、ロールベースのシングルサインオン (SSO) を有効にする方法について説明します。この例では、AD FS は Windows Server 2012 R2 を実行している Elastic Compute Service (ECS) インスタンスでホストされています。AD FS は ID プロバイダー (IdP) として機能し、Alibaba Cloud はサービスプロバイダ (SP) として機能します。
背景情報
ある企業が Active Directory (AD) を使用して従業員の ID を管理し、AD FS を使用して Alibaba Cloud を含む企業アプリケーションとのフェデレーションを行っているとします。AD 管理者は、ユーザーグループを使用して、従業員の Alibaba Cloud アカウントへのアクセスを管理します。この例では、企業は Account1 と Account2 という 2 つの Alibaba Cloud アカウントを所有しています。Alice という名前の従業員は、両方のアカウントに対して Admin と Reader の権限を持つロールを引き受ける必要があります。Alice は、AD ユーザーグループ Aliyun-<account-id>-ADFS-Admin と Aliyun-<account-id>-ADFS-Reader に所属しています。目標は、AD FS から Account1 と Account2 の両方へのロールベース SSO を有効にすることです。
<account-id> は Account1 または Account2 の ID です。したがって、Alice は 4 つの AD ユーザーグループに所属し、これらは 2 つのアカウントそれぞれの Admin 権限と Reader 権限に対応します。
Microsoft Active Directory の設定詳細は、説明のみを目的としています。これらの手順は、Alibaba Cloud との SSO のエンドツーエンドの設定プロセスを理解するのに役立ちます。Alibaba Cloud は、Microsoft Active Directory の設定に関するコンサルティングサービスを提供していません。AD FS 環境の構築方法の詳細については、「Windows インスタンスでの AD ドメインの構築」をご参照ください。
仕組み
次の図は、従業員の基本的なフェデレーションログインのフローを示しています。

AD 管理者がフェデレーションログインの設定を完了すると、従業員 (Alice) は図に示されているプロセスに従って Alibaba Cloud コンソールにサインインできます。詳細については、「SAML ロールベース SSO の概要」をご参照ください。
このプロセスにより、企業の ID システムを通じて認証が一元化されます。ユーザーは、別途 Alibaba Cloud のユーザー名やパスワードを提供する必要はありません。
ステップ 1:AD FS を信頼できる IdP として設定
Resource Access Management (RAM) コンソールで、ADFS という名前の ID プロバイダーを作成し、そのメタデータを設定します。AD FS のメタデータ URL は
https://<ADFS-server>/federationmetadata/2007-06/federationmetadata.xmlです。説明<ADFS-server> は、ご利用の AD FS サーバーのドメイン名または IP アドレスです。
詳細については、「ロールベース SSO のために Alibaba Cloud を SP として SAML を設定する」をご参照ください。
説明メタデータファイルがサイズ制限を超える場合は、
<fed:ClaimTypesRequested>要素と<fed:ClaimTypesOffered>要素内のすべてのコンテンツを削除できます。Account1 で、ADFS-Admin と ADFS-Reader という 2 つの RAM ロールを作成します。各ロールについて、信頼できるエンティティを ID プロバイダーに設定し、信頼できる ID プロバイダーとして ADFS を選択します。次に、ADFS-Admin ロールに
AdministratorAccess権限を、ADFS-Reader ロールにReadOnlyAccess権限を付与します。詳細については、「信頼できる ID プロバイダー用の RAM ロールの作成」をご参照ください。
Account2 で、このプロセスを繰り返します。ADFS という名前の ID プロバイダーと、ADFS-Admin および ADFS-Reader という 2 つの RAM ロールを作成します。ADFS-Admin ロールに
AdministratorAccess権限を、ADFS-Reader ロールにReadOnlyAccess権限を付与します。
この設定が完了すると、ご利用の Alibaba Cloud アカウントは、AD FS から送信される SAML アサーション内のユーザー ID とロール情報を信頼するようになります。
ステップ 2:Alibaba Cloud を信頼できる SP として設定
AD FS では、SAML サービスプロバイダ (SP) は依拠当事者と呼ばれます。次の手順に従って、AD FS で Alibaba Cloud を信頼できる SP として設定します。
[サーバーマネージャー] の [ツール] メニューで、[AD FS の管理] をクリックします。
[AD FS の管理] コンソールで、[依拠当事者信頼の追加] をクリックします。

ウィザードで、ロールベース SSO 用の Alibaba Cloud SAML SP メタデータ URL を指定します:
https://signin.alibabacloud.com/saml-role/sp-metadata.xml。
画面の指示に従ってウィザードを完了します。
ステップ 3:SAML アサーション属性の設定
Alibaba Cloud では、AD FS が SAML アサーションに NameID、Role、RoleSessionName の属性を含める必要があります。AD FS では、要求発行変換規則を使用してこれらの属性を提供します。
NameID次の手順に従って、Active Directory からのユーザーの Windows アカウント名を SAML アサーションの
NameID属性にマップします。作成した依拠当事者に対して、[要求発行ポリシーの編集] をクリックします。
[発行変換規則] タブで、[規則の追加] をクリックします。
説明要求発行変換規則は、ユーザー属性を SAML アサーションの属性に変換する方法を定義します。AD からのユーザーの Windows アカウント名を
NameIDとして発行するために、新しい規則を追加する必要があります。[要求規則テンプレート] で、[入力方向の要求を変換] を選択します。

次の設定で規則を構成し、[完了] をクリックします。
要求規則名: NameID
入力方向の要求の種類: Windows アカウント名
送信先クレームの種類: Name ID
出力方向の名前 ID の形式: 永続的な識別子
すべての要求の値をパススルーする: このチェックボックスを選択します。

規則を設定すると、AD FS は Alibaba Cloud が要求する形式で
NameIDを送信します。<NameID Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent"> YourDomain\rolessouser </NameID>
RoleSessionName次の手順に従って、Active Directory からのユーザーのユーザープリンシパル名 (UPN) を SAML アサーションの
RoleSessionName属性にマップします。[規則の追加] をクリックします。
[要求規則テンプレート] で、[LDAP 属性を要求として送信] を選択します。

次の設定で規則を構成し、[完了] をクリックします。
要求規則名: RoleSessionName
属性ストア: Active Directory
LDAP 属性: User-Principal-Name。要件に応じて、メールなどの他の属性を選択することもできます。
出力方向の要求の種類:
https://www.aliyun.com/SAML-Role/Attributes/RoleSessionName

規則を設定すると、AD FS は Alibaba Cloud が要求する形式で
RoleSessionNameを送信します。<Attribute Name="https://www.aliyun.com/SAML-Role/Attributes/RoleSessionName"> <AttributeValue>rolessouser@example.com<AttributeValue> </Attribute>Role次の手順に従って、ユーザーのグループメンバーシップ情報を 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:AD FS を信頼できる IdP として設定で作成した ID プロバイダーの名前に置き換えます。この例では、名前は ADFS です。

この規則に基づき、ユーザーが Aliyun-<account-id>-ADFS-Admin または Aliyun-<account-id>-ADFS-Reader という名前の AD グループに所属している場合、AD FS は Alibaba Cloud の対応する ADFS-Admin または ADFS-Reader の RAM ロールにマッピングされる SAML 属性を生成します。
設定が完了すると、IdP は次の例に示すように、必要な SAML アサーションフラグメントを Alibaba Cloud に返します。
<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>
結果の確認
AD FS の IdP 起点のサインオンポータル (
https://<ADFS-server>/adfs/ls/IdpInitiatedSignOn.aspx) にサインインします。Alibaba Cloud アプリケーションを選択し、ユーザーの認証情報を入力します。説明<ADFS-server> は、ご利用の AD FS サーバーのドメイン名または IP アドレスです。Web ページが利用できない場合は、次の PowerShell コマンドを実行して有効にできます:
Set-AdfsProperties -EnableIdpInitiatedSignonPage $True。
Alibaba Cloud のロールベース SSO ページで、引き受けたいロールを選択し、[ログイン] をクリックします。
説明ユーザーがロールにマッピングされる AD グループに 1 つしか所属していない場合、ロールを選択することなく自動的にコンソールにサインインします。
