1.8. ID 서비스 구성


이러한 단계는 AD DS와의 통합을 위해 ID 서비스를 준비합니다.

1.8.1. keystone v3에 대한 명령행 액세스 활성화

명령줄에서 ID 서비스 도메인을 관리하려면 keystone v3에 대한 액세스를 활성화해야 합니다.

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

1. 기존 환경 변수 파일의 사본을 생성합니다. director 기반 배포에서는 overcloudrc:라고 합니다.

$ cp overcloudrc overcloudrc-v3

2.overcloudrc-v3 파일을 편집합니다.

  • OS_AUTH_URLv2.0 에서 v3 로 변경합니다. 예를 들면 다음과 같습니다.
export OS_AUTH_URL=https://controllerIP:5000/v3/
  • overcloudrc-v3 하단에 다음 항목을 추가합니다.
export OS_IDENTITY_API_VERSION=3
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default

3. 파일을 가져와 현재 명령행 세션에 대해 다음 옵션을 활성화합니다.

$ source overcloudrc-v3

1.8.2. 컨트롤러 구성

keystone 서비스를 실행하는 컨트롤러에서 다음 절차를 수행합니다. 여러 컨트롤러에서 HA 환경을 실행하는 경우 각 컨트롤러에서 다음 단계를 수행해야 합니다.

1. SELinux를 구성합니다.

# setsebool -P authlogin_nsswitch_use_ldap=on

출력에는 이와 유사한 메시지가 포함될 수 있습니다. 무시될 수 있습니다.

Full path required for exclude: net:[4026532245].

2. 도메인 디렉터리를 생성합니다.

# mkdir /etc/keystone/domains/
# chown keystone /etc/keystone/domains/

3. 여러 백엔드를 사용하도록 ID 서비스를 구성합니다.

참고

yum install crudini 를 사용하여 crudini를 설치해야 할 수 있습니다.

# crudini --set /etc/keystone/keystone.conf identity domain_specific_drivers_enabled true
# crudini --set /etc/keystone/keystone.conf identity domain_config_dir /etc/keystone/domains
# crudini --set /etc/keystone/keystone.conf assignment driver sql
참고

Red Hat OpenStack Platform director를 사용하는 경우 /etc/keystone/keystone.conf 는 Puppet에서 관리합니다. 결과적으로 openstack overcloud deploy 프로세스를 실행할 때마다 추가한 사용자 정의 구성을 덮어쓸 수 있었습니다. 따라서 이 구성을 매번 수동으로 다시 추가해야 할 수 있습니다. 향후 director 릴리스에는 배포 후 스크립트를 사용하여 이러한 설정을 자동으로 다시 적용할 수 있는 Puppet 매개변수가 포함될 것으로 예상됩니다.

4. 추가 백엔드를 구성합니다.

이 예제에서 LAB 는 ID 서비스 도메인으로 사용할 NetBIOS 이름입니다.

a. AD DS 통합을 위한 keystone 도메인을 만듭니다.

이전에 검색한 NetBIOS 이름 값을 도메인 이름으로 사용합니다. 이 방법을 사용하면 로그인 프로세스 중에 사용자에게 일관된 도메인 이름을 표시할 수 있습니다. 예를 들어 NetBIOS 이름이 LAB 인 경우:

# openstack domain create LAB
참고

이 명령을 사용할 수 없는 경우 # source overcloudrc-v3 를 실행하여 명령행 세션에 keystone v3을 활성화했는지 확인합니다.

b. 구성 파일을 생성합니다.

AD DS 백엔드를 추가하려면 /etc/keystone/domains/keystone.LAB.conf 라는 새 파일에 LDAP 설정을 입력합니다(여기서 LAB 는 이전에 검색한 NetBIOS 이름임). 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
user_allow_create        = False
user_allow_update        = False
user_allow_delete        = False
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
group_allow_create       = False
group_allow_update       = False
group_allow_delete       = False
use_tls                  = False
tls_cacertfile                  = /etc/ssl/certs/addc.lab.local.crt
query_scope                  = sub
chase_referrals                  = false

[identity]
driver = keystone.identity.backends.ldap.Identity

각 설정에 대한 설명:

설정설명

url

인증에 사용할 AD 도메인 컨트롤러입니다. LDAPS 포트 636 을 사용합니다.

user

LDAP 쿼리에 사용할 AD 계정의 고유 이름입니다. 예를 들어 Get-ADuser svc-ldap 를 사용하여 AD에서 svc-ldap 계정의 Distinguished Name 값을 찾을 수 있습니다.

암호

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

suffix

AD 도메인 의 고유 이름입니다. Get-ADDomain을 사용하여 이 값을 찾을 수 있습니다 | DistinguishedName을 선택합니다.

user_tree_dn

OpenStack 계정이 포함된 OU( 조직 단위 )입니다.

user_objectclass

LDAP 사용자의 유형을 정의합니다. AD의 경우 person 유형을 사용합니다.

user_filter

ID 서비스에 제공된 사용자를 필터링합니다. 결과적으로 grp-openstack 그룹의 멤버만 ID 서비스에 정의된 권한을 가질 수 있습니다. 이 값을 사용하려면 그룹의 전체 고유 이름: Get-ADGroup grp-openstack | DistinguishedName 을 선택합니다.

user_id_attribute

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

user_name_attribute

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

user_mail_attribute

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

user_pass_attribute

이 값을 비워 둡니다.

user_enabled_attribute

계정이 활성화되어 있는지 확인하는 AD 설정입니다.

user_enabled_mask

계정이 활성화되어 있는지 확인하기 위해 확인할 값을 정의합니다. 부울이 반환되지 않을 때 사용됩니다.

user_enabled_default

계정이 활성화되어 있음을 나타내는 AD 값입니다.

user_attribute_ignore

ID 서비스에서 무시해야 하는 사용자 속성을 정의합니다.

user_allow_create

keystone에는 읽기 전용 액세스 권한만 필요하므로 이 값을 False 로 설정합니다.

user_allow_update

keystone에는 읽기 전용 액세스 권한만 필요하므로 이 값을 False 로 설정합니다.

user_allow_delete

keystone에는 읽기 전용 액세스 권한만 필요하므로 이 값을 False 로 설정합니다.

group_objectclass

그룹에 사용할 AD 값을 매핑합니다.

group_tree_dn

사용자 그룹이 포함된 OU( 조직 단위 )입니다.

group_filter

ID 서비스에 제공된 그룹을 필터링합니다.

group_id_attribute

그룹 ID에 사용할 AD 값을 매핑합니다.

group_name_attribute

그룹 이름에 사용할 AD 값을 매핑합니다.

group_allow_create

keystone에는 읽기 전용 액세스 권한만 필요하므로 이 값을 False 로 설정합니다.

group_allow_update

keystone에는 읽기 전용 액세스 권한만 필요하므로 이 값을 False 로 설정합니다.

group_allow_delete

keystone에는 읽기 전용 액세스 권한만 필요하므로 이 값을 False 로 설정합니다.

use_tls

TLS를 사용할지 여부를 정의합니다. STARTTLS 대신 LDAPS로 암호화하는 경우 이 작업을 비활성화해야 합니다.

tls_cacertfile

.crt 인증서 파일의 경로를 지정합니다.

query_scope

grp-openstack 그룹의 멤버인 사용자를 찾을 때 중첩된 하위 OU 내에서도 검색하도록 ID 서비스를 구성합니다.

chase_referrals

false 로 설정하면 이 설정이 python-ldap 가 모든 추천을 익명 액세스로 묶지 않도록 합니다.

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

# chown keystone /etc/keystone/domains/keystone.LAB.conf

7. 로그인 페이지에서 LAB keystone 도메인을 사용하도록 대시보드를 구성합니다. /etc/openstack-dashboard/local_settings:에 다음 행을 추가합니다.

중요

다중 도메인 대시보드 구성은 이 버전의 Red Hat OpenStack Platform에서 지원되지 않습니다. 결과적으로 이 가이드에서는 단일 도메인에 대한 대시보드 구성만 설명합니다.

OPENSTACK_API_VERSIONS = {
    "identity": 3
}
OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = 'LAB'
참고

Red Hat OpenStack Platform director를 사용하는 경우 /etc/openstack-dashboard/local_settings 는 Puppet에서 관리합니다. 결과적으로 openstack overcloud deploy 프로세스를 실행할 때마다 추가한 사용자 정의 구성을 덮어쓸 수 있었습니다. 따라서 이 구성을 매번 수동으로 다시 추가해야 할 수 있습니다. 향후 director 릴리스에는 배포 후 스크립트를 사용하여 이러한 설정을 자동으로 다시 적용할 수 있는 Puppet 매개변수가 포함될 것으로 예상됩니다.

8. httpd 서비스를 다시 시작하여 변경 사항을 적용합니다.

# systemctl restart httpd.service

9. 도메인에 대한 admin 사용자에게 액세스 권한을 부여합니다.

참고

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

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

# openstack domain show LAB
+---------+----------------------------------+
| Field   | Value                            |
+---------+----------------------------------+
| enabled | True                             |
| id      | 6800b0496429431ab1c4efbb3fe810d4 |
| name    | LAB                              |
+---------+----------------------------------+

b. admin 사용자의 ID 값을 가져옵니다.

# openstack user list --domain default | grep admin
| 3d75388d351846c6a880e53b2508172a | admin      |

c. admin 역할의 ID 값을 가져옵니다.

# openstack role list
+----------------------------------+---------------+
| ID                               | Name          |
+----------------------------------+---------------+
| 544d48aaffde48f1b3c31a52c35f01f9 | SwiftOperator |
| 6d005d783bf0436e882c55c62457d33d | ResellerAdmin |
| 785c70b150ee4c778fe4de088070b4cf | admin         |
| 9fe2ff9ee4384b1894a90878d3e92bab | _member_      |
+----------------------------------+---------------+

d. 반환된 도메인 및 관리자 ID를 사용하여 admin 사용자를 keystone LAB 도메인의 admin 역할에 추가하는 명령을 구성합니다.

# openstack role add --domain 6800b0496429431ab1c4efbb3fe810d4 --user 3d75388d351846c6a880e53b2508172a 785c70b150ee4c778fe4de088070b4cf

10. 명령에 NetBIOS 이름을 추가하여 AD DS 도메인의 사용자 목록을 확인합니다.

참고

재부팅 또는 서비스를 다시 시작한 후 LDAP를 쿼리할 수 있는 시간이 걸릴 수 있습니다.

# openstack user list --domain LAB

11. 로컬 ID 서비스 데이터베이스에서 서비스 계정을 확인합니다.

# openstack user list --domain default

1.8.3. keystone v3을 사용하도록 Compute 구성

Compute는 기본적으로 keystone v2.0을 사용하므로 다중 도메인 기능을 사용하려면 keystone v3을 사용하도록 구성해야 합니다.

1. 각 컴퓨팅 노드 및 컨트롤러에서 keystone_authtoken 값을 조정합니다.

# crudini --set /etc/nova/nova.conf keystone_authtoken auth_version v3

2. 컨트롤러에서 이러한 서비스를 다시 시작하여 변경 사항을 적용합니다.

# systemctl restart openstack-nova-api.service openstack-nova-cert.service openstack-nova-conductor.service openstack-nova-consoleauth.service openstack-nova-novncproxy.service openstack-nova-scheduler.service

3. 각 컴퓨팅 노드에서 이 서비스를 다시 시작하여 변경 사항을 적용합니다.

# systemctl restart openstack-nova-compute.service

1.8.4. keystone v3을 사용하도록 블록 스토리지를 구성

keystone v3에 인증하도록 Block Storage(cinder)도 구성해야 합니다.

  1. In /etc/cinder/cinder.conf:

    [keystone_authtoken]
    auth_uri = https://controllerIP:5000/v3
    auth_version = v3
    • auth_uri - controllerIP 를 컨트롤러의 IP 주소로 바꿉니다. 배포에 컨트롤러가 두 개 이상 있는 경우 컨트롤러 IP 대신 keystone 엔드포인트 VIP를 사용해야 합니다.

1.8.5. Active Directory 그룹 멤버가 프로젝트에 액세스하도록 허용

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

참고

개별 Active Directory 사용자의 권한을 수동으로 관리하려면 다음 섹션을 참조하십시오. 개별 Active Directory 사용자가 프로젝트에 액세스하도록 허용

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

  • Active Directory에서 grp-openstack-admin 이라는 그룹을 만듭니다.
  • Active Directory에서 grp-openstack-demo 라는 그룹을 만듭니다.
  • 필요에 따라 위의 그룹 중 하나에 Active Directory 사용자를 추가합니다.
  • grp-openstack 그룹에 Active Directory 사용자를 추가합니다.

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

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

# openstack group list --domain LAB
+------------------------------------------------------------------+---------------------+
| ID                                                               | Name                |
+------------------------------------------------------------------+---------------------+
| 185277be62ae17e498a69f98a59b66934fb1d6b7f745f14f5f68953a665b8851 | grp-openstack       |
| a8d17f19f464c4548c18b97e4aa331820f9d3be52654aa8094e698a9182cbb88 | grp-openstack-admin |
| d971bb3bd5e64a454cbd0cc7af4c0773e78d61b5f81321809f8323216938cae8 | grp-openstack-demo  |
+------------------------------------------------------------------+---------------------+

2. 역할 목록을 검색합니다.

# openstack role list
+----------------------------------+---------------+
| ID                               | Name          |
+----------------------------------+---------------+
| 0969957bce5e4f678ca6cef00e1abf8a | ResellerAdmin |
| 1fcb3c9b50aa46ee8196aaaecc2b76b7 | admin         |
| 9fe2ff9ee4384b1894a90878d3e92bab | _member_      |
| d3570730eb4b4780a7fed97eba197e1b | SwiftOperator |
+----------------------------------+---------------+

3. 이러한 역할 중 하나에 추가하여 Active Directory 그룹에 프로젝트에 대한 액세스 권한을 부여합니다. 예를 들어 grp-openstack-demo 그룹의 사용자가 demo 프로젝트의 일반 사용자가 되려면 해당 그룹을 member 역할에 추가해야 합니다.

# openstack role add --project demo --group d971bb3bd5e64a454cbd0cc7af4c0773e78d61b5f81321809f8323216938cae8  _member_

결과적으로 grp-openstack-demo 의 멤버는 AD DS 사용자 이름과 암호를 입력하여 대시보드에 로그인할 수 있습니다.

참고

사용자가 "오류: 컨테이너 목록을 검색할 수 없음" 오류가 발생하고 컨테이너를 관리할 수 있어야 하는 경우 SwiftOperator 역할에 추가해야 합니다.

1.8.6. Active Directory 사용자가 프로젝트에 액세스할 수 있도록 허용

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

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

# openstack user list --domain LAB
 +------------------------------------------------------------------+----------------+
| ID                                                               | Name           |
+------------------------------------------------------------------+----------------+
| 1f24ec1f11aeb90520079c29f70afa060d22e2ce92b2eba7784c841ac418091e | user1          |
| 12c062faddc5f8b065434d9ff6fce03eb9259537c93b411224588686e9a38bf1 | user2          |
| afaf48031eb54c3e44e4cb0353f5b612084033ff70f63c22873d181fdae2e73c | user3          |
| e47fc21dcf0d9716d2663766023e2d8dc15a6d9b01453854a898cabb2396826e | user4          |
+------------------------------------------------------------------+----------------+

2. 역할 목록을 검색합니다.

# openstack role list
+----------------------------------+---------------+
| ID                               | Name          |
+----------------------------------+---------------+
| 544d48aaffde48f1b3c31a52c35f01f9 | SwiftOperator |
| 6d005d783bf0436e882c55c62457d33d | ResellerAdmin |
| 785c70b150ee4c778fe4de088070b4cf | admin         |
| 9fe2ff9ee4384b1894a90878d3e92bab | _member_      |
+----------------------------------+---------------+

3. 이러한 역할 중 하나에 추가하여 프로젝트에 대한 액세스 권한을 사용자에게 부여합니다. 예를 들어 user1demo 프로젝트의 일반 사용자가 되도록 하려면 member 역할에 추가합니다.

# openstack role add --project demo --user 1f24ec1f11aeb90520079c29f70afa060d22e2ce92b2eba7784c841ac418091e _member_

또는 user1demo 프로젝트의 관리 사용자가 되도록 하려면 admin 역할에 추가합니다.

# openstack role add --project demo --user 1f24ec1f11aeb90520079c29f70afa060d22e2ce92b2eba7784c841ac418091e admin

결과적으로 user1 은 AD DS 사용자 이름과 암호를 입력하여 대시보드에 로그인할 수 있습니다.

참고

사용자가 "오류: 컨테이너 목록을 검색할 수 없음" 오류가 발생하고 컨테이너를 관리할 수 있어야 하는 경우 SwiftOperator 역할에 추가해야 합니다.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.