목적
Openstack keystone 서비스를 AD와 연동하여 openstack 사용자 인증을 AD 디렉토리 인증을 사용하도록 함.
MultiDomian 구성 개요
- Openstack keystone을 muiti-doamin 모드로 변경
- Openstack 빌트인 사용자인증 도메인을 default로 인증.
- 일반 사용자들의 인증은 AD_NAME 도메인으로 지정하여 AD 인증.
- Default도메인의 admin에 AD_NAME 의 admin role을 할당하여 권한 관리

사전 요구 사항
- 특정 도메인 네임(AD_NAME.co.kr)으로 구성된 Active Directory 서비스
- keystone 모듈이 AD 서버 LDAP 바인딩을 위한 계정(ldap@AD_NAME.co.kr)
- 일반 사용자로 할당할 계정이 포함된 OU 나 Group
구성 방법
1) keystonerc_admin_v3 파일 생성 및 수정
# cp keystonerc_admin keystonerc_admin_v3
|
keystonerc_admin_v3 파일 수정 (v2.0 을 V3로 수정)
keystonerc_admin_v3 파일 마지막에 아래 내용 추가
export OS_IDENTITY_API_VERSION=3
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
|
2) controller 설정
SElinux 사용중인 경우 아래와 같이 LDAP 조회 허용 설정
# setsebool -P authlogin_nsswitch_use_ldap=on
|
아래와 같이 출력되면 정상
Full path required for exclude: net:[4026532245].
|
keystone 이 사용할 도메인용 conf 파일 추가를 위한 디렉토리 생성
# mkdir /etc/keystone/domains/
# chown keystone /etc/keystone/domains/
|
도메인 기반의 keytone 사용을 위한 keystone 설정 변경
# openstack-config --set /etc/keystone/keystone.conf identity domain_specific_drivers_enabled true
# openstack-config --set /etc/keystone/keystone.conf identity domain_config_dir /etc/keystone/domains
# openstack-config --set /etc/keystone/keystone.conf assignment driver keystone.assignment.backends.sql.Assignment
|
도메인 기반 인증 UI로 dashboard 설정 변경을 위한 /etc/openstack-dashboard/local_settings 파일 수정
OPENSTACK_API_VERSIONS = { "identity": 3 }
OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True
OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = 'Default'
|
keystone 및 httpd 재시작
# systemctl restart openstack-keystone.service
# systemctl restart httpd
|
openstack 에서 AD_NAME 도메인 추가 (실제 사용할 AD 도메인의 NetBIOSName으로 등록)
# openstack domain create AD_NAME
|
Neople 도메인 인증시 사용할 conf 파일 생성 및 내용 추가
/etc/keystone/domains/keystone.AD_NAME.conf 생성 및 아래 내용 추가
[ldap]
query_scope = sub
url = ldap:
user = CN=ldap,OU=Domain Users,DC=AD_NAME,DC=co,DC=kr
password = ****
suffix = dc=AD_NAME,dc=co,dc=kr
user_tree_dn = OU=AD_NAME,OU=Domain Users,DC=neople,DC=co,DC=kr
user_objectclass = person
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
[identity]
driver = keystone.identity.backends.ldap.Identity
|
위에서 생성한 파일을 keystone 소유로 할당
# chown keystone /etc/keystone/domains/keystone.AD_NAME.conf
|
admin user 에게 AD_NAME 도메인 권한 부여
1.AD_NAME 도메인의 ID 확인
# openstack domain show AD_NAME
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | |
| enabled | True |
| id | ebc6dd274b074f8abf32966bfec9157a |
| name | AD_NAME |
+-------------+----------------------------------+
|
2. admin user의 ID 확인
# openstack user list --domain default | grep admin
| 7dcb5309a6bf4e50870b2615e14fb204 | admin |
|
3. role ID 확인
# openstack role list
+----------------------------------+----------+
| ID | Name |
+----------------------------------+----------+
| 180c8d81358a4e0f84b97dd10f114151 | admin |
| 9fe2ff9ee4384b1894a90878d3e92bab | _member_ |
+----------------------------------+----------+
|
4. 위에서 확인된 ID 넘버를 가지고 AD_NAME 도메인의 admin role에 admin user를 할당
# openstack role add --domain ebc6dd274b074f8abf32966bfec9157a --user 7dcb5309a6bf4e50870b2615e14fb204 180c8d81358a4e0f84b97dd10f114151
|
keystone 서비스 재시작
# systemctl restart openstack-keystone.service
|
userlist 확인
# openstack user list --domain AD_NAME
|
# openstack user list --domain default
|
컴퓨트 노드 설정
각각의 컴퓨트 노드에서 아래 명령으로 keytstone v3 를 사용하도록 변경
# openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_version v3
|
컨트롤러 노드의 nova 서비스 재시작
# 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
|
각각의 컴퓨트 노드에서 nova 서비스 재시작
# systemctl restart openstack-nova-compute.service
|