-
Openstack Identify service cung cấp một điểm tích hợp duy nhất để quản lý xác thực, ủy quyền và service catalog. Openstack Identify service thường là dịch vụ đầu tiên mà người dùng tương tác đến. Khi đã được định danh, người dùng có thể sử dụng danh tính đó để truy cập các dịch vụ khác. Tương tự như vậy, các Openstack service khác cũng có thể dụng Identify service để xác định người dùng là ai và khám phá các dịch vụ khác. Dịch vụ nhận dạng cũng có thể kết hợp với một số hệ thống quản lý người dùng bên ngoài như LDAP.
-
Người dùng và dịch vụ có thể định vị các dịch vụ bằng cách sử dụng service catalog- được quản lý bởi Identify service. Catalog chứa thông tin về danh sách các dịch vụ có sẵn trong triển khai. Một dịch vụ có thể có nhiều endpoint và mỗi endpoint có thể là 1 trong 3 loại sau: admin. internal và public. Trong môi trường production, các endpoint sẽ nằm trên các mạng khác nhau để đảm bảo bảo mật. Ví dụ . public API có thể được tiếp cận từ môi trường internet, khác hàng có thể sử dụng sản phẩn cloud qua API này. Admin API sử dụng cho các sysadmin để quản trị infractructure cloud. Internal API sẽ sử dụng để làm việc với các host được quản lý bởi các Openstack Service.
-
Openstack Indentity cung cấp region để tăng khả năng mở rộng. Mặc định RegionOne được sử dụng làm Region đâu tiên
-
Mỗi Openstack Service cài lên cần có một endpoint trên indentity service
-
Identity service chứa những thành phần:
- Server: Một máy chủ tập trung cung cấp các dịch vụ xác thực và ủy quyền bằng giao diện RESTful interface.
- Drivers: là driver hay service backend được tích hợp vào server dùng để truy cập DB định danh có thể là các dịch vụ internal hoặc external(SQL,LDAP,...)
- Modules: middleware module có thể chạy trên các Openstack compoment đang sử dụng indentity services. Những module này chặn các reques , xuất ra các credential sau đó gửi đến Server .
Ở đây sẽ cài đặt Openstack Identify- Keystone trên Controller Node. Với mục đích mở rộng, cấu hình này sẽ triển khai Fernet tokens và Apache HTTP.
- Cài đặt chuẩn bị môi trường theo bài viết Chuẩn bị môi trường
- Kết nối đến database bằng tài khoản root:
mysql -u root -p
- Tạo và gán quyền cho database keystone:
MariaDB [(none)]> CREATE DATABASE keystone;
Grant proper access to the keystone database:
MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \
IDENTIFIED BY '123123Aa';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \
IDENTIFIED BY '123123Aa';
- Thoát database client.
- Cài các gói cần thiết:
yum install openstack-keystone httpd mod_wsgi
- Sửa file cấu hình của keystone **/etc/keystone/keystone.conf
- Sửa ở phần [database] để kết nối đến database keystone:
[database] # ... connection = mysql+pymysql://keystone:[email protected]/keystone
- Sửa phần [token] để chọn Fernet token:
[token] # ... provider = fernet
- Tạo database cho dịch vụ xác thực:
su -s /bin/sh -c "keystone-manage db_sync" keystone
- Khởi tạo kho lưu trữ khóa Fernet.
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
- Bootstrap the Identify service:
keystone-manage bootstrap --bootstrap-password 123123Aa \
--bootstrap-admin-url http://192.168.50.140:5000/v3/ \
--bootstrap-internal-url http://192.168.50.140:5000/v3/ \
--bootstrap-public-url http://192.168.50.140:5000/v3/ \
--bootstrap-region-id RegionOne
- Bootstrap để làm gì? Sau khi triển khai và cấu hình Keystone, nó phải được truyền vào một số thông tin khởi tạo cơ bản trước khi nó có thể sử dụng. Quá trình này được gọi là bootstrap. Một số thông tin khởi tạo có thể là user hệ thống đầu tiên, project, domain, service và endpoint, và các thứ khác.
- Sửa file
/etc/httpd/conf/httpd.conf
, giá trị ServerName tham chiếu đến controller:
ServerName controller
- Tạo một link trong
/etc/httpd/conf.d/
đến file/usr/share/keystone/wsgi-keystone.conf
:
ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
- Khởi động Apache:
systemctl restart httpd
systemctl enable httpd
- Cấu hình firewalld cho Keystone API:
# public url port
firewall-cmd --zone=public --add-port=5000/tcp --permanent
# admin url port
firewall-cmd --zone=public --add-port=35357/tcp --permanent
firewall-cmd --reload
- Cấu hình biến môi trường để đăng nhập cho tài khoản admin.
export OS_USERNAME=admin
export OS_PASSWORD=123123Aa
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
Chạy lệnh openstack token issue
[root@controller ~]# openstack token issue
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Field | Value |
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| expires | 2019-11-01T08:45:36+0000 |
| id | gAAAAABdu-KgqxyZEBy-AeLyusc6-KN9leXRFrtW-a4jg4FXrPINs2k-E1PdQJkHpEGH2pk-YQOmbdpmYp4KLhjOwFbjodxmLrjMoaRWNPWCbOVkO3t7fzv__SpOxzGaLo5581zlN8LAtlu48NAfgi-RWt0u912XwdnPmE_vSrI9wriEnfsvrc4 |
| project_id | 15ac090a736a4c6fb7669b017b2ce56f |
| user_id | 653e73fac47a42fd86461f06bce2c018 |
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
Tài liệu tham khảo: https://docs.openstack.org/install-guide/