2023. 11. 18. 00:15ㆍOpenStack
OpenStack Identity 서비스는 인증, 권한 부여 및 서비스 카탈로그를 관리하기 위한 단일 통합 지점을 제공합니다.
ID 서비스는 일반적으로 사용자가 상호 작용하는 첫 번째 서비스입니다. 인증되면 최종 사용자는 자신의 ID를 사용하여 다른 OpenStack 서비스에 액세스할 수 있습니다. 마찬가지로 다른 OpenStack 서비스도 Identity 서비스를 활용하여 사용자가 누구인지 확인하고 배포 내에서 다른 서비스가 어디에 있는지 확인합니다. Identity 서비스는 일부 외부 사용자 관리 시스템(예: LDAP)과도 통합할 수 있습니다.
사용자와 서비스는 Identity 서비스에서 관리하는 서비스 카탈로그를 사용하여 다른 서비스를 찾을 수 있습니다. 이름에서 알 수 있듯이 서비스 카탈로그는 OpenStack 배포에서 사용 가능한 서비스 모음입니다. 각 서비스에는 하나 이상의 엔드포인트가 있을 수 있으며 각 엔드포인트는 관리, 내부 또는 공용의 세 가지 유형 중 하나일 수 있습니다. 프로덕션 환경에서는 보안상의 이유로 다양한 유형의 사용자에게 노출되는 별도의 네트워크에 다양한 엔드포인트 유형이 상주할 수 있습니다. 예를 들어, 공용 API 네트워크가 인터넷에 표시되어 고객이 클라우드를 관리할 수 있습니다. 관리 API 네트워크는 클라우드 인프라를 관리하는 조직 내 운영자로 제한될 수 있습니다. 내부 API 네트워크는 OpenStack 서비스를 포함하는 호스트로 제한될 수 있습니다. 또한 OpenStack은 확장성을 위해 여러 지역을 지원합니다. 단순화를 위해 이 가이드에서는 모든 엔드포인트 유형과 기본 지역에 관리 네트워크를 사용합니다 RegionOne. Identity 서비스 내에서 생성된 지역, 서비스 및 끝점이 함께 배포를 위한 서비스 카탈로그를 구성합니다. 배포의 각 OpenStack 서비스에는 Identity 서비스에 저장된 해당 끝점이 있는 서비스 항목이 필요합니다. 이 모든 작업은 Identity 서비스를 설치하고 구성한 후에 수행할 수 있습니다.
ID 서비스에는 다음 구성 요소가 포함되어 있습니다.
섬기는 사람
중앙 집중식 서버는 RESTful 인터페이스를 사용하여 인증 및 권한 부여 서비스를 제공합니다.
드라이버
드라이버 또는 서비스 백엔드는 중앙 집중식 서버에 통합됩니다. 이는 OpenStack 외부 리포지토리의 ID 정보에 액세스하는 데 사용되며 OpenStack이 배포된 인프라(예: SQL 데이터베이스 또는 LDAP 서버)에 이미 존재할 수 있습니다.
모듈
미들웨어 모듈은 Identity 서비스를 사용하는 OpenStack 구성 요소의 주소 공간에서 실행됩니다. 이러한 모듈은 서비스 요청을 가로채고 사용자 자격 증명을 추출한 후 인증을 위해 중앙 집중식 서버로 보냅니다. 미들웨어 모듈과 OpenStack 구성 요소 간의 통합에는 Python 웹 서버 게이트웨이 인터페이스가 사용됩니다.
- DB 생성
$ mysql -u root -p
> CREATE DATABASE keystone;
> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \
IDENTIFIED BY 'KEYSTONE_DBPASS';
> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \
IDENTIFIED BY 'KEYSTONE_DBPASS';
- keystone 설치
$ sudo apt install keystone
[sudo] password for stack:
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
- keystone 설정 변경
$ sudo vi /etc/keystone/keystone.conf
# 변경내용
[database]
connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone
[cache]
enabled = true
memcache_servers = 127.0.0.1:11211
[token]
provider = fernet
- keystone 설정 점검
$ sudo keystone-manage doctor
# 문제 내용이 출력되고 해결책을 알려준다.
- keystone database 생성
$ sudo -s /bin/sh -c "keystone-manage db_sync" keystone
mys
- fernet 키 저장소 초기화
$ sudo keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
$ sudo keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
- Identity 서비스 부트스트랩
$ sudo keystone-manage bootstrap --bootstrap-password ADMIN_PASS \
--bootstrap-admin-url http://controller:5000/v3/ \
--bootstrap-internal-url http://controller:5000/v3/ \
--bootstrap-public-url http://controller:5000/v3/ \
--bootstrap-region-id RegionOne
2023-11-24 15:42:41.458 488607 INFO keystone.cmd.bootstrap [None req-d2a0dc3e-5eed-4d2e-944a-9d6fe14c67c1 - - - - - -] Created domain default
2023-11-24 15:42:41.543 488607 INFO keystone.cmd.bootstrap [None req-d2a0dc3e-5eed-4d2e-944a-9d6fe14c67c1 - - - - - -] Created project admin
2023-11-24 15:42:41.584 488607 WARNING keystone.common.password_hashing [None req-d2a0dc3e-5eed-4d2e-944a-9d6fe14c67c1 - - - - - -] Truncating password to algorithm specific maximum length 72 characters.: keystone.exception.UserNotFound: Could not find user: admin.
2023-11-24 15:42:42.207 488607 INFO keystone.cmd.bootstrap [None req-d2a0dc3e-5eed-4d2e-944a-9d6fe14c67c1 - - - - - -] Created user admin
2023-11-24 15:42:42.218 488607 INFO keystone.cmd.bootstrap [None req-d2a0dc3e-5eed-4d2e-944a-9d6fe14c67c1 - - - - - -] Created role reader
2023-11-24 15:42:42.227 488607 INFO keystone.cmd.bootstrap [None req-d2a0dc3e-5eed-4d2e-944a-9d6fe14c67c1 - - - - - -] Created role member
2023-11-24 15:42:42.246 488607 INFO keystone.cmd.bootstrap [None req-d2a0dc3e-5eed-4d2e-944a-9d6fe14c67c1 - - - - - -] Created implied role where ce506f83960f4dda96a213c2f2e30e3d implies 4610eb039aca4336af5daece65424b48
2023-11-24 15:42:42.256 488607 INFO keystone.cmd.bootstrap [None req-d2a0dc3e-5eed-4d2e-944a-9d6fe14c67c1 - - - - - -] Created role admin
2023-11-24 15:42:42.275 488607 INFO keystone.cmd.bootstrap [None req-d2a0dc3e-5eed-4d2e-944a-9d6fe14c67c1 - - - - - -] Created implied role where 91240c75ccbc4060ae5455ace7f9e353 implies ce506f83960f4dda96a213c2f2e30e3d
2023-11-24 15:42:42.284 488607 INFO keystone.cmd.bootstrap [None req-d2a0dc3e-5eed-4d2e-944a-9d6fe14c67c1 - - - - - -] Granted role admin on project admin to user admin.
2023-11-24 15:42:42.289 488607 INFO keystone.cmd.bootstrap [None req-d2a0dc3e-5eed-4d2e-944a-9d6fe14c67c1 - - - - - -] Granted role admin on the system to user admin.
2023-11-24 15:42:42.301 488607 WARNING py.warnings [None req-d2a0dc3e-5eed-4d2e-944a-9d6fe14c67c1 - - - - - -] /usr/lib/python3/dist-packages/pycadf/identifier.py:71: UserWarning: Invalid uuid: RegionOne. To ensure interoperability, identifiers should be a valid uuid.
warnings.warn(('Invalid uuid: %s. To ensure interoperability, '
2023-11-24 15:42:42.304 488607 INFO keystone.cmd.bootstrap [None req-d2a0dc3e-5eed-4d2e-944a-9d6fe14c67c1 - - - - - -] Created region RegionOne
2023-11-24 15:42:42.330 488607 INFO keystone.cmd.bootstrap [None req-d2a0dc3e-5eed-4d2e-944a-9d6fe14c67c1 - - - - - -] Created public endpoint http://controller:5000/v3/
2023-11-24 15:42:42.338 488607 INFO keystone.cmd.bootstrap [None req-d2a0dc3e-5eed-4d2e-944a-9d6fe14c67c1 - - - - - -] Created internal endpoint http://controller:5000/v3/
2023-11-24 15:42:42.344 488607 INFO keystone.cmd.bootstrap [None req-d2a0dc3e-5eed-4d2e-944a-9d6fe14c67c1 - - - - - -] Created admin endpoint http://controller:5000/v3/
- apache 설정 구성
$ sudo vi /etc/apache2/apache2.conf
# 설정내용
ServerName controller
# 서비스 재시작
$ sudo service apache2 restart
- 환경변수 설정
$ sudo vi ~/.bashrc
# 설정내용
export OS_USERNAME=admin
export OS_PASSWORD=패스워드
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
- 도메인 생성
$ openstack domain create --descriptiob "luzetech" luzentech.cc
- 프로젝트 생성
$ openstack project create --domain luzentech.cc --description "Service Project" service
- 최종 확인
$ openstack --os-auth-url http://controller:5000/v3 --os-project-domain-name Default --os-user-domain-name Default --os-project-name admin --os-username admin token issue
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Field | Value |
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| expires | 2023-11-24T12:20:28+0000 |
| id | gAAAAABlYIb8E0wynfqOW_ZJTVA-Di5aMfmBxT89GbGOOhTNZf0eYvNMhBIEB_iYf6_D1iNlRDW0fF-hkzi-25yOTjNp7XLx94xhGvhNV9lVXstOqcNFgvOvyvUu_SV916hgLOO8yVjxhPUFQYNAbb-UutM1eUGmReSQXSdCsOloNJuphb-wHP0 |
| project_id | abee972637f14dd1b5c67d585a5d9910 |
| user_id | f2319aa9128a47dd9455a9f93aa35e3c |
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+'OpenStack' 카테고리의 다른 글
| Ubuntu 20.04 DevStack 설치 가이드 (1) | 2023.11.22 |
|---|---|
| OpenStack 패키지 Archive 활성화 (0) | 2023.11.17 |
| OpenStack 구성요소 - NTP chrony 설치 (0) | 2023.11.17 |
| OpenStack Zed Install Guide - Controller (1) | 2023.11.17 |