OpenStack-Keystone_身份认证组件

OpenStack-Keystone_认证组件

Keystone-简介

1、官网地址
https://docs.openstack.org/keystone/rocky/install/keystone-install-rdo.html
2、图文简介

alt text

OpenStack Keystone 是 OpenStack 的核心组件之一,负责身份认证(Authentication)、授权(Authorization)和服务目录(Service Catalog)管理。它是 OpenStack 的“身份服务”,为其他 OpenStack 组件提供统一的身份验证和访问控制功能。
3、Keystone-核心功能
1、身份认证(Authentication):
  验证用户身份,确保用户是合法的。
  支持多种认证方式,如用户名/密码、Token、LDAP、OAuth 等。

2、授权(Authorization):
  管理用户的权限,确保用户只能访问其被授权的资源。
  基于角色(Role)的访问控制(RBAC)。

3、服务目录(Service Catalog):
  提供 OpenStack 中所有服务的端点(Endpoint)信息。
  用户可以通过服务目录查找和访问 OpenStack 的各种服务(如 Nova、Glance、Cinder 等)。

4、用户管理:
  管理用户(User)、项目(Project)、域(Domain)和组(Group)。
  支持多租户(Multi-Tenancy)架构。

5、Token 管理:
  生成和管理 Token,用于用户会话的验证和授权。


4、Keystone-核心概念
1、User(用户):
  使用 OpenStack 服务的个体或系统。
  每个用户有一个唯一的用户名和密码。

2、Project(项目):
  资源的逻辑分组,用于隔离不同用户或团队的资源。
  在早期版本中称为 Tenant(租户)。

3、Domain(域):
  用于隔离用户、组和项目的更高层次的逻辑容器。
  支持多域架构,适用于大规模部署。

4、Role(角色):
  定义用户的权限。
  用户通过角色获得对资源的访问权限。

5、Token(令牌):
  用于验证用户身份的字符串。
  Token 可以是持久的(Persistent)或临时的(Ephemeral)。

6、Service(服务):
  OpenStack 中的功能模块,如 Nova(计算)、Glance(镜像)、Cinder(块存储)等。

7、Endpoint(端点):
  服务的访问地址,通常是一个 URL。
  包括 Public URL、Internal URL 和 Admin URL。

8、Catalog(目录):
  包含所有服务的端点信息,用户可以通过目录查找服务。
5、Keystone-架构下组件:
1、Identity(身份):
  管理用户、组、项目和域的信息。
  支持多种后端存储,如 SQL 数据库、LDAP 等。

2、Resource(资源):
  管理项目、域和分组的资源。
  
3、Assignment(分配):
  管理用户、组和角色之间的关联。

4、Token(令牌):
  生成和验证 Token。
  支持多种 Token 格式,如 UUID、PKI、Fernet 等。

5、Catalog(目录):
  管理服务的端点信息。

6、Policy(策略):
  定义访问控制规则,基于 JSON 格式的策略文件。
6、Keystone-工作流程
1、用户认证:
  用户提供凭证(如用户名/密码)进行认证。
  Keystone 验证凭证并生成 Token。

2、服务访问:
  用户使用 Token 访问 OpenStack 服务。
  服务向 Keystone 验证 Token 的有效性。

3、权限检查:
  Keystone 检查用户是否具有访问资源的权限。
  如果权限验证通过,用户可以使用服务。 
7、Keystone-配置与部署流程
1、安装 Keystone:
  使用包管理工具(如 apt 或 yum)安装 Keystone。
  例如:apt install keystone。

2、配置数据库:
  Keystone 需要一个数据库(如 MySQL 或 PostgreSQL)来存储数据。
  配置数据库连接信息。

3、配置认证后端:
  选择认证后端(如 SQL、LDAP)。
  配置认证参数。

4、启动服务:
  启动 Keystone 服务并设置为开机自启。
  例如:systemctl start keystone。

5、创建初始用户和角色:
  使用 openstack 命令行工具创建管理员用户和角色。
8、Keystone-常用命令
8-1、创建用户
openstack user create --domain default --password-prompt username
8-2、创建项目
openstack project create --domain default project_name
8-3、创建角色
openstack role create role_name
8-4、分配角色
openstack role add --project project_name --user username role_name
8-5、列出服务
openstack service list
8-6、列出端点
openstack endpoint list
9、Keystone-应用场景
多租户管理:为不同用户或团队分配独立的资源。
权限控制:通过角色管理用户的访问权限。
服务发现:通过服务目录查找和访问 OpenStack 服务。
集成外部认证:支持 LDAP、OAuth 等外部认证系统。

Keystone-组件部署

1、数据库配置
1-1、数据库配置
# 连接数据库
mysql -u root -p

# 创建数据库
CREATE DATABASE keystone;

# 配置权限
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost'IDENTIFIED BY 'keystone';
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'keystone';

# 刷新权限(第二次使用):
flush privileges;

# 注意:keystone用户连接数据库的密码为keystone
1-2、数据库用户创建完成后,进行结果校验

alt text

2、Keystone-软件安装
2-1、安装命令
yum install -y openstack-keystone httpd mod_wsgi
2-2、安装出现依赖报错

alt text

# https://developer.aliyun.com/packageSearch
# 下载对应的安装包进行安装:
rpm -Uvh --oldpackage qpid-proton-c-0.22.0-1.el7.x86_64.rpm
rpm 进行低版本软件包安装

--nodeps --force 跳过依赖检测
2-3、安装完成后进行检验

alt text

3、keystone-软件配置
3-1、配置keystone 文件
# 备份配置文件
cp /etc/keystone/keystone.conf{,.bak}
3-2、编辑配置文件
vim /etc/keystone/keystone.conf
  [DEFAULT]
  transport_url = rabbit://openstack:openstack@192.168.8.14:5672
  [database]
  # 数据库配置连接控制节点的认证地址
  connection = mysql+pymysql://keystone:keystone@192.168.8.14/keystone
  [token]
  # 配置token令牌的提供者,取消注释即可
  provider = fernet

# 修改后效果
grep -n '^[a-z]' /etc/keystone/keystone.conf
3-3、消息队列配置

alt text

3-4、数据库服务配置

alt text

3-5、token 令牌配置

alt text

3-6、修改完成后进行验证

alt text

# 查看以大小写字符打头的所有数据信息
grep -ni '^[a-Z]' /etc/keystone/keystone.conf
-i: 忽略大小写得不同,所以大小写视为相同
-n: 顺便输出行号

Keystone-初始化信息操作

1、同步数据库信息

alt text

2、到数据库中教研一下数据库表是否存在 keystone 登录数据库,user keystone 库,show tables

alt text

3、退出数据库,然后初始化认证信息

alt text

4、认证完成后,查看对应的认证信息是否生效

alt text

5、为admin 用户进行权限的添加
# https://docs.openstack.org/keystone/rocky/install/keystone-install-rdo.html

# R版的admin-url在5000 端口中
keystone-manage bootstrap --bootstrap-password admin\
                          --bootstrap-admin-url http://192.168.200.14:5000/v3/ \
                          --bootstrap-internal-url http://192.168.200.14:5000/v3/ \
                          --bootstrap-public-url http://192.168.200.14:5000/v3/ \
                          --bootstrap-region-id RegionOne

Keystone-HTTP服务配置

1、进入http 服务的配置文件中,备份对应的配置文件,编写配置信息

alt text

2、配置对应的 ServerName 信息

alt text

3、创建一个软连接

alt text

4、 启动httpd 服务,查看对应的状态是否已经启动成功

alt text

5、设置为 开机自启动

alt text

6、检查一下 启动的端口

Keystone-权限配置

1、配置用户信息
# systemctl enable httpd.service
# systemctl start httpd.service
export OS_USERNAME=admin 
export OS_PASSWORD=admin 
export OS_PROJECT_NAME=admin 
export OS_USER_DOMAIN_NAME=Default 
export OS_PROJECT_DOMAIN_NAME=Default
export OS_AUTH_URL=http://192.168.200.14:5000/v3 
export OS_IDENTITY_APT_VERSION=3
2、查看对应的用户信息

alt text

注意:这里如果提示 openstack 命令没有找到,需要安装一下 openstackclient 客户端
yum install -y python2-openstackclient
3、执行openstack 查询的时候提示找不到 35357 端口,在 /etc/httpd/conf.d/wsgi-keystone.conf 中添加35357 端口监听。(R版官网提示没有这个端口了,但是 openstack 操作的时候 会报错,先加上吧)
Listen 35357

<VirtualHost *:35357>
    WSGIDaemonProcess keystone-admin processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}
    WSGIProcessGroup keystone-admin
    WSGIScriptAlias / /usr/bin/keystone-wsgi-admin
    WSGIApplicationGroup %{GLOBAL}
    WSGIPassAuthorization On
    <IfVersion >= 2.4>
      ErrorLogFormat "%{cu}t %M"
    </IfVersion>
    ErrorLog /var/log/httpd/keystone-error.log
    CustomLog /var/log/httpd/keystone-access.log combined


    <Directory /usr/bin>
        <IfVersion >= 2.4>
            Require all granted
        </IfVersion>
        <IfVersion < 2.4>
            Order allow,deny
            Allow from all
        </IfVersion>
    </Directory>
</VirtualHost>
4、创建一个service 项目

alt text

5、创建一个demo 项目

alt text

6、openstack project 帮助文档查看

alt text

7、openstack 项目创建完成后,进行对应项目列表的查询

alt text

8、为 domain 项目创建一个 普通用户

alt text

9、验证用户是否创建成功

alt text

10、创建user角色
# openstack role create <角色组>

alt text

11、讲角色和用户 添加到对应的项目 demo 中

alt text

12、效果测试
12-1、取消环境变量
# unset OS_AUTH_URL OS_PASSWORD
12-2、使用admin 用户验证,获取 35357端口 管理员用户的token

alt text

12-3、使用demo 用户验证,获取 5000端口 普通用户的token

alt text

Keystone-工作使用

1、创建admin 用户的变量脚本

alt text

admin-openstack.sh

alt text

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.200.14:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
demo-openstack.sh

alt text

export OS_USERNAME=demo
export OS_PASSWORD=demo
export OS_PROJECT_NAME=demo
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_AUTH_URL=http://192.168.200.14:5000/v3
export OS_IDENTITY_API_VERSION=3
测试效果
source admin-openstack.sh
openstack token issue

source demo-openstack.sh
openstack token issue
2、日志文件检查
cd /var/log/keystone
grep 'ERROR' keystone.log

alt text

posted on   cloud_wh  阅读(38)  评论(0编辑  收藏  举报

编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
点击右上角即可分享
微信分享提示