KeyStone主要有兩個功能:用戶管理和服務目錄mysql
用戶管理主要包括:認證和受權sql
認證方式有四種:即token令牌、帳號和密碼、服務目錄、策略數據庫
認證核心術語bootstrap
用戶相關:vim
User:能使用OpenStack服務的一個用戶api
Project:以前交Tenant(租戶),是組件服務的一種資源隔離方式bash
Role:角色,是User訪問指定Project資源的一種權限dom
Token:令牌,一個綜合的加密認證信息ide
使用方式:給一個User賦予在指定Project中一個資源訪問的Role角色。 測試
服務目錄相關:
Service:OpenStack各組件提供的服務,用於用戶訪問
Endpoint:用戶訪問Service的一個url連接入口
KeyStone配置信息
配置文件:/etc/keystone/keystone.conf
日誌文件:/var/log/keystone/keystone.log
在OpenStack中,任何組件的基本上都按照數據庫配置、軟件安裝、軟件配置、數據同步、http配置、權限設置這六個方面來操做。
鏈接並建立數據庫
mysql -u root -p root
CREATE DATABASE keystone;
複製代碼
配置權限
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'keystone';
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'keystone';
-- 將keystone用戶密碼設置爲keystone
複製代碼
yum install -y openstack-keystone httpd mod_wsgi
vim /etc/keystone/keystone.conf
[DEFAULT]
#鏈接到消息隊列
405 transport_url = rabbit://openstack:openstack@192.168.188.100:5672
[database]
#數據庫配置鏈接控制節點的認證地址
661 connenction = mysql+pymysql://keystone:keystone@192.168.188.100/keystone
[token]
#配置token令牌的提供者,取消註釋便可
2758 provider = fernet
複製代碼
檢查修改信息
[root@controller keystone]# grep -ni '^[a-Z]' /etc/keystone/keystone.conf
同步數據庫信息
su -s /bin/sh -c "keystone-manage db_sync" keystone
複製代碼
初始化keystone的認證信息
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
複製代碼
生成openstack管理admin帳戶的api信息
Queen版本的admin用戶和普通用戶都使用5000端口鏈接,而以前版本admin用戶使用35357端口。這裏必定要注意,不然會直接致使後面的組件沒法部署。
# keystone-manage bootstrap --bootstrap-password admin \
--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
複製代碼
編輯配置文件
# vim /etc/httpd/conf/httpd.conf
ServerName 192.168.188.100:80
複製代碼
建立鏈接文件
ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d
啓動http服務,並設置開機啓動
systemctl enable httpd.service
systemctl start httpd.service
複製代碼
配置用戶信息
$ export OS_USERNAME=admin
$ export OS_PASSWORD=admin
$ 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
複製代碼
1.建立項目
命令格式:openstack project create --domain default --description "描述" <項目名>
建立service項目
openstack project create --domain default --description "Service Project" service
openstack project create --domain default --description "Demo Project" demo
複製代碼
檢查效果
openstack project list
2.建立demo用戶,即普通用戶
命令格式:openstack user create --domain default --password <密碼> <用戶名>
openstack user create --domain default --password demo demo
複製代碼
3.建立role角色
命令格式:openstack role create <role名>
openstack role create user
複製代碼
4.給demo用戶賦予在指定Project(即"Demo Project")中一個資源訪問的Role角色(即user)
命令格式:openstack role add --project <項目名> --user <用戶名> <角色組>
openstack role add --project demo --user demo user
複製代碼
取消環境變量
unset OS_AUTH_URL OS_PASSWORD
用戶驗證
命令格式:
openstack --os-auth-url http://controller:5000/v3 \
--os-project-domain-name Default --os-user-domain-name Default \
--os-project-name <項目> --os-username <用戶> --os-password <密碼> token issue
複製代碼
使用admin驗證
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 --os-password admin token issue
複製代碼
使用demo用戶驗證
openstack --os-auth-url http://controller:5000/v3 \
--os-project-domain-name Default --os-user-domain-name Default \
--os-project-name demo --os-username demo --os-password demo token issue
複製代碼
建立admin用戶的變量腳本
#vim admin-openstack.sh
export OS_PROJECT_DOMIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_USERNAME=admin
export OS_PASSWORD=admin
export OS_PROJECT_NAME=admin
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
複製代碼
openstack token issue
複製代碼
建立demo用戶的變量腳本