yum 依赖 配置环境变量 wap iad admin dom 校验 server
Keystone 的概述
Keystone 是 Openstack 的组件之一,用于为 Openstack 家族中的其它组件成员提供统一的认证服务,包括身份验证,令牌的发放和校验,服务列表,用户权限的定义等.Openstack 中任何组件均依赖与 Keystone 提供的服务.
Keystone 的功能
用户与认证
用户权限与用户行为追踪.
服务目录
为每个组件服务提供一个可用的服务目录和相应的 API 入口端点.
Keystone 基本概念
User
顾名思义就是使用服务(Openstack Service)的用户,可以是人,服务或者是系统,只要是使用了 Openstack 服务的对象都可以称为用户.
Project
租户,可以理解为一个人,项目或者组织拥有的资源的合集.在一个租户中可以拥有很多个用户,这些用户可以根据权限的划分使用租户中的资源.
Token
指的是一串比特值或者字符串,用来作为访问资源的令牌.Token 中含有可访问资源的范围和有效时间.
Role
角色,用于分配操作的权限.角色可以被指定给用户,使得该用户获得角色对应的操作权限.
Service
Openstack Service,即 Openstack 中运行的组件服务.
Endpoint
一个可以通过网络来访问和定位某个 Openstack Service 的地址,通常是一个 URL.例如,Nova 需要访问 Glance 服务去获取 Image 时,Nova 通过访问 Keystone 拿到 Glance 的 Endpoint,然后通过访问该 Endpoint 去获取 Glance 服务,我们可以通过 Endpoint 的 region 属性去定义多个 region.Endpoint 该使用对象分为三类:
Admin URL:给 admin 用户使用,被从常规的访问中分离.
Internal URL:Openstack 内部服务使用来跟别的服务通信,只能被局域网访问.
Public URL:其它用户可以访问的地址,可以被全局访问.
Credentials
用于确认用户身份的凭证.
Authentication
确定用户身份的过程.
Keystone 形象比喻
如果把宾馆比作为 Openstack,那么宾馆的中央管理系统就是 Keystone,入住宾馆的人就是 User .在宾馆中拥有很多不同的房间,房间提供了不同的服务(Service).
在入住宾馆前,User 需要给出 ×××(Credential),中央管理系统(Keystone)在确认 User 的身份后(Authenticaiton),会给你一个房卡(Token)和导航地图(Endpoint).
不同 VIP(Role)级别的 User,拥有不同权限的房卡(Token),如果你的 VIP(Role)等级高,你可以享受到豪华的总统套房.
User 拿着房卡(Token)和地图(Endpoint),就可以进入特定的房间去享受不同的 Services.每一个服务(Services)中都拥有着一些特定资源(Project),例如,××× 中可以使用的精油种类和数量.User 可以根据自己的权限来使用这些资源.
Keystone 与其它服务的交互
Keystone 安装配置
Keystone 的安装
创建一个数据库和管理员令牌
MariaDB [(none)]> create database keystone;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| keystone |
| mysql |
| performance_schema |
+--------------------+
4 rows in set (0.00 sec)
MariaDB [(none)]> grant all on keystone.* to 'keystone'@'localhost' identified by 'keystone';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> grant all on keystone.* to 'keystone'@'%' identified by 'keystone';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> exit
Bye
安装 Keystone 相关软件包
[root@linux-node1 ~]# yum -y install openstack-keystone httpd mod_wsgi
[root@linux-node1 ~]# rpm -qa openstack-keystone httpd mod_wsgi
mod_wsgi-3.4-12.el7_0.x86_64
openstack-keystone-10.0.3-1.el7.noarch
httpd-2.4.6-67.el7.centos.6.x86_64
Keystone 的配置
编辑 / etc/keystone/keystone.conf 文件,并完成如下更改
[root@linux-node1 ~]# cp -a /etc/keystone/keystone.conf /etc/keystone/keystone.conf_$(date +%F)
[root@linux-node1 ~]# vim /etc/keystone/keystone.conf
在 [database] 部分,配置数据库访问
[database]
......
640 connection = mysql+pymysql://keystone:keystone@192.168.56.11/keystone
在 [memcache] 部分,配置缓存服务
[memcache]
......
1476 servers = 192.168.56.11:11211
在 [token] 部分,配置 Fernet UUID 令牌的提供者
[token]
.....
2659 provider = fernet
2669 driver = memcache
初始化身份认证服务的数据库
[root@linux-node1 ~]# su -s /bin/sh -c "keystone-manage db_sync" keystone
[root@linux-node1 ~]# mysql -ukeystone -pkeystone -e "use keystone;show tables"
初始化 Fernet key
[root@linux-node1 ~]# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
[root@linux-node1 ~]# keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
创建身份服务 API 端点
[root@linux-node1 ~]# keystone-manage bootstrap --bootstrap-password admin --bootstrap-admin-url http://192.168.56.11:35357/v3/ --bootstrap-internal-url http://192.168.56.11:35357/v3/ --bootstrap-public-url http://192.168.56.11:5000/v3/ --bootstrap-region-id RegionOne
配置 Apache HTTP 服务器
编辑 / etc/httpd/conf/httpd.conf 文件,配置 ServerName 选项为控制节点
[root@linux-node1 ~]# vim /etc/httpd/conf/httpd.conf
95 ServerName 192.168.56.11:80
创建一个链接到 / usr/share/keystone/wsgi-keystone.conf 文件
[root@linux-node1 ~]# ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
[root@linux-node1 ~]# ls -l /etc/httpd/conf.d/wsgi-keystone.conf
lrwxrwxrwx 1 root root 38 Jan 11 15:55 /etc/httpd/conf.d/wsgi-keystone.conf -> /usr/share/keystone/wsgi-keystone.conf
启动 httpd,并配置为开机自启
[root@linux-node1 ~]# systemctl enable httpd.service
[root@linux-node1 ~]# systemctl start httpd.service
[root@linux-node1 ~]# systemctl status httpd.service
配置 admin 账户,配置环境变量,临时生效
[root@linux-node1 ~]# export OS_USERNAME=admin
[root@linux-node1 ~]# export OS_PASSWORD=admin
[root@linux-node1 ~]# export OS_PROJECT_NAME=admin
[root@linux-node1 ~]# export OS_USER_DOMAIN_NAME=Default
[root@linux-node1 ~]# export OS_PROJECT_DOMAIN_NAME=Default
[root@linux-node1 ~]# export OS_AUTH_URL=http://192.168.56.11:35357/v3
[root@linux-node1 ~]# export OS_IDENTITY_API_VERSION=3
创建项目,域,用户和角色
创建 service 项目
[root@linux-node1 ~]# openstack project create --domain default --description "Service Project" service
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | Service Project |
| domain_id | default |
| enabled | True |
| id | afc19f08df4948989710d453c4ee45d0 |
| is_domain | False |
| name | service |
| parent_id | default |
+-------------+----------------------------------+
常规(非管理)任务应该使用无特权的项目和用户,创建 demo 项目和用户
[root@linux-node1 ~]# openstack project create --domain default --description "Demo Project" demo
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | Demo Project |
| domain_id | default |
| enabled | True |
| id | e10068ee83dc464683ff232494d30d39 |
| is_domain | False |
| name | demo |
| parent_id | default |
+-------------+----------------------------------+
[root@linux-node1 ~]# openstack user create --domain default --password-prompt demo
User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field | Value |
+---------------------+----------------------------------+
| domain_id | default |
| enabled | True |
| id | 903b9cf22cd248729fb770feb56a71c5 |
| name | demo |
| password_expires_at | None |
+---------------------+----------------------------------+
创建 user 角色
[root@linux-node1 ~]# openstack role create user
+-----------+----------------------------------+
| Field | Value |
+-----------+----------------------------------+
| domain_id | None |
| id | 145f27cc922b449694d0bf6e1b8b85c7 |
| name | user |
+-----------+----------------------------------+
添加 user 角色到 demo 项目和用户
[root@linux - node1~]#openstack role add--project demo--user demo user
Keystone 验证操作
因为安全性的原因,关闭临时认证令牌机制,撤销临时环境变量 OS_AUTH_URL 和 OS_PASSWORD
[root@linux - node1~]#unset OS_AUTH_URL OS_PASSWORD
作为 admin 用户,请求认证令牌
[root@linux-node1 ~]# openstack --os-auth-url http://192.168.56.11:35357/v3 --os-project-domain-name Default --os-user-domain-name Default --os-project-name admin --os-username admin token issue
Password:
+------------+------------------------------------------------------------------------------------+
| Field | Value |
+------------+------------------------------------------------------------------------------------+
| expires | 2018-01-11 10:22:42+00:00 |
| id | gAAAAABaVyziT1-asUKbU77tMkmfxqEW2zjEUmAYbLVMP5IKhiSbIJfcz0hCLITQjUA_em52ME0aedkKwm |
| | _G3ab_ts0H45rt3Jq72-1Rt_ldRaTdXGDwuuKxs_Dr4SaocAfjcqAf3mWQwiRVb7vctxfd- |
| | vYzFCt_IhEoCQXHEuARRGOdZ_T1GtU |
| project_id | 71c9b608e79546f4b90f710fea475de3 |
| user_id | fa4237d31d5145f78b87a29fbcc7ec0c |
+------------+------------------------------------------------------------------------------------+
作为 demo 用户,请求认证令牌
[root@linux-node1 ~]# openstack --os-auth-url http://192.168.56.11:5000/v3 --os-project-domain-name Default --os-user-domain-name Default --os-project-name demo --os-username demo token issue
Password:
+------------+------------------------------------------------------------------------------------+
| Field | Value |
+------------+------------------------------------------------------------------------------------+
| expires | 2018-01-11 10:24:22+00:00 |
| id | gAAAAABaVy1G0siKGf2BRNHd98ZBK55nf0Z3Iu1SitjV7WAvzKJ0y2NekH_1yid_AMoFCThaEnVwSldRf_ |
| | K9jAuvvc3sy1kQE0zlgZShn6vY-k6qaS_xyN0U0WnCHJst4eDLEQDNZzFDY- |
| | 6XmdwxdwicBQwyIIlrXrmIfVPvpDn5VVxOyCG3ZKo |
| project_id | e10068ee83dc464683ff232494d30d39 |
| user_id | 903b9cf22cd248729fb770feb56a71c5 |
+------------+------------------------------------------------------------------------------------+
Openstack 客户端环境脚本
创建脚本
编辑 admin-openrc 文件并且增加以下内容
[root@linux-node1 ~]# vim admin-openrc
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=admin
export OS_AUTH_URL=http://192.168.56.11:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
编辑文件 demo-openrc 并添加如下内容
[root@linux-node1 ~]# vim demo-openrc
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=demo
export OS_USERNAME=demo
export OS_PASSWORD=demo
export OS_AUTH_URL=http://192.168.56.11:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
使用脚本
加载 admin-openrc 文件来身份认证服务的环境变量位置和 admin 项目和用户证书
[root@linux - node1~]#source admin - openrc
请求认证令牌
[root@linux-node1 ~]# openstack token issue
+------------+------------------------------------------------------------------------------------+
| Field | Value |
+------------+------------------------------------------------------------------------------------+
| expires | 2018-01-15 05:09:39+00:00 |
| id | gAAAAABaXCmDx9x7k_ZU0gCh2qCnfEv0Z4P8MoGWEkUeC19cNKBEEVviW9DV3OM3O53gm3OzJZ_4Wf8OJx |
| | Q8ErmFV3qUF7GMzfVbCkwaPJAIPQWveopglMWdhKuT4IYNWBQV_frC69agmGKw1NIGSeNgQgdlGkrn7kzQ |
| | 2u-ThWPFQPXzfAFZq24 |
| project_id | 71c9b608e79546f4b90f710fea475de3 |
| user_id | fa4237d31d5145f78b87a29fbcc7ec0c |
+------------+------------------------------------------------------------------------------------+
Openstack 之路(二)认证服务 Keystone
来源: http://www.bubuko.com/infodetail-2466165.html