OpenStack部署2.0——身份服务(Keystone)部署
先放个链接,万一有人关注呢
优质文章推荐
↓ ↓ ↓ ↓ ↓
概述
Keystone服务是OpenStack项目中的身份认证服务,它提供了一系列身份、令牌、目录、策略服务,是OpenStack访问控制的基石。
Keystone的主要功能包括:
1、用户管理: Keystone负责管理OpenStack的所有用户,包括创建、删除、禁用用户账号等。
2、项目管理:一个项目对应一组资源的集合,Keystone可以创建项目、维护项目与用户的关系。
3、角色管理:角色定义了一组权限,可以赋予给用户来控制对资源的访问。Keystone负责管理角色信息。
4、服务目录:Keystone维护 OpenStack服务的目录索引,包括服务的API端点信息等。
5、认证服务:对用户的密码和密钥进行验证,验证成功后签发证书。
6、授权管理:负责决定用户是否有权访问指定的服务或资源。
7、令牌管理:颁发身份验证令牌,并在有效期内维护令牌列表。
客户端首先向Keystone发起认证请求,Keystone验证身份信息后返回一个作出相关判断的令牌。客户端使用该令牌向其他服务发起 API 请求,服务根据令牌的信息对客户端进行授权。
Keystone通过SQL数据库来存储用户、项目、角色等身份信息。它也提供了对外的REST API接口,以及命令行工具,如keystone-manage等。
Keystone为OpenStack云平台提供核心的身份认证与访问控制服务,是构建安全可靠的OpenStack私有云的基础。
创建数据库
进入控制节点的数据库中
mysql -uroot -p123
创建身份服务的数据库
create database keystone;
授权数据库
grant all privileges on keystone.* to 'keystone'@'localhost' identified by '123';
grant all privileges on keystone.* to 'keystone'@'%' identified by '123';
退出数据库
安装配置服务组件
安装相关软件包
yum install openstack-keystone httpd mod_wsgi -y
解释:
修改配置文件,配置数据库访问
vi /etc/keystone/keystone.conf
内容如下
[database]
connection = mysql+pymysql://keystone:123@controller/keystone
[token]
provider = fernet
解释:
注意:
因为发行版的不同,配置文件中的内容也不同,所以需要仔细查看配置文件内容,添加或修改新配置,删除重复的配置。修改完成后,保存退出
填充数据库
su -s /bin/sh -c "keystone-manage db_sync" keystone
初始化Fernet密钥库,使身份服务能够在非root用户和组下运行。
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
#这个命令用于初始化fernet token机制所需要的密钥存储库。
#--keystone-user keystone - 指定密钥库目录的owner为keystone用户
#--keystone-group keystone - 指定密钥库目录的group为keystone组
#这样keystone进程就有访问密钥库的权限了。
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
#这个命令用于生成fernet机制所需的密钥,并设置权限。
#--keystone-user和--keystone-group同上,也是设置密钥文件的owner和group。
#所以这两条命令一个初始化了密钥存储库,一个生成了密钥文件,并都将文件权限设置为keystone用户和组,完成了fernet token机制的初始化配置。
引导身份认证服务
keystone-manage bootstrap --bootstrap-password 123 \
#指定admin用户的密码为123
--bootstrap-admin-url http://controller:5000/v3/ \
#指定admin用户访问的API端点URL
--bootstrap-internal-url http://controller:5000/v3/ \
#指定内部访问的API端点URL
--bootstrap-public-url http://controller:5000/v3/ \
#指定外部访问的API端点URL
--bootstrap-region-id RegionOne
#指定region为RegionOne
解释:
修改配置文档
vi /etc/httpd/conf/httpd.conf
修改如下
ServerName controller
创建身份认证服务配置文件的文件链接
ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
启动Apache服务
systemctl enable httpd.service
systemctl start httpd.service
配置环境变量
创建一个用于存放变量的文件,放在家目录下就行
vi admin-openrc
内容如下
export OS_USERNAME=admin
#OpenStack用户名,用于登录和认证的账号名。
export OS_PASSWORD=123
#OpenStack用户对应的密码。
export OS_PROJECT_NAME=admin
#用户名下所属的项目名称。OpenStack以项目为基本管理单元。
export OS_USER_DOMAIN_NAME=Default
#用户名所在的域名。默认为"Default"。
export OS_PROJECT_DOMAIN_NAME=Default
#项目所在的域名。默认为"Default"。
export OS_AUTH_URL=http://controller:5000/v3
#OpenStack认证服务的端点URL,用于用户进行认证。
export OS_IDENTITY_API_VERSION=3
#指定要使用的OpenStack Identity API版本,默认为3。
密码可以自定义
应用环境变量
source admin-openrc
验证操作
验证操作是官方提供的一些用于验证服务是否已成功运行的命令,如果这些命令顺利运行,则表示该服务已正常运行。这些操作可以不做,但为了确保万无一失,建议执行一次这些命令。
身份认证服务为OpenStack每个服务提供身份验证,身份验证需要使用域、项目、用户和角色的组合。
openstack domain create --description "Default Domain" Default
解释:
输出如下
-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | Default Domain |
| enabled | True |
| id | 2f4f80574fd84fe6ba9067228ae0a50c |
| name | Default |
| tags | [] |
+-------------+----------------------------------+
创建admin项目
openstack project create --domain default --description "Admin Project" admin
解释:
输出如下
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | Admin Project |
| domain_id | default |
| enabled | True |
| id | aeda23aa78f44e859900e22c24817832 |
| is_domain | False |
| name | admin |
| parent_id | default |
| tags | [] |
+-------------+----------------------------------+
创建admin用户
openstack user create --domain default --password-prompt admin
输出如下
User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field | Value |
+---------------------+----------------------------------+
| domain_id | default |
| enabled | True |
| id | aeda23aa78f44e859900e22c24817832 |
| name | admin |
| options | {} |
| password_expires_at | None |
+---------------------+----------------------------------+
创建admin角色
openstack role create admin
输出如下
+-----------+----------------------------------+
| Field | Value |
+-----------+----------------------------------+
| domain_id | None |
| id | 997ce8d05fc143ac97d83fdfb5998552 |
| name | admin |
+-----------+----------------------------------+
将admin角色添加到admin项目和admin用户上
openstack role add --project admin --user admin admin
开发者为OpenStack服务创建唯一用户时,唯一用户需包含在service项目内。
创建service项目
openstack project create --domain default --description "Service Project" service
输出如下
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | Service Project |
| domain_id | default |
| enabled | True |
| id | 5eaf162fb3b949b9ad57d848629757f1 |
| is_domain | False |
| name | service |
| options | {} |
| parent_id | default |
| tags | [] |
+-------------+----------------------------------+
开始验证身份令牌,先取消设置认证链接和密码的临时环境变量
unset OS_AUTH_URL OS_PASSWORD
验证admin用户的身份令牌
openstack --os-auth-url http://controller:5000/v3 --os-project-domain-name Default --os-user-domain-name Default --os-project-name admin --os-username admin token issue
输入密码后,输出如下
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Field | Value |
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| expires | 2021-09-02T06:24:17+0000 |
| id | gAAAAABhMGABAO1rXsg0rnL2qegdQZjdOZAghyvdMes6GJ9nkbQgTyQDDlP4drW0w901eSj_nQWZk7OxdfB64qhguh4v13majISWXAsp3loVpE2Iyja4puT8_MOH02tsXT9FLprEqAniwiYnSo7-wUUR-sDVZ9Cl0P-3yO5ROOzUqUJ-qCJddxE |
| project_id | 4c1c66c3a11947bab644b3e7d4abfb01 |
| user_id | b0b89ee8513a42e281be5aeadad6c699 |
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
相关概念讲解:
来不及解释了,快上车!(进群看公告)
欢迎新的小伙伴加入!在这里,我们鼓励大家积极参与群内讨论和交流,分享自己的见解和经验,一起学习和成长。同时,也欢迎大家提出问题和建议,让我们不断改进和完善这个平台。
↓↓↓ 点个在看,你最好看!