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_URL
을 v2.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
각 설정에 대한 설명:
설정 | 설명 |
---|---|
|
인증에 사용할 AD 도메인 컨트롤러입니다. LDAPS 포트 |
|
LDAP 쿼리에 사용할 AD 계정의 고유 이름입니다. 예를 들어 |
| 위에서 사용한 AD 계정의 일반 텍스트 암호입니다. |
|
AD 도메인 의 고유 이름입니다. |
| OpenStack 계정이 포함된 OU( 조직 단위 )입니다. |
|
LDAP 사용자의 유형을 정의합니다. AD의 경우 |
|
ID 서비스에 제공된 사용자를 필터링합니다. 결과적으로 grp-openstack 그룹의 멤버만 ID 서비스에 정의된 권한을 가질 수 있습니다. 이 값을 사용하려면 그룹의 전체 고유 이름: |
| 사용자 ID에 사용할 AD 값을 매핑합니다. |
| 이름에 사용할 AD 값을 매핑합니다. |
| 사용자 이메일 주소에 사용할 AD 값을 매핑합니다. |
| 이 값을 비워 둡니다. |
| 계정이 활성화되어 있는지 확인하는 AD 설정입니다. |
| 계정이 활성화되어 있는지 확인하기 위해 확인할 값을 정의합니다. 부울이 반환되지 않을 때 사용됩니다. |
| 계정이 활성화되어 있음을 나타내는 AD 값입니다. |
| ID 서비스에서 무시해야 하는 사용자 속성을 정의합니다. |
|
keystone에는 읽기 전용 액세스 권한만 필요하므로 이 값을 |
|
keystone에는 읽기 전용 액세스 권한만 필요하므로 이 값을 |
|
keystone에는 읽기 전용 액세스 권한만 필요하므로 이 값을 |
| 그룹에 사용할 AD 값을 매핑합니다. |
| 사용자 그룹이 포함된 OU( 조직 단위 )입니다. |
| ID 서비스에 제공된 그룹을 필터링합니다. |
| 그룹 ID에 사용할 AD 값을 매핑합니다. |
| 그룹 이름에 사용할 AD 값을 매핑합니다. |
|
keystone에는 읽기 전용 액세스 권한만 필요하므로 이 값을 |
|
keystone에는 읽기 전용 액세스 권한만 필요하므로 이 값을 |
|
keystone에는 읽기 전용 액세스 권한만 필요하므로 이 값을 |
| TLS를 사용할지 여부를 정의합니다. STARTTLS 대신 LDAPS로 암호화하는 경우 이 작업을 비활성화해야 합니다. |
| .crt 인증서 파일의 경로를 지정합니다. |
|
|
|
|
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)도 구성해야 합니다.
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. 이러한 역할 중 하나에 추가하여 프로젝트에 대한 액세스 권한을 사용자에게 부여합니다. 예를 들어 user1 을 demo 프로젝트의 일반 사용자가 되도록 하려면 member 역할에 추가합니다.
# openstack role add --project demo --user 1f24ec1f11aeb90520079c29f70afa060d22e2ce92b2eba7784c841ac418091e _member_
또는 user1 이 demo 프로젝트의 관리 사용자가 되도록 하려면 admin 역할에 추가합니다.
# openstack role add --project demo --user 1f24ec1f11aeb90520079c29f70afa060d22e2ce92b2eba7784c841ac418091e admin
결과적으로 user1 은 AD DS 사용자 이름과 암호를 입력하여 대시보드에 로그인할 수 있습니다.
사용자가 "오류: 컨테이너 목록을 검색할 수 없음" 오류가 발생하고 컨테이너를 관리할 수 있어야 하는 경우 SwiftOperator 역할에 추가해야 합니다.