2.3. ID 서비스 구성


이 단계에서는 IdM과의 통합을 위해 ID 서비스를 준비합니다.

참고

director를 사용하는 경우 아래에 참조되는 구성 파일은 Puppet에서 관리합니다. 결과적으로 openstack overcloud deploy 프로세스를 실행할 때마다 추가하는 사용자 정의 설정을 덮어쓸 수 있습니다. director 기반 배포에 이러한 설정을 적용하려면 4장. director와 함께 도메인별 LDAP 백엔드 사용 을 참조하십시오.

2.3.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 docker restart keystone

keystone 서비스를 실행하는 컨트롤러에서 다음 절차를 수행합니다.

  1. SELinux를 구성합니다.

    # setsebool -P authlogin_nsswitch_use_ldap=on
    Copy to Clipboard Toggle word wrap

    출력에는 다음과 유사한 메시지가 포함될 수 있습니다. 그들은 무시될 수 있습니다:

    Full path required for exclude: net:[4026532245].
    Copy to Clipboard Toggle word wrap
  2. 도메인 디렉터리를 생성합니다.

    # mkdir /var/lib/config-data/puppet-generated/keystone/etc/keystone/domains/
    # chown 42425:42425 /var/lib/config-data/puppet-generated/keystone/etc/keystone/domains/
    Copy to Clipboard Toggle word wrap
  3. 여러 백엔드를 사용하도록 ID 서비스를 구성합니다.

    참고

    yum 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
    Copy to Clipboard Toggle word wrap
    참고

    director를 사용하는 경우 /var/lib/config-data/puppet-generated/keystone/etc/keystone/keystone.conf 는 Puppet에서 관리합니다. 결과적으로 openstack overcloud deploy 프로세스를 실행할 때마다 추가하는 사용자 정의 설정을 덮어쓸 수 있습니다. 따라서 매번 이 구성을 수동으로 다시 추가해야 할 수 있습니다. director 기반 배포의 경우 4장. director와 함께 도메인별 LDAP 백엔드 사용 에서 참조하십시오.

  4. 대시보드에서 여러 도메인을 활성화합니다. /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'
    Copy to Clipboard Toggle word wrap
    참고

    director를 사용하는 경우 /var/lib/config-data/puppet-generated/horizon/etc/openstack-dashboard/local_settings 가 Puppet에서 관리합니다. 결과적으로 openstack overcloud deploy 프로세스를 실행할 때마다 추가하는 사용자 정의 설정을 덮어쓸 수 있습니다. 따라서 매번 이 구성을 수동으로 다시 추가해야 할 수 있습니다.

    horizon 컨테이너를 다시 시작하여 설정을 적용합니다.

    $ sudo docker restart horizon
    Copy to Clipboard Toggle word wrap
  5. 추가 백엔드를 구성합니다.

    1. IdM 통합을 위한 keystone 도메인을 생성합니다. 새 keystone 도메인에 사용할 이름을 결정한 다음 도메인을 생성합니다. 예를 들어 이 명령은 LAB:이라는 keystone 도메인을 생성합니다.

      $ openstack domain create LAB
      Copy to Clipboard Toggle word wrap
    2. 구성 파일을 생성합니다.

      IdM 백엔드를 추가하려면 /var/lib/config-data/puppet-generated/keystone/etc/keystone/domains/keystone.LAB.conf 라는 새 파일에 LDAP 설정을 입력합니다(랩이 이전에 생성된 도메인 이름임). IdM 배포에 맞게 아래 샘플 설정을 편집해야 합니다.

      [ldap]
      url =  ldaps://idm.lab.local
      user = uid=svc-ldap,cn=users,cn=accounts,dc=lab,dc=local
      user_filter = (memberOf=cn=grp-openstack,cn=groups,cn=accounts,dc=lab,dc=local)
      password = RedactedComplexPassword
      user_tree_dn = cn=users,cn=accounts,dc=lab,dc=local
      user_objectclass = inetUser
      user_id_attribute = uid
      user_name_attribute = uid
      user_mail_attribute = mail
      user_pass_attribute =
      group_tree_dn               = cn=groups,cn=accounts,dc=lab,dc=local
      group_objectclass              = groupOfNames
      group_id_attribute            = cn
      group_name_attribute       =  cn
      group_member_attribute  = member
      group_desc_attribute        = description
      use_tls                  = False
      query_scope                  = sub
      chase_referrals                  = false
      tls_cacertfile =/etc/pki/ca-trust/source/anchors/anchorsca.crt
      
      [identity]
      driver = ldap
      Copy to Clipboard Toggle word wrap

      각 설정에 대한 설명:

      Expand
      설정설명

      url

      인증에 사용할 IdM 서버입니다. LDAPS 포트 636 을 사용합니다.

      user

      LDAP 쿼리에 사용할 IdM 계정입니다.

      암호

      위에서 사용된 IdM 계정의 일반 텍스트 암호입니다.

      user_filter

      ID 서비스에 표시되는 사용자를 필터링합니다. 결과적으로 grp-openstack 그룹의 멤버만 ID 서비스에 정의된 권한을 가질 수 있습니다.

      user_tree_dn

      IdM의 OpenStack 계정 경로입니다.

      user_objectclass

      LDAP 사용자의 유형을 정의합니다. IdM의 경우 inetUser 유형을 사용합니다.

      user_id_attribute

      사용자 ID에 사용할 IdM 값을 매핑합니다.

      user_name_attribute

      이름에 사용할 IdM 값을 매핑합니다.

      user_mail_attribute

      사용자 이메일 주소에 사용할 IdM 값을 매핑합니다.

      user_pass_attribute

      이 값을 비워 둡니다.

      참고

      IdM 그룹과의 통합은 중첩 그룹이 아닌 직접 멤버만 반환합니다. 결과적으로 LDAP_MATCHING_RULE_IN_CHAIN 또는:1.2. 840.113556.1.4.1941: 을 사용하는 쿼리는 현재 IdM에서 작동하지 않습니다.

  6. 구성 파일의 소유권을 keystone 사용자로 변경합니다.

    # chown 42425:42425 /var/lib/config-data/puppet-generated/keystone/etc/keystone/domains/keystone.LAB.conf
    Copy to Clipboard Toggle word wrap
  7. admin 사용자에게 도메인에 대한 액세스 권한을 부여합니다.

    참고

    이 경우 OpenStack admin 계정에 IdM의 권한이 부여되지 않습니다. 이 경우 domain이라는 용어는 OpenStack의 keystone 도메인 사용을 나타냅니다.

    1. LAB 도메인의 ID 를 가져옵니다.

      $ openstack domain show LAB
      +---------+----------------------------------+
      | Field   | Value                            |
      +---------+----------------------------------+
      | enabled | True                             |
      | id      | 6800b0496429431ab1c4efbb3fe810d4 |
      | name    | LAB                              |
      +---------+----------------------------------+
      Copy to Clipboard Toggle word wrap
    2. admin 사용자의 ID 값을 가져옵니다.

      $ openstack user list --domain default | grep admin
      
      | 3d75388d351846c6a880e53b2508172a | admin      |
      Copy to Clipboard Toggle word wrap
    3. admin 역할의 ID 값을 가져옵니다.

      # openstack role list
      +----------------------------------+---------------+
      | ID                               | Name          |
      +----------------------------------+---------------+
      | 544d48aaffde48f1b3c31a52c35f01f9 | SwiftOperator |
      | 6d005d783bf0436e882c55c62457d33d | ResellerAdmin |
      | 785c70b150ee4c778fe4de088070b4cf | admin         |
      | 9fe2ff9ee4384b1894a90878d3e92bab | _member_      |
      +----------------------------------+---------------+
      Copy to Clipboard Toggle word wrap
    4. 반환된 도메인 및 admin ID를 사용하여 admin 사용자를 keystone LAB 도메인의 admin 역할에 추가하는 명령을 구성합니다.

      $ openstack role add --domain 6800b0496429431ab1c4efbb3fe810d4 --user 3d75388d351846c6a880e53b2508172a 785c70b150ee4c778fe4de088070b4cf
      Copy to Clipboard Toggle word wrap
  8. keystone 서비스를 다시 시작하여 변경 사항을 적용합니다.

    $ sudo docker restart keystone
    Copy to Clipboard Toggle word wrap
  9. 명령에 keystone 도메인 이름을 추가하여 IdM 도메인의 사용자 목록을 확인합니다.

    $ openstack user list --domain LAB
    Copy to Clipboard Toggle word wrap
  10. 로컬 keystone 데이터베이스에서 서비스 계정을 확인합니다.

    $ openstack user list --domain default
    Copy to Clipboard Toggle word wrap

2.3.2. IdM 그룹 구성원이 프로젝트에 액세스하도록 허용

인증된 사용자가 OpenStack 리소스에 액세스할 수 있도록 하려면 특정 IdM 그룹에 프로젝트에 대한 액세스 권한을 부여하도록 권한을 부여하는 것이 좋습니다. 이렇게 하면 OpenStack 관리자가 각 사용자를 프로젝트의 역할에 할당할 필요가 없습니다. 대신, IdM 그룹에 프로젝트에 역할이 부여됩니다. 결과적으로 이러한 IdM 그룹의 멤버인 IdM 사용자는 사전 결정된 프로젝트에 액세스할 수 있습니다.

참고

개별 IdM 사용자의 권한을 수동으로 관리하려면 2.3.3절. “IdM 사용자가 프로젝트에 액세스할 수 있도록 허용” 을 참조하십시오.

이 섹션에서는 IdM 관리자가 다음 단계를 이미 완료했다고 가정합니다.

  • IdM에 grp-openstack-admin 이라는 그룹을 생성합니다.
  • IdM에 grp-openstack-demo 라는 그룹을 생성합니다.
  • 필요에 따라 위의 그룹 중 하나에 IdM 사용자를 추가합니다.
  • grp-openstack 그룹에 IdM 사용자를 추가합니다.
  • 지정된 프로젝트를 고려하십시오. 이 예에서는 openstack project create --domain default --description "Demo Project" 데모를 사용하여 생성된 데모 프로젝트를 사용합니다.

이 단계에서는 IdM 그룹에 역할을 할당합니다. 그러면 그룹 멤버가 OpenStack 리소스에 액세스할 수 있는 권한이 있습니다.

  1. IdM 그룹 목록을 검색합니다.

    $ openstack group list --domain LAB
    +------------------------------------------------------------------+---------------------+
    | ID                                                               | Name                |
    +------------------------------------------------------------------+---------------------+
    | 185277be62ae17e498a69f98a59b66934fb1d6b7f745f14f5f68953a665b8851 | grp-openstack       |
    | a8d17f19f464c4548c18b97e4aa331820f9d3be52654aa8094e698a9182cbb88 | grp-openstack-admin |
    | d971bb3bd5e64a454cbd0cc7af4c0773e78d61b5f81321809f8323216938cae8 | grp-openstack-demo  |
    +------------------------------------------------------------------+---------------------+
    Copy to Clipboard Toggle word wrap
  2. 역할 목록을 검색합니다.

    $ openstack role list
    +----------------------------------+---------------+
    | ID                               | Name          |
    +----------------------------------+---------------+
    | 0969957bce5e4f678ca6cef00e1abf8a | ResellerAdmin |
    | 1fcb3c9b50aa46ee8196aaaecc2b76b7 | admin         |
    | 9fe2ff9ee4384b1894a90878d3e92bab | _member_      |
    | d3570730eb4b4780a7fed97eba197e1b | SwiftOperator |
    +----------------------------------+---------------+
    Copy to Clipboard Toggle word wrap
  3. 이러한 역할 중 하나 이상에 추가하여 IdM 그룹에 프로젝트에 대한 액세스 권한을 부여합니다. 예를 들어 grp-openstack-demo 그룹의 사용자가 demo 프로젝트의 일반 사용자가 되도록 하려면 _member_ 역할에 그룹을 추가해야 합니다.

    $ openstack role add --project demo --group d971bb3bd5e64a454cbd0cc7af4c0773e78d61b5f81321809f8323216938cae8  _member_
    Copy to Clipboard Toggle word wrap

결과적으로 grp-openstack-demo 의 멤버는 도메인 필드에 LAB 을 입력하는 경우 IdM 사용자 이름과 암호를 입력하여 대시보드에 로그인할 수 있습니다.

참고

사용자에게 Error: Unable to retrieve container list 가 표시되면 컨테이너 목록을 검색할 수 있으며 컨테이너를 관리할 수 있을 것으로 예상되는 경우 SwiftOperator 역할에 추가해야 합니다.

2.3.3. IdM 사용자가 프로젝트에 액세스할 수 있도록 허용

grp-openstack IdM 그룹의 멤버인 IdM 사용자에게는 대시보드에서 프로젝트에 로그인할 수 있는 권한을 부여할 수 있습니다.

  1. IdM 사용자 목록을 검색합니다.

    # openstack user list --domain LAB
     +------------------------------------------------------------------+----------------+
    | ID                                                               | Name           |
    +------------------------------------------------------------------+----------------+
    | 1f24ec1f11aeb90520079c29f70afa060d22e2ce92b2eba7784c841ac418091e | user1          |
    | 12c062faddc5f8b065434d9ff6fce03eb9259537c93b411224588686e9a38bf1 | user2          |
    | afaf48031eb54c3e44e4cb0353f5b612084033ff70f63c22873d181fdae2e73c | user3          |
    | e47fc21dcf0d9716d2663766023e2d8dc15a6d9b01453854a898cabb2396826e | user4          |
    +------------------------------------------------------------------+----------------+
    Copy to Clipboard Toggle word wrap
  2. 역할 목록을 검색합니다.

    # openstack role list
    +----------------------------------+---------------+
    | ID                               | Name          |
    +----------------------------------+---------------+
    | 544d48aaffde48f1b3c31a52c35f01f9 | SwiftOperator |
    | 6d005d783bf0436e882c55c62457d33d | ResellerAdmin |
    | 785c70b150ee4c778fe4de088070b4cf | admin         |
    | 9fe2ff9ee4384b1894a90878d3e92bab | _member_      |
    +----------------------------------+---------------+
    Copy to Clipboard Toggle word wrap
  3. 이러한 역할 중 하나 이상에 추가하여 사용자에게 프로젝트에 대한 액세스 권한을 부여합니다. 예를 들어 user1demo 프로젝트의 일반 사용자가 되도록 하려면 member 역할에 추가합니다.

    # openstack role add --project demo --user 1f24ec1f11aeb90520079c29f70afa060d22e2ce92b2eba7784c841ac418091e _member_
    Copy to Clipboard Toggle word wrap

    또는 user1demo 프로젝트의 관리자인 경우 admin 역할에 추가합니다.

    # openstack role add --project demo --user 1f24ec1f11aeb90520079c29f70afa060d22e2ce92b2eba7784c841ac418091e admin
    Copy to Clipboard Toggle word wrap

    결과적으로 user1Domain 필드에 LAB 을 입력하는 경우 IdM 사용자 이름과 암호를 입력하여 대시보드에 로그인할 수 있습니다.

참고

사용자에게 Error: Unable to retrieve container list 가 표시되면 컨테이너 목록을 검색할 수 있으며 컨테이너를 관리할 수 있을 것으로 예상되는 경우 SwiftOperator 역할에 추가해야 합니다.

맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2026 Red Hat