OpenStack —— Keystone基本原理及部署

简介

keystone是OpenStack的组件之一,用于为OpenStack家族中的其它组件成员提供统一的认证服务,包括身份验证、令牌的发放和校验、服务列表、用户权限的定义等等。云环境中所有的服务之间的授权和认证都需要经过 keystone. 因此 keystone 是云平台中第一个即需要安装的服务。

Keystone的功能

Keystone 的主要功能如下:

  • 管理用户及其权限;
  • 维护 OpenStack 服务的 Endpoint;
  • Authentication(认证)和 Authorization(鉴权)。

Keystone基本概念

  • User

使用服务的用户,可以是人,服务或者系统,只要是使用了openstack服务的对象都可以称为用户。当User对OpenStack进行访问时,Keystone会对其身份进行验证。

  • Project

租户,可以理解为一个人、项目或者组织拥有的资源的合集。在一个租户中可以拥有很多个用户,这些用户可以根据权限的划分使用租户中的资源。

  • Token

指的是一串比特值或者字符串,用来作为访问资源的令牌。Token中含有可访问资源的范围和有效时间。

  • Role

角色,用于分配操作的权限。角色可以被指定给用户,使得该用户获得角色对应的操作权限。安全包含两部分:Authentication(认证)和 Authorization(鉴权)

  • Service

Openstack Service,即Openstack中运行的组件服务。nova,glance都是属于一个服务,需要在keystone上进行创建,指定类型。
创建服务有一个服务,就创建一个endpoint,会根据服务类型去查找那个服务。Service 决定每个 Role 能做什么事情 ,Service 通过各自的 policy.json 文件对 Role 进行访问控制

  • Endpoint

一个可以通过网络来访问和定位某个Openstack Service的地址,通常是一个URL。例如,Nova需要访问Glance服务去获取Image时,Nova通过访问Keystone拿到Glance的Endpoint,然后通过访问该Endpoint去获取Glance服务,我们可以通过Endpoint的region属性去定义多个region。Endpoint该使用对象分为三类:
1、 Admin URL:给admin用户使用,被从常规的访问中分离。
2、 Internal URL:Openstack内部服务使用来跟别的服务通信,只能被局域网访问。
3、 Public URL:其它用户可以访问的地址,可以被全局访问。
User 通过 Endpoint 访问资源和执行操作

  • Credentials
    用于确认用户身份的凭证。

  • Authentication

确定用户身份的过程。

Keystone部署

在部署openstack组件时,需先行安装认证服务(keystone),而认证服务是使用Apache运行的,安装完成后才可以创建、管理账号,然后安装镜像服务(glance)、计算服务(nova)、网络服务(neutron)

创建数据库实例和数据库用户

[root@ct ~]# mysql -u root -p
MariaDB [(none)]> create database keystone;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'KEYSTONE_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'KEYSTONE_DBPASS';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit

安装keystone、httpd、mod_wsgi

[root@ct ~]# yum -y install openstack-keystone httpd mod_wsgi #mod_wsgi包的作用是让apache能够代理pythone程序的组件;openstack的各个组件,包括API都是用python写的,但访问的是apache,apache会把请求转发给python去处理,这些包只安装在controler节点
[root@ct ~]# cp -a /etc/keystone/keystone.conf{,.bak}
[root@ct ~]# grep -Ev "^$|#" /etc/keystone/keystone.conf.bak > /etc/keystone/keystone.conf
#通过pymysql模块访问mysql,指定用户名密码、数据库的域名、数据库名
[root@ct ~]# openstack-config --set /etc/keystone/keystone.conf database connection mysql+pymysql://keystone:KEYSTONE_DBPASS@ct/keystone
#指定token的提供者;提供者就是keystone自己本身
[root@ct ~]# openstack-config --set /etc/keystone/keystone.conf token provider fernet
  • 初始化认证数据库
[root@ct ~]# su -s /bin/sh -c "keystone-manage db_sync" keystone
  • 初始化fernet 密钥存储库(以下命令会生成两个密钥,生成的密钥放于/etc/keystone/目录下,用于加密数据)
[root@ct ~]# cd /etc/keystone/
[root@ct keystone]# ll
总用量 124
-rw-r-----. 1 root     keystone   2303 5月  12 2020 default_catalog.templates
-rw-r-----. 1 root     keystone    685 12月 16 15:50 keystone.conf
-rw-r-----. 1 root     keystone 104721 5月  12 2020 keystone.conf.bak
-rw-r-----. 1 root     keystone   1046 5月  12 2020 logging.conf
-rw-r-----. 1 root     keystone      3 5月  12 2020 policy.json
-rw-r-----. 1 keystone keystone    665 5月  12 2020 sso_callback_template.html
[root@ct keystone]# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
[root@ct keystone]# keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
  • 配置bootstrap身份认证服务
[root@ct keystone]# keystone-manage bootstrap --bootstrap-password ADMIN_PASS \
> --bootstrap-admin-url http://ct:5000/v3/ \
> --bootstrap-internal-url http://ct:5000/v3/ \
> --bootstrap-public-url http://ct:5000/v3/ \
> --bootstrap-region-id RegionOne
  • 配置Apache HTTP服务器
[root@ct ~]# echo "ServerName controller" >> /etc/httpd/conf/httpd.conf
  • 优化配置文件并开启服务
[root@ct ~]# ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
[root@ct conf.d]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@ct conf.d]# systemctl start httpd
  • 配置管理员账户的环境变量
[root@ct ~]# cat >> ~/.bashrc << EOF
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://ct:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
EOF
[root@ct ~]# source ~/.bashrc
  • 通过配置环境变量,可以使用openstack命令进行一些操作
[root@ct keystone]# openstack user list
+----------------------------------+-------+
| ID                               | Name  |
+----------------------------------+-------+
| 004e37c5d44741448c92b7c6e36bd4d3 | admin |
+----------------------------------+-------+

创建OpenStack 域、项目、用户和角色

[root@ct keystone]# openstack project create --domain default --description "Service Project" service
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Service Project                  |
| domain_id   | default                          |
| enabled     | True                             |
| id          | f694e4065390404a82f064644c6fe731 |
| is_domain   | False                            |
| name        | service                          |
| options     | {}                               |
| parent_id   | default                          |
| tags        | []                               |
+-------------+----------------------------------+
  • 创建角色
[root@ct ~]# openstack role create user
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | None                             |
| domain_id   | None                             |
| id          | 9f4c15fc89d5457daca1c49926b1b6f1 |
| name        | user                             |
| options     | {}                               |
+-------------+----------------------------------+
#查看角色列表
[root@ct ~]# openstack role list
+----------------------------------+--------+
| ID                               | Name   |
+----------------------------------+--------+
| 62c33b779274459ca40ba86ee26f2599 | reader |
| 9f4c15fc89d5457daca1c49926b1b6f1 | user   |
| bcad902da111478da9180971d890f08d | member |
| fd88fb7f7b084ebea1ea23cf36079a42 | admin  |
+----------------------------------+--------+
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值