OpenStack 认证服务 KeyStone [二]

OpenStack 认证服务 KeyStone [二]

标签(空格分隔): openstack
时间:2016年11月23日

openstack认证服务Keystone 介绍

Keystone作用:
1.用户与认证:用户权限与用户行为跟踪;
2.服务目录:提供一个服务目录,包括所有服务项和相关Api的断点
3.SOA相关知识

Keystone主要两大功能用户认证 服务目录(相当于一个注册中心

用户认证几大名词介绍

User:用户
 它是用一个数字代表使用openstack云服务的一个人、系统、或服务。身份验证服务将会验证传入的由用户声明将调用的请求
 一个租户可以有多个用户
 一个用户可以属于一个或多个租户
 用户对租户和操作权限由用户在租户中承担的角色来决定。

Project:项目
 它是各个服务中的一些可以访问的资源集合或者说叫资源组。它是一个容器,用于组织隔离资源,或标识对象。

Token:令牌

Role:角色
代表一组用户可以访问的资源权限,例如Nova中的虚拟机、Glance中的镜像

服务目录两大名词介绍

Service:服务
Service即服务,如Nova、Glance、Swift。根据前三个概念(User,Tenant和Role)一个服务可以确认当前用户是否具有访问其资源的权限。但是当一个user尝试着访问其租户内的service时,他必须知道这个service是否存在以及如何访问这个service。

Endpoint:端点
Endpoint翻译为“端点”,我们可以理解它是一个服务暴露出来的访问点,如果需要访问一个服务,则必须知道他的endpoint。Endpoint的每个URL都对应一个服务实例的访问地址,并且具有public、orivate和admin这三种权限。pubic url可以完全被全局访问,private url只能被局域网访问,admin url被从常规的访问中分离。

安装KeyStone

安装Openstack验证服务KeyStone

[root@linux-node1 ~]# yum install -y openstack-keystone httpd mod_wsgi memcached python-memcached

提示: wsgi是python一个cgi的接口(keystone需要使用httpd来运行)

注意!
编辑文件/etc/keystone/keystone.conf,我们管理keystone只需要修改keystone的配置文件即可
在配置文件里面以[xxx]里面的内容叫做配置栏目(类似于mysql配置文件[mysqld]下面)

[DEFAULT]部分,定义初始管理令牌的值:
我们使用openssl生成一个随机值

[root@linux-node1 ~]# openssl rand -hex 10
1b0abfc7e9a314a0fd7f
[root@linux-node1 ~]# vim /etc/keystone/keystone.conf
[DEFAULT]
admin_token = 1b0abfc7e9a314a0fd7f

 keystone默认没有用户,需要进行创建用户。这样我们在配置文件中加入admin_token,在没有用户的情况下可以使用admin_token进行访问。还可以设置不用用户名和密码。简单来说admin_token就是初始化时候超级管理员的用户

[database]部分,配置数据库访问:

[database]
connection = mysql+pymysql://keystone:keystone@192.168.56.11/keystone

用户名:密码:数据库地址:数据库名称
因为我们需要将用户密码保存到数据库中,所以我们要配置数据库

配置Fernet UUID令牌的提供者
提供令牌有四种方式[fernet|pkiz|pki|uuid]默认是uuid

[token]
provider = fernet
driver = memcache

默认是存储在sql中,我们需要将它修改为memcache

提示:关于为什么选择fernet我们可以参考下方文章

Keystone几种token生成的方式分析
http://blog.csdn.net/miss_yang_cloud/article/details/49633719

配置memcached

[memcache]
servers = 192.168.56.11:11211

提示:官方默认是localhost,但是如果是正式生产环境可能在另一台服务器上

总结keystone有以下配置

[root@linux-node1 ~]# grep '^[a-Z]' /etc/keystone/keystone.conf
[DEFAULT]
admin_token = 1b0abfc7e9a314a0fd7f
[database]
connection = mysql +pymysql
://keystone:keystone@192.168.56.11/keystone
[memcached]
servers = 192.168.56.11:11211
[token]
provider = fernet
driver = memcache

初始化数据库

[root@linux-node1 ~]# su -s /bin/sh -c "keystone-manage db_sync" keystone

会自动找到keystone配置文件里的mysql连接,来帮我们创建数据库中的

问题:我们为什么要使用keystone用户去同步数据库呢?
 因为同步数据库会在/var/log/keystone去写一个日志,如果使用root权限,keystone启动时会读取这个日志,那么将无法进行读取出现启动错误的情况

检查表是否创建成功

[root@linux-node1 ~]# mysql -h 192.168.56.11 -ukeystone -pkeystone -e "use keystone;show tables;"

温馨提示:如果查看表的时候发现没有,那么我们就应该排查/var/log/keystone.log 在群里问问题必须自己先看了没有问题在进行提问

初始化Fernet keys;
创建相关的证书

[root@linux-node1 ~]# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone

执行完命令之后会在/etc/keystone下生成fernet-keys目录,它的权限是keystone里面存放这一些相关证书

提示:我们要注意/etc/keystone/keystone.conf文件的权限

启动memcached并设置开启激动

[root@linux-node1 ~]# systemctl start memcached.service 
[root@linux-node1 ~]# systemctl enable memcached.service 
Created symlink from /etc/systemd/system/multi-user.target.wants/memcached.service to /usr/lib/systemd/system/memcached.service.

检查
我们需要检查是否有11211 memcached的端口

image_1b27dplmpth2tka1iubui4ma99.png-81kB

查看配置文件

[root@linux-node1 ~]# cat /etc/sysconfig/memcached
PORT="11211"     #端口号
USER="memcached"  #用户
MAXCONN="1024"   #最大连接数
CACHESIZE=
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值