Openstack之路(二)认证服务Keystone
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"|wc -l
38
- 初始化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-20 04:38:06+00:00 |
| id | gAAAAABaYrmeJL1mde_wln1z1G559nIsJd_D42uLbblKK4PTywSiqXhkg2DaVPFab8Iz0h64-YF6dq- |
| | D1xgTjXHfWCQpWcepHhC59OYznFY9J0PeECPqWcuOJrh_OJOkLuncdc_cvs3Ecjux2JXGw8fY6ZmJVoGnsc4lO78MUD-q6pHjqj4twrU |
| project_id | 14055178975d417987c5a94f030c7acf |
| user_id | d7f8f54a45814161a48e0d5feba4942c |
+------------+--------------------------------------------------------------------------------------------------------------+
- 作为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-20 04:40:30+00:00 |
| id | gAAAAABaYrouwJJcEUD8E0WMULvfn-rjPIEIP0OSrYwgvQZMrgJpV7MYLQ_deU0aZ4zEFqdzMvRvIkkIafvvKe8azJQkrBCFnCNVIblj9QS7 |
| | JbpiigVWkxXSHgNEAqDyzpAe_xTjQQU5A27Kf8MOIMfDw6NBoh4N9biY9Fkgf6IF7H0ngr1aitI |
| project_id | 8a788702c6ea46419bb85b4e4600e3c4 |
| user_id | 48cd83bd3ce54b8ebece24680e8c8b0a |
+------------+--------------------------------------------------------------------------------------------------------------+
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-20 04:42:41+00:00 |
| id | gAAAAABaYrqxOK2q0kjx7jsWU2BIAR5YudyAF491y6pPbl9J2SOLWjdGP7_XeTKnTHKyVGm13zaqnzw4jj- |
| | 6ZNKIqP5NhvmwtNsVeQK4QVFmEECZ850ZeBBdnwTxhn0mTFr3_n0aEnZ96iBJ4aLLbo2T4KM2AdSn5wBzpvHJnstSDu4rVBG0tNs |
| project_id | 14055178975d417987c5a94f030c7acf |
| user_id | d7f8f54a45814161a48e0d5feba4942c |
+------------+--------------------------------------------------------------------------------------------------------------+
转载于:https://blog.51cto.com/11097612/2062545
Openstack之路(二)认证服务Keystone相关推荐
- OpenStack部署(二、Keystone)
OpenStack部署(二.Keystone) 一.Keystone概述 1. 身份服务 2. 功能 二.Keystone组件部署 1. 创建数据库实例和用户 2. 安装mod_wsgi包 3. 指定 ...
- OpenStack部署(二)keystone
创建Keystone数据库 在控制节点(controller)的MariaDB上创建Keystone数据库: mysql -uroot -p123456 # -u root指定登录mariaDB的用户 ...
- OpenStack 的部署T版(二)——Keystone组件
目录 一.OpenStack安装Keystore组件 Keystone认证流程 1.OpenStack组件安装的顺序 2.创建数据库实例和数据库用户 3.安装.配置keystone.数据库.Apach ...
- 传统公司部署OpenStack(t版)简易介绍(二)——Keystone组件部署
传统公司部署OpenStack(t版)简易介绍(二)--Keystone组件部署 一.OpenStack组件安装的顺序 二.创建数据库实例和数据库用户(ct控制节点) 三.安装.配置keystone. ...
- 【N版】openstack——认证服务keystone(三)
[N版]openstack--认证服务keystone 一.keystone介绍 1.1keystone Keystone(OpenStack Identity Service)是 OpenStack ...
- OpenStack(二)——Keystone组件
OpenStack(二)--Keystone组件 一.OpenStack组件之间的通信关系 二.OpenStack物理构架 三.Keystone组件 1.Keystone身份服务 2.管理对象 3.K ...
- OpenStack实践系列②认证服务Keystone
OpenStack实践系列②认证服务Keystone 三.实战OpenStack之控制节点 3.1 CentOS7的时间同步服务器chrony 下载chrony # yum install -y ch ...
- OpenStack组件——Keyston身份认证服务
OpenStack组件--Keyston身份认证服务 一.Keystone身份服务简介 1.1.概述:主要功能 1.2.管理对象 1.3keystone认证过程⭐⭐⭐ 二.Keystone身份认证服务 ...
- OpenStack介绍说明、OpenStack架构说明、OpenStack核心服务详细说明【keystone,nova,cinder,neutron...】、OpenStack创建VM,服务间交互示例
文章目录 OpenStack介绍说明 OpenStack起源 认识openstack[重要] OpenStack架构说明 OpenStack架构概览 OpenStack逻辑架构 OpenStack生产 ...
- 手动部署OpenStack环境(二:CentOS6.6虚拟机的安装及配置)
任务二.CentOS 6.6虚拟机的安装及配置 2.1.安装环境检查 2.2.安装及配置controller0节点 2.3.安装及配置computer0节点 2.4.安装及配置network0节点 2 ...
最新文章
- redis删除过期key的算法_面试官别再问我Redis内存满了该怎么办了
- collections deque队列及其他队列
- VTK:Utilities之Vector
- MyBatis】MyBatis一级缓存和二级缓存
- 记一次应急响应到溯源入侵者
- rhel7.4搭建Discuz
- 计算机视觉:相机成像原理:世界坐标系、相机坐标系、图像坐标系、像素坐标系之间的转换(转载)
- python列表用法大全
- 计算机无法选择字体,电脑系统字体缺失怎么办
- 【OpenCV入门教程之二】 一览众山小:OpenCV 2.4.8 or OpenCV 2.4.9组件结构全解析
- FutureMapping:空间人工智能的计算结构
- 淘宝/天猫优惠券获取API 接口
- 02-客房预订系统数据库-用户和客房预订数据操作
- 南大周志华写的For Potential Students
- 20155305乔磊2016-2017-2《Java程序设计》第二周学习总结
- CPU性能测试基准(EEMBC-CoreMark)
- 王牌竞速服务器维护,王牌竞速攻略大全 新手入门少走弯路[多图]
- 注册申请企业邮箱后如何使用,企业邮箱有已读回执功能吗?
- 隆重推出:Android KTX 预览版让 Kotlin 代码更精简
- 工具的使用(k9s-zk-git)
热门文章
- html5+css3案例——仿瓢城旅行网
- Kubernetes(k8s)中Pod资源的健康检查
- 一文搞懂SCI、EI、ISTP、SSCI、INSPEC、SCIE、IEEE、CSCD、CSSCI
- 初中数学结合计算机教学设计,初中数学与信息技术整合在教学中的应用.doc
- 1.$是什么 2.阿贾克斯是什么,怎么创建和优点
- 阿贾克斯(Ajax)异步请求数据
- mesh路由器哪个品牌好(无线mesh组网推荐路由器)
- 什么是长尾理论-长尾效应
- C语言程序设计 谭浩强 数据类型,运算符和表达式 知识点
- AntPathMatcher路径匹配器