このトピックでは、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) を使用してユーザーを管理し、AD FSを使用してAlibaba Cloudなどのエンタープライズアプリケーションを構成します。 ロールベースSSOが設定されると、AD管理者はユーザーグループごとにAlibaba Cloudアカウントのリソースへのユーザーアクセスを制御できます。 この例では、Alibaba Cloudアカウント、アカウント1とアカウント2、およびADユーザーグループ、Aliyun-<Account-id>-ADFS-AdminとAliyun-<Account-id>-ADFS-Readerがあります。 Aliceという名前のユーザーは、これらのグループに属します。 企業は、AD FSからアカウント1およびアカウント2へのロールベースSSOを実装したいと考えています。
<account-id> は、アカウント1またはアカウント2のIDを示します。 したがって、ユーザAliceは、4つのユーザグループに属する。 名前にAdminが含まれるグループには、アカウント1またはアカウント2に対する管理権限があります。 Readerを含む名前のグループには、アカウント1またはアカウント2に対するReader権限があります。
このトピックで説明するMicrosoft ADの設定は参考用であり、Alibaba CloudへのSSOログインの設定手順を理解するのに役立ちます。 Alibaba Cloudは、Microsoft ADの設定に関するコンサルティングサービスを提供していません。 詳細については、「WindowsインスタンスでのADドメインの構築」をご参照ください。
処理中
次の図は、ロールベースSSOのプロセスを示しています。
AD管理者がロールベースSSOの設定を完了すると、ユーザーAliceは図に示すプロセスに基づいてAlibaba Cloud管理コンソールにログインできます。 詳細については、「概要」をご参照ください。
このプロセスは、ログイン中にAlibaba Cloudのユーザー名またはパスワードを提供する必要なしにユーザーを認証できることを示しています。
ステップ1: Alibaba Cloudで信頼できるSAML IdPとしてAD FSを設定する
Alibaba CloudのRAM (Resource Access Management) コンソールにログインします。 ADFSという名前のIdPを作成し、メタデータファイルをアップロードします。 AD FSのメタデータファイルは、
https://<ADFS-server>/federationmetadata/2007-06/federationmetadata.xml
から取得できます。説明<ADFS-server> は、AD FSサーバーのドメイン名またはIPアドレスを示します。
詳細については、「ロールベースSSO用Alibaba CloudのSAML設定の設定」をご参照ください。
説明IdPメタデータファイルのサイズが上限を超える場合、
<fed:ClaimTypesRequested>
および<fed:ClaimTypesOffered>
セクションのコンテンツを削除できます。アカウント1のADFS-AdminとADFS-Readerという名前の2つのRAMロールを作成します。 RAMロールを作成するときに、信頼できるエンティティのタイプとしてIdPを、信頼できるIdPとしてADFSを選択します。 次に、
AdministratorAccess
ポリシーをADFS-Adminロールに、ReadOnlyAccess
ポリシーをADFS-Readerロールにアタッチします。詳細については、「信頼できる IdP の RAM ロールの作成」をご参照ください。
前述の手順を繰り返して、アカウント2に同じIdPと2つのRAMロールを作成します。 次に、
AdministratorAccess
ポリシーをADFS-Adminロールに、ReadOnlyAccess
ポリシーをADFS-Readerロールにアタッチします。
設定が完了すると、アカウント1とアカウント2はユーザーIDとロールに関する情報を信頼します。 この情報は、AD FSサーバーから送信されるSecurity Assertions Markup Language (SAML) リクエストに含まれています。
ステップ2: AD FSでAlibaba Cloudを信頼できるSAML SPとして設定する
AD FSでは、SAML SPは依拠当事者です。 AD FSでAlibaba Cloudを信頼できるSAML SPとして設定するには、次の手順を実行します。
サーバーマネージャーの上部のナビゲーションバーで、ツール>AD FS管理を選択します。
依存当事者を右クリックして、Relying Party Trustを追加するを選択します。
Alibaba CloudのSAML SPメタデータファイルを利用者向けに設定します。 メタデータファイルは、次のURLから取得できます。
https://signin.alibabacloud.com/saml-role/sp-metadata.xml
.プロンプトに従ってウィザードを完了します。
ステップ3: Alibaba Cloud SPのSAMLアサーション属性の設定
AD FSによって発行されるSAMLアサーションには、NameID
、Role
、およびRoleSessionName
属性が含まれている必要があります。 AD FSは、発行変換ルールを使用してこれらの属性を提供します。
NameID
次の手順を実行して、SAMLアサーションの
NameID
属性をADのユーザーのWindowsアカウント名に設定します。信頼関係者の表示名を右クリックし、[クレーム発行ポリシーの編集] を選択します。
発行変換規則 をクリックして規則を追加します。
説明発行変換ルールは、既知のユーザー属性を変換し、SAMLアサーションの属性として発行する方法を示します。 ADでユーザーのWindowsアカウント名を
NameID
として発行する場合は、発行変換ルールを作成する必要があります。[要求規則テンプレート] を [受信要求の変換] に設定します。
次のパラメーターを設定し、[完了] をクリックします。
[要求ルール名] をNameIDに設定します。
受信クレームタイプをWindowsアカウント名に設定します。
[送信クレームタイプ] を [名前ID] に設定します。
[送信名ID形式] を [永続識別子] に設定します。
[すべてのクレーム値を通過] を選択します。
設定が完了すると、AD FSはAlibaba Cloudが必要とする形式で
NameID
属性を送信します。 次のコードは例を示しています。<NameID Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent"> YourDomain\rolessouser </NameID>
RoleSessionName
次の手順を実行して、SAMLアサーションの
RoleSessionName
属性をADのユーザーのユーザープリンシパル名 (UPN) に設定します。[発行変換ルール] ダイアログボックスで、[ルールの追加] をクリックします。
[要求ルールテンプレート] を [要求として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>
ロール
次の手順を実行して、カスタム属性を設定し、その値をユーザーのADグループに関連付けられているAlibaba Cloud RAMロールの名前に設定します。
[発行変換ルール] ダイアログボックスで、[ルールの追加] をクリックします。
[クレームルールテンプレート] を [カスタムルールを使用してクレームを送信] に設定し、[次へ] をクリックします。
次のパラメーターを設定し、[完了] をクリックします。
[要求ルール名] を [ADグループの取得] に設定します。
[カスタムルール] フィールドに、必要な情報を入力します。 次の例に基づいてこのパラメーターを設定します。
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中間変数に保存されます。
[発行変換ルール] ダイアログボックスで、[ルールの追加] をクリックします。
上記の手順を繰り返し、[完了] をクリックします。
[クレームルール名] を [ロール] に設定します。
[カスタムルール] フィールドに、必要な情報を入力します。 次の例に基づいてこのパラメーターを設定します。
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で信頼できるSAML IdPとしてAD FSを設定する」で作成されたIdPの名前に設定します。 この例では、名前をADFSに設定します。
ユーザーがAliyun-<account-id>-ADFS-AdminまたはAliyun-<account-id>-ADFS-Readerグループに属している場合、SAML属性が生成され、このルールに基づいてAlibaba CloudのADFS-AdminまたはADFS-Readerロールにマップされます。
設定が完了すると、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>
ロールベースのSSO設定の確認
https://<ADFS-server>/adfs/ls/IdpInitiatedSignOn.aspx
でSSOのAD FSポータルにログインします。 Alibaba Cloudアプリケーションを選択し、ユーザーのユーザー名とパスワードを入力します。説明<ADFS-server> は、AD FSサーバーのドメイン名またはIPアドレスを示します。 URLが使用できない場合は、PowerShellで
Set-AdfsProperties -EnableIdpInitiatedSignonPage $True
コマンドを実行します。Alibaba CloudのロールベースSSOページで、使用するRAMロールを選択し、ログオンをクリックします。
説明ユーザーが1つのADグループにのみ属している場合、ユーザーはAlibaba Cloudの1つのRAMロールにのみ対応します。 この場合、RAMロールを選択せずにAlibaba Cloud管理コンソールにログインできます。