2.8. ID 서비스 구성


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

2.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

2.8.2. 컨트롤러 구성

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

1. SELinux를 구성합니다.

# setsebool -P authlogin_nsswitch_use_ldap=on

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. 추가 백엔드를 구성합니다.

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

# openstack domain create LAB
참고

이 명령을 사용할 수 없는 경우 명령행 세션에 keystone v3 을 활성화했는지 확인합니다.

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

IdM 백엔드를 추가하려면 /etc/keystone/domains/keystone.LAB.conf 라는 새 파일에 LDAP 설정을 입력합니다. 여기서 LAB 는 이전에 생성된 도메인 이름입니다. 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 =
user_allow_create = False
user_allow_update = False
user_allow_delete = False
tls_cacertfile = /etc/ssl/certs/ca.crt

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

각 설정에 대한 설명:

설정설명

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

이 값을 비워 둡니다.

user_allow_create

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

user_allow_update

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

user_allow_delete

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

5. config 파일의 소유권을 keystone 사용자로 변경합니다.

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

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

참고

이는 OpenStack 관리자 계정에 IdM의 권한을 부여하지 않습니다. 이 경우 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

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. 명령에 keystone 도메인 이름을 추가하여 IdM 도메인의 사용자 목록을 확인합니다.

# openstack user list --domain LAB

10. 로컬 keystone 데이터베이스의 서비스 계정을 확인합니다.

# openstack user list --domain default

2.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

2.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를 사용해야 합니다.

2.8.5. IdM 사용자가 프로젝트에 액세스 가능

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

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

# openstack user list --domain LAB
 +------------------------------------------------------------------+----------------+
| ID                                                               | Name           |
+------------------------------------------------------------------+----------------+
| 1f24ec1f11aeb90520079c29f70afa060d22e2ce92b2eba7784c841ac418091e | user1          |
| 12c062fidm5f8b065434d9ff6fce03eb9259537c93b411224588686e9a38bf1 | 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 은 IdM 사용자 이름과 암호를 입력하여 대시보드에 로그인할 수 있습니다.

참고

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

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.