このトピックでは、AD FS から Alibaba Cloud へのロールベースシングルサインオン (SSO) を実装する方法の例を示し、企業 ID プロバイダー (IdP) から Alibaba Cloud へのエンドツーエンドの ID SSO プロセスについて詳しく説明します。
シナリオ
AD 管理者がロールベース SSO の設定を完了した後、前の図のステップに従って、Alice は Alibaba Cloud コンソールにログインできます。 詳細は、「ロールベースの SSO の概要」をご参照ください。
前述の SSO プロセスは、ログイン時に Alibaba Cloud のユーザー名とパスワードを入力しなくても、企業のユーザーを認証できることを示しています。
設定
ロールベース SSO を実装するには、管理者は次の手順に従って Alibaba Cloud と AD FS を設定する必要があります。
- Alibaba Cloud で AD FS を信頼できる SAML IdP として設定します。
- RAM コンソールで、Account1 配下に
ADFS
という名前の IdP を作成し、メタデータファイルを設定します。 AD FS のメタデータファイルは、https://<ADFS-server>/federationmetadata/2007-06/federationmetadata.xml
から入手できます。注 上記の URL 内の <ADFS-server> は、AD FS のサーバードメイン名または IP アドレスです。詳細は、「ロールベース SSO の SAML の設定」をご参照ください。
- Account1 配下に ADFS-Admin とADFS-Reader という名前の 2 つの RAM ロールを作成し、信頼できるエンティティとして作成済みの
ADFS
を選択し、AdministratorAccess
ポリシーとReadOnlyAccess
ポリシーをそれぞれ 2 つの RAM ロールに割り当てます。 詳細は、「信頼できる Alibaba Cloud アカウント用 RAM ロールの作成」をご参照ください。 - 前の手順で説明したように、Account2 配下に IdP と 2 つの RAM ロールを作成し、ポリシーを割り当てます。
注 設定が完了すると、Alibaba Cloud アカウント (Account1 と Account2) は、AD FS から送信された SAML リクエスト内のユーザー ID とロール情報を信頼します。 - RAM コンソールで、Account1 配下に
- AD FS で Alibaba Cloud を信頼できる SAML SP として設定します。
AD FS では、SAML SP を証明書利用者とも呼びます。 AD FSで Alibaba Cloud を信頼できるSAML SP として設定するには、次の手順に従います。
- [サーバー マネージャー] ページで、 を選択します。
- [証明書利用者信頼の追加] を選択します。
- Alibaba Cloud の SAML SP メタデータを証明書利用者に設定します。 メタデータの URL は、
https://signin.alibabacloud.com/saml-role/sp-metadata.xml
です。 - プロンプトに従って設定を完了します。
- Alibaba Cloud SP の SAML アサーション属性を設定します。
AD FS によって発行された SAML アサーションには、
NameID
、Role
、RoleSessionName
などの属性が含まれている必要があります。 AD FS は、変換ルールを発行してこれらの属性を指定できます。NameID
AD の Windows アカウント名が SAML アサーションの
NameID
になるように設定するには、次の手順に従います。- 証明書利用者の表示名を右クリックし、[要求規則の編集] を選択します。
- [発行変換規則] をクリックします。
注 [発行変換規則] は、既知のユーザー属性を変換し、SAML アサーションの属性として発行する方法を示します。 AD 内のユーザーの Windows アカウント名を
NameID
として発行する必要があります。 つまり、新しい規則が必要です。 - [要求規則テンプレート]ドロップダウンリスト から [入力方向の要求を変換] を選択します。
- 次のように要求規則を設定し、[完了] をクリックします。
- 要求規則名:NameID
- 入力方向の要求の種類:Windows アカウント名
- 出力方向の要求の種類:Name ID
- 出力方向の名前 ID の形式:永続 ID
- すべての要求値をパス スルーする:選択
設定が完了すると、AD FS は 必要なNameID
形式を Alibaba Cloud に送信します。 以下に例を示します。<NameID Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent"> YourDomain\rolessouser </NameID>
RoleSessionName
AD の UPN を SAMLアサーションの
RoleSessionName
に設定するには、次の手順に従います。- [変換要求規則の追加] をクリックします。
- [要求規則テンプレート] ドロップダウンリストから [LDAP 属性を要求として送信] を選択します。
- 次のように要求規則を設定し、[完了] をクリックします。
- 要求規則名:RoleSessionName
- 属性ストア:Active Directory
- LDAP 属性:User-Principal-Name (必要に応じて、Email などの他の属性を選択可)
- 出力方向の要求の種類:
https://www.aliyun.com/SAML-Role/Attributes/RoleSessionName
設定が完了すると、AD FS は必要なRoleSessionName
形式を Alibaba Cloud に送信します。 以下に例を示します。<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/windowsaccount name", 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/ADFS"));
注 このルールでは、ユーザーの AD グループにAliyun-<account-id>-ADFS-Admin か Aliyun-<account-id>-ADFS-Reader が含まれている場合、SAML 属性が生成され、RAM ロール ADFS-Admin または ADFS-Reader と照合するために Alibaba Cloud に送信されます。
設定が完了すると、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/ADFS</AttributeValue> </Attribute>
検証
-
- AD FS SSO ポータル (URL:
https://<ADFS-server>/adfs/ls/IdpInitiatedSignOn.aspx
) にログインし、Alibaba Cloud アプリケーションを選択し、ユーザー名とパスワードを入力します。注 上記の URL 内の <ADFS-server> は、AD FS のサーバードメイン名または IP アドレスです。 URL が機能しない場合は、PowerShellSet-AdfsProperties –EnableIdpInitiatedSignonPage $True
を実行します。 - Alibaba Cloud の [ロールベースの SSO ログイン方式] ページで、対象のロールを選択し、[サインイン] をクリックします。
注 ユーザーが 1 つの AD グループにのみ属している場合、ロールを選択しなくても Alibaba Cloud にログインできます。
- AD FS SSO ポータル (URL: