CentOS 7 에 Openstack Train 버전 설치 - 2. Identity service – keystone

OpenStack Identity 서비스는 인증, 권한 부여 및 서비스 카탈로그를 관리하기위한 단일 통합 지점을 제공합니다.

Identity 서비스는 일반적으로 사용자가 상호 작용하는 첫 번째 서비스입니다. 인증되면 최종 사용자는 자신의 ID를 사용하여 다른 OpenStack 서비스에 액세스 할 수 있습니다. 마찬가지로 다른 OpenStack 서비스는 Identity 서비스를 활용하여 사용자가 자신이 말하는 사람인지 확인하고 배포 내에서 다른 서비스가 어디에 있는지 확인합니다. Identity 서비스는 일부 외부 사용자 관리 시스템 (예 : LDAP)과 통합 될 수도 있습니다.

사용자 및 서비스는 Identity 서비스에서 관리하는 서비스 카탈로그를 사용하여 다른 서비스를 찾을 수 있습니다. 이름에서 알 수 있듯이 서비스 카탈로그는 OpenStack 배포에서 사용 가능한 서비스 모음입니다. 각 서비스는 하나 이상의 끝점을 가질 수 있으며 각 끝점은 관리자, 내부 또는 공용의 세 가지 유형 중 하나 일 수 있습니다. 프로덕션 환경에서는 보안상의 이유로 서로 다른 유형의 사용자에게 노출 된 별도의 네트워크에 서로 다른 엔드 포인트 유형이있을 수 있습니다. 예를 들어, 공용 API 네트워크는 인터넷에서 볼 수 있으므로 고객이 클라우드를 관리 할 수 ​​있습니다. 관리 API 네트워크는 클라우드 인프라를 관리하는 조직 내 운영자로 제한 될 수 있습니다. 내부 API 네트워크는 OpenStack 서비스를 포함하는 호스트로 제한 될 수 있습니다. 또한 OpenStack은 확장 성을 위해 여러 지역을 지원합니다.RegionOne부위. Identity 서비스 내에서 생성 된 리전, 서비스 및 엔드 포인트는 함께 배포를위한 서비스 카탈로그를 구성합니다. 배포의 각 OpenStack 서비스에는 Identity 서비스에 저장된 해당 엔드 포인트가있는 서비스 항목이 필요합니다. 이 모든 작업은 Identity 서비스를 설치하고 구성한 후에 수행 할 수 있습니다.

Identity 서비스에는 다음 구성 요소가 포함됩니다.

  • Server

중앙 집중식 서버는 RESTful 인터페이스를 사용하여 인증 및 권한 부여 서비스를 제공합니다.

  • Drivers

드라이버 또는 서비스 백엔드는 중앙 집중식 서버에 통합됩니다. OpenStack 외부 저장소의 ID 정보에 액세스하는 데 사용되며 OpenStack이 배포 된 인프라 (예 : SQL 데이터베이스 또는 LDAP 서버)에 이미 존재할 수 있습니다.

  • Modules

미들웨어 모듈은 Identity 서비스를 사용하는 OpenStack 구성 요소의 주소 공간에서 실행됩니다. 이러한 모듈은 서비스 요청을 가로 채고 사용자 자격 증명을 추출한 다음 인증을 위해 중앙 서버로 보냅니다. 미들웨어 모듈과 OpenStack 구성 요소 간의 통합은 Python 웹 서버 게이트웨이 인터페이스를 사용합니다.

이 섹션에서는 컨트롤러 노드에서 코드 명 keystoneOpenStack Identity 서비스를 설치하고 구성하는 방법을 설명합니다. 확장성을 위해 이 구성은 Fernet 토큰과 Apache HTTP 서버를 배포하여 요청을 처리합니다.

Identity 서비스를 설치하고 구성하기 전에 데이터베이스를 만들어야합니다.

1. 데이터베이스 액세스 클라이언트를 사용하여 root사용자 로 데이터베이스 서버에 연결합니다 .

$ mysql -u root -p

2. keystone 데이터베이스를 만듭니다 .

MariaDB [(none)]> CREATE DATABASE keystone;

3. keystone데이터베이스에 대한 적절한 액세스 권한을 부여하십시오 .

MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \
IDENTIFIED BY 'KEYSTONE_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \
IDENTIFIED BY 'KEYSTONE_DBPASS';

KEYSTONE_DBPASS 를 적절한 암호로 입력하십시오 .

4. 데이터베이스 액세스 클라이언트를 종료하십시오.

다음 명령을 실행하여 패키지를 설치하십시오.

[root@controller ~]# yum install -y openstack-keystone httpd mod_wsgi

2. /etc/keystone/keystone.conf 파일을 편집하고 다음 조치를 완료하십시오.

  • [database]섹션에서 데이터베이스 액세스 구성 :
[database]
# ...
connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone

KEYSTONE_DBPASS 부분을 데이터베이스에 대해 선택한 암호로 바꿉니다 .
[database]섹션 에서 connection이외의 다른 옵션을 주석 처리하거나 제거 하십시오.

  • [token]섹션 에서 Fernet 토큰 공급자를 구성 :
[token]
# ...
provider = fernet

3. Identity 서비스 데이터베이스를 초기화 합니다.

[root@controller ~]# su -s /bin/sh -c "keystone-manage db_sync" keystone

4. Fernet 키 저장소 초기화 :

[root@controller ~]# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
[rootbcontroller ~]# keystone-manage credential_setup --keystone-user keystone --keystone-group keystone

5. Identity 서비스를 부트 스트랩합니다.

[root@controller ~]# 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

ADMIN_PASS 부분을 관리 사용자에게 적합한 비밀번호로 교체하십시오 .

1. /etc/httpd/conf/httpd.conf 파일을 편집하고 ServerName이 컨트롤러 노드를 참조 하도록 옵션을 구성 합니다.

ServerName controller

ServerName가 존재하지 않는 경우는 항목을 추가해야합니다.

2. /usr/share/keystone/wsgi-keystone.conf파일에 대한 링크를 만듭니다 .

[root@controller ~]# ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/

1. Apache HTTP 서비스를 시작하고 시스템이 부팅 될 때 시작되도록 구성합니다.

[root@controller ~]# systemctl enable httpd.service
[root@controller ~]# systemctl start httpd.service

2. 적절한 환경 변수를 설정하여 관리 계정을 구성하십시오.

user_openrc="admin-openrc"
PS1='[\u@\h \W] (${user_openrc}):\[\033[01;34m\]\w\[\033[00m\]\$ ' 

export OS_USERNAME=admin
export OS_PASSWORD=ADMIN_PASS
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

ADMIN_PASS 부분은 이전에 설정한 비밀번호로 바꿉니다.

1. 도메인 리스트 확인

[root@controller ~] (admin-openrc):~# openstack domain list
+---------+---------+---------+--------------------+
| ID      | Name    | Enabled | Description        |
+---------+---------+---------+--------------------+
| default | Default | True    | The default domain |
+---------+---------+---------+--------------------+

2. 이 가이드 의 keystone-manage 부트 스트랩 단계에서 “기본”도메인이 이미 존재하지만 새 도메인을 만드는 공식적인 방법은 다음과 같습니다.

$ openstack domain create --description "An Example Domain" example

+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | An Example Domain                |
| enabled     | True                             |
| id          | 2f4f80574fd84fe6ba9067228ae0a50c |
| name        | example                          |
| tags        | []                               |
+-------------+----------------------------------+

3. 이 가이드에서는 환경에 추가하는 각 서비스에 대한 고유 사용자가 포함 된 서비스 프로젝트를 사용합니다. service 프로젝트를 만듭니다 .

$ openstack project create --domain default \
  --description "Service Project" service

+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Service Project                  |
| domain_id   | default                          |
| enabled     | True                             |
| id          | 24ac7f19cd944f4cba1d77469b2a73ed |
| is_domain   | False                            |
| name        | service                          |
| parent_id   | default                          |
| tags        | []                               |
+-------------+----------------------------------+

4. 일반 (관리자가 아닌) 작업은 권한이 없는 프로젝트 및 사용자를 사용해야합니다. 예를 들어 이 가이드는 myproject 프로젝트와 myuser 사용자를 만듭니다.

  • myproject 프로젝트를 만듭니다.
$ openstack project create --domain default \
  --description "Demo Project" myproject

+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Demo Project                     |
| domain_id   | default                          |
| enabled     | True                             |
| id          | 231ad6e7ebba47d6a1e57e1cc07ae446 |
| is_domain   | False                            |
| name        | myproject                        |
| parent_id   | default                          |
| tags        | []                               |
+-------------+----------------------------------+
  • myuser 사용자 생성 :
$ openstack user create --domain default \
  --password-prompt myuser

User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| domain_id           | default                          |
| enabled             | True                             |
| id                  | aeda23aa78f44e859900e22c24817832 |
| name                | myuser                           |
| options             | {}                               |
| password_expires_at | None                             |
+---------------------+----------------------------------+
  • myrole역할을 만듭니다 .
$ openstack role create myrole

+-----------+----------------------------------+
| Field     | Value                            |
+-----------+----------------------------------+
| domain_id | None                             |
| id        | 997ce8d05fc143ac97d83fdfb5998552 |
| name      | myrole                           |
+-----------+----------------------------------+
  • myproject 프로젝트 및 myuser 사용자에 myrole역할을 추가하십시오.
$ openstack role add --project myproject --user myuser myrole

5. 설정 확인

[root@controller ~] (admin-openrc):~# 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

Password: [admin 패스워드 입력]
+------------+-----------------------------------------------------------------+
| Field      | Value                                                           |
+------------+-----------------------------------------------------------------+
| expires    | 2016-02-12T20:14:07.056119Z                                     |
| id         | gAAAAABWvi7_B8kKQD9wdXac8MoZiQldmjEO643d-e_j-XXq9AmIegIbA7UHGPv |
|            | atnN21qtOMjCFWX7BReJEQnVOAj3nclRQgAYRsfSU_MrsuWb4EDtnjU7HEpoBb4 |
|            | o6ozsA_NmFWEpLeKy0uNn_WeKbAhYygrsmQGA49dclHVnz-OMVLiyM9ws       |
| project_id | 343d245e850143a096806dfaefa9afdc                                |
| user_id    | ac3377633149401296f6c0d92d79dc16                                |
+------------+-----------------------------------------------------------------+

[root@controller ~] (admin-openrc):~# openstack --os-auth-url http://controller:5000/v3 \
  --os-project-domain-name Default --os-user-domain-name Default \
  --os-project-name myproject --os-username myuser token issue

Password: [myyuser 패스워드 입력]
+------------+-----------------------------------------------------------------+
| Field      | Value                                                           |
+------------+-----------------------------------------------------------------+
| expires    | 2016-02-12T20:15:39.014479Z                                     |
| id         | gAAAAABWvi9bsh7vkiby5BpCCnc-JkbGhm9wH3fabS_cY7uabOubesi-Me6IGWW |
|            | yQqNegDDZ5jw7grI26vvgy1J5nCVwZ_zFRqPiz_qhbq29mgbQLglbkq6FQvzBRQ |
|            | JcOzq3uwhzNxszJWmzGC7rJE_H0A_a3UFhqv8M4zMRYSbS2YF0MyFmp_U       |
| project_id | ed0b60bf607743088218b0a533d5943f                                |
| user_id    | 58126687cbcc4888bfa9ab73a2256f27                                |
+------------+-----------------------------------------------------------------+

로그인하면 댓글을 남길 수 있습니다.
  • centos_7_에_openstack_train_버전_설치_-_2._identity_service_keystone.txt
  • 마지막으로 수정됨: 2020/09/23 01:44
  • 저자 koov