设为首页 收藏本站
查看: 1331|回复: 0

[经验分享] 2、OpenStack Identity(身份认证)服务(keystone)

[复制链接]

尚未签到

发表于 2017-12-5 07:01:58 | 显示全部楼层 |阅读模式
  1 、环境(创建数据库和管理令牌)
  NOTICE:身份认证服务仅在控制节点上安装
  1.1、连接到数据库服务器



$ mysql -u root -p
  1.2、创建keystone数据库



mysql> CREATE DATABASE keystone;
  1.3、授予对keystone数据库的正确访问权限



mysql> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \
  IDENTIFIED BY 'KEYSTONE_DBPASS';
mysql> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \
  IDENTIFIED BY 'KEYSTONE_DBPASS';

KEYSTONE_DBPASS替换为实际密码
  2、使用Apache HTTP服务器mod_wsgi在端口5000和35357上提供身份服务请求。默认情况下,keystone服务仍会监听这些端口。因此,需要手动禁用keystone服务。
  2.1、安装keystone httpd mod_wsgi
  软件包



# yum install openstack-keystone httpd mod_wsgi
  2.2、配置keystone,/etc/keystone/keystone.conf



[database]
...
connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone


[token]
...
provider = fernet

  2.3、填充数据库



# su -s /bin/sh -c "keystone-manage db_sync" keystone
  2.4、初始化Fernet密钥存储库



# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
# keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
  2.5、引导身份认证服务



# keystone-manage bootstrap --bootstrap-password ADMIN_PASS \
--bootstrap-admin-url http://controller:35357/v3/ \
--bootstrap-internal-url http://controller:35357/v3/ \
--bootstrap-public-url http://controller:5000/v3/ \
--bootstrap-region-id RegionOne
ADMIN_PASS 替换为实际密码
  3、配置Http服务器
  3.1、编辑/etc/httpd/conf/httpd.conf配置文件下的ServerName



ServerName controller
  3.2、创建/usr/share/keystone/wsgi-keystone.conf的链接



# ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
  3.3、启动并随机启动



# systemctl enable httpd.service
# systemctl start httpd.service
  3.4、配置管理帐号



$ 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:35357/v3
$ export OS_IDENTITY_API_VERSION=3

ADMIN_PASS替换为keystone-manage bootstrap中的密码

  4、创建域,项目,用户和角色
  4.1、创建service 项目(管理,使用default域)



# openstack project create --domain default \
>   --description "Service Project" service
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Service Project                  |
| domain_id   | default                          |
| enabled     | True                             |
| id          | a997f8fe00ae4391965658b4487007a5 |
| is_domain   | False                            |
| name        | service                          |
| parent_id   | default                          |
+-------------+----------------------------------+
  4.2、常规(非管理员)任务应使用非特权项目和用户,以下创建非特权项目、用户、角色




创建demo项目
# openstack project create --domain default --description "Demo Project" demo
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Demo Project                     |
| domain_id   | default                          |
| enabled     | True                             |
| id          | fad24fcce9944b42a7676b5cfbc1f84b |
| is_domain   | False                            |
| name        | demo                             |
| parent_id   | default                          |
+-------------+----------------------------------+


创建demo用户
# openstack user create --domain default \
>   --password-prompt demo
User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| domain_id           | default                          |
| enabled             | True                             |
| id                  | 34cbdbe2fd0344309d777f6da77d2f51 |
| name                | demo                             |
| password_expires_at | None                             |
+---------------------+----------------------------------+


创建user角色
# openstack role create user
+-----------+----------------------------------+
| Field     | Value                            |
+-----------+----------------------------------+
| domain_id | None                             |
| id        | 2081a514bdbe4a16ad0f2e00933f4d06 |
| name      | user                             |
+-----------+----------------------------------+
  4.3、将user角色添加到demo项目和用户,无任何输出表示执行成功



# openstack role add --project demo --user demo user
  5、验证身份服务
  5.1、出于安全考虑,禁用临时身份验证令牌机制
  编辑/etc/keystone/keystone-paste.ini 文件并从 [pipeline:public_api],[pipeline:admin_api]和[pipeline:api_v3]段删除admin_token_auth
  5.2、取消设置临时OS_AUTH_URL和OS_PASSWORD 环境变量



# unset OS_AUTH_URL OS_PASSWORD
  5.3、使用admin用户(3.4节中配置的管理用户、项目、域),请求身份验证令牌



#管理用户使用35357端口进行身份验证
# openstack --os-auth-url http://controller:35357/v3 \
> --os-project-domain-name Default --os-user-domain-name Default \
> --os-project-name admin --os-username admin token issue
+------------+---------------------------------------------------------------------+
| Field      | Value                                                               |
+------------+---------------------------------------------------------------------+
| expires    | 2017-07-19 09:16:40+00:00                                           |
| id         | gAAAAABZbxVo13JGxGfS0QZ2Q2iqUywKrhLSBuSp5BI-ZZt6PZ53OnmaJVA_mdftbIz |
|            | aDEOotDppZiqBXeXIPPBVcW4LpDSR7FLGNjxqP1qaEIbnULZVr8e2e4EyC06ECrCqpL |
|            | yutgoqfDEsRY08bLDzPWdSsVRB2Daj97m-LRS0Gtxsj_IWmVQ                   |
| project_id | 2ca49bfa14cb4229b8cc868ea0eede81                                    |
| user_id    | 79527f3483c644508ff7827745ac45d7                                    |
+------------+---------------------------------------------------------------------+
  5.4、作为demo用户,请求身份验证令牌



#公共账户使用5000端口进行身份验证(Identity service API)
# 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 token issue
+------------+---------------------------------------------------------------------+
| Field      | Value                                                               |
+------------+---------------------------------------------------------------------+
| expires    | 2017-07-19 09:14:43+00:00                                           |
| id         | gAAAAABZbxTzCV-XWbzF6g0EXglacJFjdTHJzwcLVSKL4q_dR_4f5HzCKxXgMpCjzyS |
|            | SS_7FnBWbVkzBy5IuyXD50eDSlDncm_9DXjtvP-rQthKdU4obR6g4_qkwu6OLtt4iip |
|            | wcFjdUS0GJN1lsoARHp0GaOMOGjeNeDtN4Pk519r_EMmHMGaE                   |
| project_id | fad24fcce9944b42a7676b5cfbc1f84b                                    |
| user_id    | 34cbdbe2fd0344309d777f6da77d2f51                                    |
+------------+---------------------------------------------------------------------+
  6、创建OpenStack客户端环境脚本
  上一节(请求身份令牌中)使用环境变量和命令选项的组合来通过openstack客户端与身份服务进行交互 。为了提高客户端操作的效率,OpenStack支持简单的客户端环境脚本,也称为OpenRC文件。这些脚本通常包含所有客户端的常用选项,但也支持唯一选项。
  6.1、创建脚本
  6.1.1、编辑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_PASS
export OS_AUTH_URL=http://controller:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
  6.1.2、编辑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_PASS
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
  6.2、使用脚本
  要以特定项目和用户身份运行客户端,您可以在运行它们之前简单加载关联的客户端环境脚本。
  6.2.1、加载admin-openrc文件以使用Identity Service和admin项目和用户凭据的位置来填充环境变量



# source admin-openrc
  6.2.2、请求身份验证令牌



# openstack token issue
+------------+---------------------------------------------------------------------+
| Field      | Value                                                               |
+------------+---------------------------------------------------------------------+
| expires    | 2017-07-19 09:12:06+00:00                                           |
| id         | gAAAAABZbxRWtNC9-zJAWtL3Ws_2t5OQ4GBWdkQ16zMa7Srdt42dyFY9MoGkhL112MN |
|            | Rszbaf3b_afP1piwQshtxsXXgik5vYOBvqsW-p_S9FE7bPSjvYAawo571RMokb4NTbH |
|            | bTyf2h7GYlo6Kwv1PdS403_rp8Kxu5cPLcJ3pAw_a5Fqk9OK0                   |
| project_id | 2ca49bfa14cb4229b8cc868ea0eede81                                    |
| user_id    | 79527f3483c644508ff7827745ac45d7                                    |
+------------+---------------------------------------------------------------------+
  6.2.3、加载demo-openrc文件以使用Identity Service和admin项目和用户凭据的位置来填充环境变量



# source demo-openrc
  6.2.4、请求身份验证令牌



# openstack token issue
+------------+---------------------------------------------------------------------+
| Field      | Value                                                               |
+------------+---------------------------------------------------------------------+
| expires    | 2017-07-19 09:13:23+00:00                                           |
| id         | gAAAAABZbxSjtPf7G_7wEH5U9f3jEQ_JpkFZA0Ym0WHTdzJuuXMi_-              |
|            | SJNUKF3m8ceFE7NE-05f35e-c220TdDOKdJot02q2SKeRO5RDzVmA5kZvPv1Erx4sfw |
|            | r0TupKfQxP7ToP4reJu9Z2ZM3qxcsB9X0OUDJkU5Jx6EiXKWnxaL75WlwoAlCg      |
| project_id | fad24fcce9944b42a7676b5cfbc1f84b                                    |
| user_id    | 34cbdbe2fd0344309d777f6da77d2f51                                    |
+------------+---------------------------------------------------------------------+

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-420669-1-1.html 上篇帖子: Openstack实践(1)部署使用实例及neutron网络 下篇帖子: sexi部署openstack (devstack) 、一
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表