検索

1.8. Identity サービスの設定

download PDF

以下のステップでは、Identity サービス (keystone) を AD DS と統合するための準備をします。

注記

director を使用している場合には、以下で参照されている設定ファイルが Puppet によって管理されている点に注意してください。このため、openstack overcloud deploy プロセスを実行するたびに、自分で追加したカスタム設定が上書きされる可能性があります。これらの設定を director ベースのデプロイメントに適用するには、「4章director でのドメイン固有の LDAP バックエンドの使用」を参照してください。

1.8.1. コントローラーの設定

注記

設定ファイルを更新する場合には、特定の OpenStack サービスはコンテナー内で実行されるようになったことを認識する必要があります。これは、keystone、nova、cinder などのサービスが対象です。そのため、考慮すべき特定の管理プラクティスがいくつかあります。

  • 物理ノードのホストオペレーティングシステム上の設定ファイル (例: /etc/cinder/cinder.conf) は更新しないでください。コンテナー化されたサービスはこのようなファイルを参照しません。
  • コンテナー内で実行されている設定ファイルは更新しないでください。コンテナーを再起動すると変更が失われてしまいます。

    代わりに、コンテナー化されたサービスに変更を加える必要がある場合は、コンテナーの生成に使用される設定ファイルを更新する必要があります。これらのファイルは /var/lib/config-data/puppet-generated/ 内に保管されています。

    以下に例を示します。

  • keystone: /var/lib/config-data/puppet-generated/keystone/etc/keystone/keystone.conf
  • cinder: /var/lib/config-data/puppet-generated/cinder/etc/cinder/cinder.conf
  • nova: /var/lib/config-data/puppet-generated/nova/etc/nova/nova.conf

    変更内容は、サービスを再起動した後に適用されます。例: sudo systemctl restart tripleo_keystone

keystone サービスを実行しているそれぞれの OpenStack ノードで、以下の手順を実行します。

  1. SELinux を設定します。

    # setsebool -P authlogin_nsswitch_use_ldap=on

    出力には、以下のようなメッセージが含まれている場合がありますが、これは無視できます。

    Full path required for exclude: net:[4026532245].
  2. domains ディレクトリーを作成します。

    # mkdir /var/lib/config-data/puppet-generated/keystone/etc/keystone/domains/
    # chown 42425:42425 /var/lib/config-data/puppet-generated/keystone/etc/keystone/domains/
  3. keystone が複数のバックエンドを使用するように設定します。

    注記

    dnf install crudini を使用して crudini をインストールする必要がある場合があります。

    # crudini --set /var/lib/config-data/puppet-generated/keystone/etc/keystone/keystone.conf identity domain_specific_drivers_enabled true
    # crudini --set /var/lib/config-data/puppet-generated/keystone/etc/keystone/keystone.conf identity domain_config_dir /etc/keystone/domains
    # crudini --set /var/lib/config-data/puppet-generated/keystone/etc/keystone/keystone.conf assignment driver sql
    注記

    director を使用している場合には、/var/lib/config-data/puppet-generated/keystone/etc/keystone/keystone.conf が Puppet によって管理されている点に注意してください。このため、openstack overcloud deploy プロセスを実行するたびに、自分で追加したカスタム設定が上書きされる可能性があります。上書きされた場合には、この設定を毎回手動で追加し直す必要がある場合があります。director ベースのデプロイメントについては、「4章director でのドメイン固有の LDAP バックエンドの使用」を参照してください。

  4. Dashboard で複数のドメインを有効にします。以下の行を /var/lib/config-data/puppet-generated/horizon/etc/openstack-dashboard/local_settings に追加します。

    OPENSTACK_API_VERSIONS = {
        "identity": 3
    }
    OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True
    OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = 'Default'
    注記

    director を使用している場合には、/var/lib/config-data/puppet-generated/horizon/etc/openstack-dashboard/local_settings が Puppet によって管理されている点に注意してください。このため、openstack overcloud deploy プロセスを実行するたびに、自分で追加したカスタム設定が上書きされる可能性があります。上書きされた場合には、この設定を毎回手動で追加し直す必要がある場合があります。

    horizon コンテナーを再起動して、設定を適用します。

    $ sudo systemctl restart tripleo_horizon
  5. 追加のバックエンドを設定します。

    以下の例では、LAB は、Identity サービスドメインとして使用する NetBIOS の名前です。

    1. AD DS を統合するための keystone ドメインを作成します。

      上記のステップで取得した NetBIOS 名の値をドメイン名として使用します。このアプローチでは、ログインプロセス中に、一貫したドメイン名をユーザーに提示することができます。たとえば、NetBIOS 名が LAB の場合には、以下のコマンドを実行します。

      $ openstack domain create LAB
      注記

      このコマンドが使用できない場合には、# source overcloudrc-v3 のコマンドを実行して、コマンドラインセッションでの keystone v3 へのアクセスが有効化されているかどうかを確認します。

    2. 設定ファイルを作成します。

      AD DS バックエンドを追加するには、/var/lib/config-data/puppet-generated/keystone/etc/keystone/domains/keystone.LAB.conf (LAB は、前のステップで取得した NetBIOS 名に置き換えます) という名前の新規ファイルに LDAP 設定を入力します。以下の設定例は、実際に使用する AD DS デプロイメントに合わせて編集する必要があります。

      [ldap]
      url                  = ldaps://addc.lab.local:636
      user                  = CN=svc-ldap,OU=labUsers,DC=lab,DC=local
      password                 = RedactedComplexPassword
      suffix                   = DC=lab,DC=local
      user_tree_dn             = OU=labUsers,DC=lab,DC=local
      user_objectclass         = person
      user_filter                  = (|(memberOf=cn=grp-openstack,OU=labUsers,DC=lab,DC=local)(memberOf=cn=grp-openstack-admin,OU=labUsers,DC=lab,DC=local)(memberOf=memberOf=cn=grp-openstack-demo,OU=labUsers,DC=lab,DC=local))
      user_id_attribute        = sAMAccountName
      user_name_attribute      = sAMAccountName
      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
      group_objectclass        = group
      group_tree_dn            = OU=labUsers,DC=lab,DC=local
      group_filter             = (CN=grp-openstack*)
      group_id_attribute       = cn
      group_name_attribute     = name
      use_tls                  = False
      tls_cacertfile                  =/etc/pki/ca-trust/source/anchors/anchorsaddc.lab.local.pem
      
      query_scope                  = sub
      chase_referrals                  = false
      
      [identity]
      driver = ldap

      各設定項目について説明します。

      設定説明

      url

      認証に使用する AD Domain Controller。LDAPS ポート 636 を使用します。

      user

      LDAP クエリーに使用する AD アカウントの 識別名。たとえば、Get-ADuser svc-ldap | select DistinguishedName を使用する AD 内の svc-ldap アカウントの 識別名 の値を特定することができます。

      password

      上記で使用した AD アカウントのパスワード (プレーンテキスト形式)。

      suffix

      AD ドメインの 識別名。この値は、Get-ADDomain | select DistinguishedName を使用して特定することができます。

      user_tree_dn

      OpenStack アカウントを含む 組織単位 (OU)。

      user_objectclass

      LDAP ユーザーの種別を定義します。AD には person の種別を使用します。

      user_filter

      Identity サービスに対して提示するユーザーをフィルタリングします。その結果、grp-openstack グループのメンバーのみに Identity サービスで定義されているパーミッションを付与することができます。この値には、グループの 完全な識別名 が必要です: Get-ADGroup grp-openstack | select DistinguishedName

      user_id_attribute

      ユーザー ID に使用する AD 値をマッピングします。

      user_name_attribute

      names に使用する AD 値をマッピングします。

      user_mail_attribute

      ユーザーのメールアドレスに使用する AD 値をマッピングします。

      user_pass_attribute

      この値は空白のままにします。

      user_enabled_attribute

      アカウントが有効にされているかどうかを検証する AD の設定。

      user_enabled_mask

      アカウントが有効化されているかを判断するために確認すべき値を定義します。ブール値が返されない場合に使用します。

      user_enabled_default

      アカウントが有効化されていることを示す AD 値。

      user_attribute_ignore

      Identity サービスが無視する必要のあるユーザー属性を定義します。

      group_objectclass

      groups に使用する AD 値をマッピングします。

      group_tree_dn

      そのユーザーグループを含む 組織単位 (OU)。

      group_filter

      Identity サービスに提示するグループをフィルタリングします。

      group_id_attribute

      グループ ID に使用する AD 値をマッピングします。

      group_name_attribute

      グループ名に使用する AD 値をマッピングします。

      use_tls

      TLS を使用するかどうかを定義します。STARTTLS ではなく LDAPS で暗号化する場合には、無効にする必要があります。

      tls_cacertfile

      .crt 証明書ファイルへのパスを指定します。

      query_scope

      grp-openstack グループに所属するユーザーを特定する場合に、Identity サービスがネスト化された子 OU 内での検索ができるように設定します。

      chase_referrals

      false に設定します。この設定により python-ldap が匿名のアクセスによる全参照を追跡しないようにします。

  6. 設定ファイルの所有権を keystone ユーザーに変更します。

    # chown 42425:42425 /var/lib/config-data/puppet-generated/keystone/etc/keystone/domains/keystone.LAB.conf
  7. keystone サービスを再起動して、変更を適用します。

    # sudo podman exec -it keystone pkill -HUP -f keystone
  8. admin ユーザーに、ドメインのアクセス権を付与します。

    注記

    この手順を実行しても、OpenStack admin アカウントには実際の AD DS ドメインに対するパーミッションは付与されない点を念頭に置いてください。この場合には、ドメイン という用語は、OpenStack が使用する keystone ドメインのことを指しています。

    1. LAB ドメインの ID を取得します。

      # openstack domain show LAB
      +---------+----------------------------------+
      | Field   | Value                            |
      +---------+----------------------------------+
      | enabled | True                             |
      | id      | 6800b0496429431ab1c4efbb3fe810d4 |
      | name    | LAB                              |
      +---------+----------------------------------+
    2. admin ユーザーの ID の値を取得します。

      # openstack user list --domain default | grep admin
      | 3d75388d351846c6a880e53b2508172a | admin      |
    3. admin ロールの ID の値を取得します。

      # openstack role list
      +----------------------------------+-----------------+
      | ID                               | Name            |
      +----------------------------------+-----------------+
      | 01d92614cd224a589bdf3b171afc5488 | admin           |
      | 034e4620ed3d45969dfe8992af001514 | member          |
      | 0aa377a807df4149b0a8c69b9560b106 | ResellerAdmin   |
      | 9369f2bf754443f199c6d6b96479b1fa | heat_stack_user |
      | cfea5760d9c948e7b362abc1d06e557f | reader          |
      | d5cb454559e44b47aaa8821df4e11af1 | swiftoperator   |
      | ef3d3f510a474d6c860b4098ad658a29 | service         |
      +----------------------------------+-----------------+
    4. 返されたドメインおよび admin の ID を使用して、keystone LAB ドメインの admin ロールに admin ユーザーを 追加するコマンドを構築します。

      # openstack role add --domain 6800b0496429431ab1c4efbb3fe810d4 --user 3d75388d351846c6a880e53b2508172a 785c70b150ee4c778fe4de088070b4cf
    5. コマンドで NetBIOS 名を指定して、AD DS ドメイン内のユーザー一覧を確認します。

      注記

      リブートまたはサービスの再起動後には、LDAP に対してクエリーを実行できるようになるまでに多少時間がかかる場合があります。

      # openstack user list --domain LAB
    6. ローカルの Identity サービスデータベース内のサービスアカウントを確認します。

      # openstack user list --domain default
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.