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 서비스를 실행하는 컨트롤러에서 다음 절차를 수행합니다.
SELinux를 구성합니다.
setsebool -P authlogin_nsswitch_use_ldap=on
# setsebool -P authlogin_nsswitch_use_ldap=onCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력에는 다음과 유사한 메시지가 포함될 수 있습니다. 그들은 무시될 수 있습니다:
Full path required for exclude: net:[4026532245].
Full path required for exclude: net:[4026532245].Copy to Clipboard Copied! Toggle word wrap Toggle overflow 도메인 디렉터리를 생성합니다.
mkdir /var/lib/config-data/puppet-generated/keystone/etc/keystone/domains/ chown 42425:42425 /var/lib/config-data/puppet-generated/keystone/etc/keystone/domains/
# 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 Copied! Toggle word wrap Toggle overflow 여러 백엔드를 사용하도록 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
# 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 sqlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 참고director를 사용하는 경우
/var/lib/config-data/puppet-generated/keystone/etc/keystone/keystone.conf는 Puppet에서 관리합니다. 결과적으로openstack overcloud deploy프로세스를 실행할 때마다 추가하는 사용자 정의 설정을 덮어쓸 수 있습니다. 따라서 매번 이 구성을 수동으로 다시 추가해야 할 수 있습니다. director 기반 배포의 경우 4장. director와 함께 도메인별 LDAP 백엔드 사용 에서 참조하십시오.대시보드에서 여러 도메인을 활성화합니다. /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'OPENSTACK_API_VERSIONS = { "identity": 3 } OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = 'Default'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고director를 사용하는 경우
/var/lib/config-data/puppet-generated/horizon/etc/openstack-dashboard/local_settings가 Puppet에서 관리합니다. 결과적으로openstack overcloud deploy프로세스를 실행할 때마다 추가하는 사용자 정의 설정을 덮어쓸 수 있습니다. 따라서 매번 이 구성을 수동으로 다시 추가해야 할 수 있습니다.horizon 컨테이너를 다시 시작하여 설정을 적용합니다.
sudo docker restart horizon
$ sudo docker restart horizonCopy to Clipboard Copied! Toggle word wrap Toggle overflow 추가 백엔드를 구성합니다.
IdM 통합을 위한 keystone 도메인을 생성합니다. 새 keystone 도메인에 사용할 이름을 결정한 다음 도메인을 생성합니다. 예를 들어 이 명령은
LAB:이라는 keystone 도메인을 생성합니다.openstack domain create LAB
$ openstack domain create LABCopy to Clipboard Copied! Toggle word wrap Toggle overflow 구성 파일을 생성합니다.
IdM 백엔드를 추가하려면
/var/lib/config-data/puppet-generated/keystone/etc/keystone/domains/keystone.LAB.conf라는 새 파일에 LDAP 설정을 입력합니다(랩이 이전에 생성된 도메인 이름임).IdM 배포에 맞게 아래 샘플 설정을 편집해야 합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 각 설정에 대한 설명:
Expand 설정 설명 url인증에 사용할 IdM 서버입니다. LDAPS 포트
636을 사용합니다.userLDAP 쿼리에 사용할 IdM 계정입니다.
암호위에서 사용된 IdM 계정의 일반 텍스트 암호입니다.
user_filterID 서비스에 표시되는 사용자를 필터링합니다. 결과적으로 grp-openstack 그룹의 멤버만 ID 서비스에 정의된 권한을 가질 수 있습니다.
user_tree_dnIdM의 OpenStack 계정 경로입니다.
user_objectclassLDAP 사용자의 유형을 정의합니다. 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에서 작동하지 않습니다.
구성 파일의 소유권을 keystone 사용자로 변경합니다.
chown 42425:42425 /var/lib/config-data/puppet-generated/keystone/etc/keystone/domains/keystone.LAB.conf
# chown 42425:42425 /var/lib/config-data/puppet-generated/keystone/etc/keystone/domains/keystone.LAB.confCopy to Clipboard Copied! Toggle word wrap Toggle overflow admin 사용자에게 도메인에 대한 액세스 권한을 부여합니다.
참고이 경우 OpenStack admin 계정에 IdM의 권한이 부여되지 않습니다. 이 경우 domain이라는 용어는 OpenStack의 keystone 도메인 사용을 나타냅니다.
LAB 도메인의
ID를 가져옵니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow admin 사용자의
ID값을 가져옵니다.openstack user list --domain default | grep admin | 3d75388d351846c6a880e53b2508172a | admin |
$ openstack user list --domain default | grep admin | 3d75388d351846c6a880e53b2508172a | admin |Copy to Clipboard Copied! Toggle word wrap Toggle overflow admin 역할의
ID값을 가져옵니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 반환된 도메인 및 admin ID를 사용하여 admin 사용자를 keystone LAB 도메인의 admin 역할에 추가하는 명령을 구성합니다.
openstack role add --domain 6800b0496429431ab1c4efbb3fe810d4 --user 3d75388d351846c6a880e53b2508172a 785c70b150ee4c778fe4de088070b4cf
$ openstack role add --domain 6800b0496429431ab1c4efbb3fe810d4 --user 3d75388d351846c6a880e53b2508172a 785c70b150ee4c778fe4de088070b4cfCopy to Clipboard Copied! Toggle word wrap Toggle overflow
keystone 서비스를 다시 시작하여 변경 사항을 적용합니다.
sudo docker restart keystone
$ sudo docker restart keystoneCopy to Clipboard Copied! Toggle word wrap Toggle overflow 명령에 keystone 도메인 이름을 추가하여 IdM 도메인의 사용자 목록을 확인합니다.
openstack user list --domain LAB
$ openstack user list --domain LABCopy to Clipboard Copied! Toggle word wrap Toggle overflow 로컬 keystone 데이터베이스에서 서비스 계정을 확인합니다.
openstack user list --domain default
$ openstack user list --domain defaultCopy to Clipboard Copied! Toggle word wrap Toggle overflow
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 리소스에 액세스할 수 있는 권한이 있습니다.
IdM 그룹 목록을 검색합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 역할 목록을 검색합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이러한 역할 중 하나 이상에 추가하여 IdM 그룹에 프로젝트에 대한 액세스 권한을 부여합니다. 예를 들어
grp-openstack-demo그룹의 사용자가demo프로젝트의 일반 사용자가 되도록 하려면_member_역할에 그룹을 추가해야 합니다.openstack role add --project demo --group d971bb3bd5e64a454cbd0cc7af4c0773e78d61b5f81321809f8323216938cae8 _member_
$ openstack role add --project demo --group d971bb3bd5e64a454cbd0cc7af4c0773e78d61b5f81321809f8323216938cae8 _member_Copy to Clipboard Copied! Toggle word wrap Toggle overflow
결과적으로 grp-openstack-demo 의 멤버는 도메인 필드에 LAB 을 입력하는 경우 IdM 사용자 이름과 암호를 입력하여 대시보드에 로그인할 수 있습니다.
사용자에게 Error: Unable to retrieve container list 가 표시되면 컨테이너 목록을 검색할 수 있으며 컨테이너를 관리할 수 있을 것으로 예상되는 경우 SwiftOperator 역할에 추가해야 합니다.
2.3.3. IdM 사용자가 프로젝트에 액세스할 수 있도록 허용 링크 복사링크가 클립보드에 복사되었습니다!
grp-openstack IdM 그룹의 멤버인 IdM 사용자에게는 대시보드에서 프로젝트에 로그인할 수 있는 권한을 부여할 수 있습니다.
IdM 사용자 목록을 검색합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 역할 목록을 검색합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이러한 역할 중 하나 이상에 추가하여 사용자에게 프로젝트에 대한 액세스 권한을 부여합니다. 예를 들어
user1이demo프로젝트의 일반 사용자가 되도록 하려면member역할에 추가합니다.openstack role add --project demo --user 1f24ec1f11aeb90520079c29f70afa060d22e2ce92b2eba7784c841ac418091e _member_
# openstack role add --project demo --user 1f24ec1f11aeb90520079c29f70afa060d22e2ce92b2eba7784c841ac418091e _member_Copy to Clipboard Copied! Toggle word wrap Toggle overflow 또는
user1이demo프로젝트의 관리자인 경우admin역할에 추가합니다.openstack role add --project demo --user 1f24ec1f11aeb90520079c29f70afa060d22e2ce92b2eba7784c841ac418091e admin
# openstack role add --project demo --user 1f24ec1f11aeb90520079c29f70afa060d22e2ce92b2eba7784c841ac418091e adminCopy to Clipboard Copied! Toggle word wrap Toggle overflow 결과적으로
user1은Domain필드에LAB을 입력하는 경우 IdM 사용자 이름과 암호를 입력하여 대시보드에 로그인할 수 있습니다.
사용자에게 Error: Unable to retrieve container list 가 표시되면 컨테이너 목록을 검색할 수 있으며 컨테이너를 관리할 수 있을 것으로 예상되는 경우 SwiftOperator 역할에 추가해야 합니다.