Warning message

This translation is outdated. For the most up-to-date information, please refer to the English version.

Identity Service と Active Directory を統合する方法

更新 -

概要

Red Hat Enterprise Linux OpenStack Platform の Identity Service には、Active Directory へ LDAP の呼び出しが行えるように設定可能な LDAP プロバイダーが含まれています。Active Directory では、ユーザーアカウントを作成/参照して、ロールおよびテナントの組織単位 (OU) を作成する必要があります。その後、Identity がこれらのオブジェクトを使用するように設定します。

重要

Identity Service が LDAP バックエンドにアクセスするには、その LDAP バックエンドにアクセスするクライアントマシンで、SELinux の authlogin_nsswitch_use_ldap ブール値が有効に設定されている必要があります。各クライアントマシンで root ユーザーとして以下のコマンドを実行して、このブール値を有効にし、再起動後にも設定が永続されるようにします。

# setsebool -P authlogin_nsswitch_use_ldap

Active Directory の設定

Microsoft Windows Server 2008 のシステム環境では、Active Directory の設定時に、ユーザーに 1 つ、テナントに 1 つ、ロールに 1 つなど、アイデンティティーの種別ごとに異なるツリーを設定する必要があります。

  1. Active Directory がインストールされているマシンで、新規ドメイン/フォレストを作成します。

たとえば、Active Directory のツリーは以下のようになります。

    Users (OU=Users)
        AdminUser
            @id
            @name
            @mail
        DemoUser
            @id
            @name
            @mail

    Tenants (OU=Tenants)
        DemoTenant
            @id
            @name
            @description
        member(AdminUser,DemoUser)
            AdminRole
                roleOccupant(AdminUser)
            MemberRole
                roleOccupant(DemoUser)

    Roles (OU=Roles)
        AdminRole
            @id
            @name

        MemberRole
            @id
            @name
  1. LDAP へ接続するユーザーを作成します (ldapbind ユーザー)。

  2. ドメインで右クリックをして 制御の委任 を選択します。

  3. 作成した ldapbind ユーザーを選択します。

  4. ユーザー を検索する場所を記述した OU を作成します。例: ou=openstack_users,ou=openstack,dc=redhat,dc=corp

  5. テナント を検索する場所を記述した OU を作成します。例: ou=openstack_tenants,ou=openstack,dc=redhat,dc=corp

  6. ロール を検索する場所を記述した OU を作成します。例: ou=openstack_roles,ou=openstack,dc=redhat,dc=corp

organizationalRole の設定

Identity のロールが Active Directory で正しく機能できるようにするには、groupOfNames が上位の組織単位に指定できるように organizationalRole を設定する必要があります。これには、スキーマの構成設定を変更できる権限のある Schema Administrators グループでユーザーを設定する必要があります。このユーザーは、以下のように Active Directory スキーママスターで設定を変更する必要があります。

  1. Active Directory スキーママスターで、ASDI Edit を使用して スキーマ を選択します。

  2. CN=Organizational-Role を開きます。

  3. Attribute Editor で possSuperiors を選択します。

  4. 一覧に groupOfNames を追加します。

  5. OK をクリックします。

Active Directory の設定情報の収集

Active Directory のユーザーやコンピューターなどの Active Directory の設定に関する必須情報を検索する必要があります。たとえば、ユーザーが含まれている組織単位 (OU) を特定します。この情報を使用して、ユーザーの参照ポイントを設定します。Active Directory によるユーザーの OU の識別方法は、LDAP の場合とは異なるため、コモンネーム (CN: Common Name) を検索する必要があります。

以下の例では、OU は Users という名前で指定されています。

CN=Users,dc=example,dc=com

同様に、GroupsRoles が含まれる OU を特定します。

OpenStack Identity の設定

  1. 以下のコマンドを使用して、Microsoft Windows Server 2008 マシンで作成した ldapbind アカウントをテストします。

    # ldapsearch -LLL  -H ldap://192.168.101.187 -E pr=1000/noprompt  -w 'ldapbindpasswd' -x -D 'DC\ldapbind' -b 'dc=REDHAT,dc=corp' "(sAMAccountName=*)"
    

ここでは、

-D 'DC\ldapbind'  はユーザー名、DC はホスト名、ldapbind は Windows Server で作成したユーザーです。
-b 'dc=REDHAT,dc=corp' は検索が開始される場所です。
  1. Identity サーバーで、以下のように /etc/keystone/keystone.conf を編集します。

    [identity]
    driver = keystone.identity.backends.ldap.Identity
     ...
    
    [assignment]
    driver = keystone.assignment.backends.sql.Assignment
     ...
    
    [ldap]
    url                      = ldap://dc.example.com
    user                     = CN=ldap,OU=Users,DC=example,DC=com
    password                 = password
    suffix                   = DC=example,DC=com
    use_dumb_member          = True
    dumb_member              = CN=ldap,OU=Users,DC=example,DC=com
    
    user_tree_dn             = OU=Users,DC=example,DC=com
    user_objectclass         = person
    user_filter              =
    user_id_attribute        = cn
    user_name_attribute      = cn
    user_mail_attribute      = mail
    user_pass_attribute      = 
    user_enabled_attribute   = userAccountControl
    user_enabled_mask        = 2
    user_enabled_default     = 512
    user_attribute_ignore    = password,tenant_id,tenants
    user_allow_create        = False
    user_allow_update        = False
    user_allow_delete        = False
    
    tenant_tree_dn           = OU=Tenants,DC=example,DC=com
    tenant_filter            =
    tenant_objectclass       = groupOfNames
    tenant_id_attribute      = cn
    tenant_member_attribute  = member
    tenant_name_attribute    = ou
    tenant_desc_attribute    = description
    tenant_enabled_attribute = extensionName
    tenant_attribute_ignore  = 
    tenant_allow_create      = True
    tenant_allow_update      = True
    tenant_allow_delete      = True
    
    role_tree_dn             = OU=Roles,DC=example,DC=com
    role_filter              =
    role_objectclass         = organizationalRole
    role_id_attribute        = cn
    role_name_attribute      = ou
    role_member_attribute    = roleOccupant
    role_attribute_ignore    =
    role_allow_create        = True
    role_allow_update        = True
    role_allow_delete        = True
    ...
    
  2. Identity Service を再起動します。

    # service openstack-keystone restart
    
  3. ユーザーの一覧を取得して、認証が機能していることをテストします。

    # keystone user-list