keystone学习小结

news2024/11/23 10:46:12

1 keystone middleware

1.1 工作流程

middleware在客户端和服务端之间,会拦截客户端请求并判断请求身份是否是正确合法的,若是,则继续将请求发给其他middleware或app

具体看,干了这些事 1将请求里的auth header去除,防止伪造认证 2从请求http header生成auth token 3验证token:若合法则在请求添加表示验证合法的header,然后将请求传下去,若不合法则reject请求或继续吧请求发给service,只是在headers里添加认证未通过的信息

 

1.2 模式

middleware有两种模式,一种是请求,一种是委托模式

请求模式:即上一段所述

414bfeb39a5d44998319e490cfa81191.png

委托模式:将认证过程放到service里,由service进行认证而不是keystone middleware

a7b1a8c2f7d942e0b02ecabfeea128df.png

1.3 配置

可以配到其他service的paste配置文件的pipeline

对于拥有独立paste配置文件的service,在paste ini配的keystone middleware也可在service主配置文件进行配置。相比之下,优先生效的是paste ini,所以如果想让service主配置文件生效,必须在paste ini里删除相关配置

 

若在服务主配置文件中的[keystone_auth]下配了auth_type, 服务认证时会建立与keystone的连接,如果有多region,还需配region_name

 

1.4 性能

若每个request都认证会降低服务响应性能,keystone middleware支持缓存token(在内存中)以缓解此问题,问题是如果token过期但仍在缓存中,token可能会继续正常工作

 

token缓存配置项

memcached_servers: 缓存token的server。若swift使用memcachedring,该配置项无效

token_cached_time: token缓存时间

 

注意 若使用memcached,则需要安装python-memcached和pycrypto,这两个可能没在requirements.txt列出

 

安全配置项

memcache_security_strategy 可选配置 为MAC或ENCRYPT,否则报错,前者会认证token,后者认证后还会加密token

memcache_secret_key 可选 当memcache_security_strategy配置时,本配置必须配置否则报错

1.4 原理

middleware尝试在请求头里找X-Auth-Token或X-Storage-Token。若请求没带X-Auth-Token且中间件不是委托模式,则返回Unauthorized

认证结果用header X-Identity-Status表示,若认证通过则值为confirmed,若为委托模式且未认证通过,则值为invalid

如果请求头还有X-Service-Token,则当X-Auth-Token认证通过后还会校验X-Service-Token,如果通过,会在请求头设X-Service-Identity-Status为confirmed

当X-Service-Token未通过认证时,若delay_auth_decision为True,则X-Service-Identity-Status被设为invalid且不再给请求头添加选项,若为False,则直接返回HTTPUnauthorized

2 audit middleware

来自于keystone middleware,类似于keystone middleware,可捕获请求,处理然后继续

 

2.1 安装与使用

需要安装oslo.messaging,如果没装,audit吧audit结果记日志里

audit可在每个服务的api-paste.ini配置

4e04e0c1d589419aa45c9324f36809f9.png

audit应在keystone的authtoken后,以便利用环境变量

2.2 配置

配置audit middleware需要在服务api-paste.ini配置api_audit_map.conf,如上图

audit middleware可配置自己的notification driver,即可配不同的driver,如果需要和服务不同的driver,也可以手动配成其他,若配成messaging,其他transport的配置在组件中有专门的option可配,如“oslo_messaging_rabbit”

8900a2067bdf4fe580ff7b332401cd26.png

3 keystone架构

身份:包括用户名和组名,归属于domain,即user和group在domain不可重名,但在不同domain可以重名

资源:project 类似于user和group,domain内名称 不重复; domain 可近似看作user,group,project的容器

project可包含user和group,domain可包含project,user,group

3.1 鉴权方法(polocy)

rule认证 一般从用户元数据的'extras'里获取认证信息,然后用这信息去鉴权,比如给用户添加一个role意味着给用户元数据添加一个role

获取token可提供user名称或user id,若提供username,则还需要提供domain信息,因为user在不同domain间可重名,但id跨domain也不重复,所以如果提供user id,则不需要提供domain信息

3.2 作用域

比如token有作用范围,比如项目内token,域内token,系统token等

4 keystone

4.1 终端用户

可创建app凭据来通过keystone鉴权,用户可将角色委托给project,然后对app授权凭据约束,在凭据加入project信息,从而使用app凭据即可通过keystone认证,这可以避免认证显式传入密码

创建app凭证 openstack application credential create monitoring 此命令将创一个名为monitoring的app凭证,凭证的role根据当前user作用域创建,所以凭证的role和当前user对应的role相同,创建的凭证会生成一个密钥,也可以提供自定义密钥

给app创凭据提供的role是当前user的role列表的子集,如果删了app里加入的role,app凭据将可能无法正常通过认证

 

使用app认证的话,可在service配置文件配置,修改auth_type即可

c09a69f70b474a84bcda0432c6302712.png

app凭证rotate

app凭证相比于密码认证,减少了服务downtime,改密码会有一会downtime,app凭证可以rotate避免downtime,先创新的app凭证,再改配置里的app凭证id和secret,等service ok了,删除就app凭证,注意app凭证名称不可重复

4.2 系统管理员

4.2.1 概念

创建用户 openstack user create --password-prompt --email xxx

创project openstack project create testproject --domain testdomain

创domain openstack --os-identity-api-version=3 domain create testdomain

创role openstack role create testrole

将project和role分配给user openstack role add --project xxx --user user_name role_name

role通过policy.json管理,默认只有admiin role,所以默认情况可访问没有admin限制的project

组是user的集合,组可简化role授权管理,只需给group填一次role,group所有user都可受到该role影响

4.2.2 bootstrap keystone

keystone部署好了初始化需要新增第一个用户,role,project,用keystone-manage实现

4.2.3 管理project,user,role

user是project的成员,user可以是一个或几个project的成员,role定义了user可以干啥

删除user前,需要先删除user在其主project中于project的关系,再删user

role有继承role,类似于类的继承,如member是基role,派生role有compute-role,network-role,则给user-project分配了compute-role,同时也拥有了member role的权限

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1649588.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【FL常用插件#1】Ozone11臭氧的安装和使用

本文内容收集自互联网,仅供个人学习参考使用,不允许用于商业用途,造成的侵权行为与本文作者无关 安装 VST2、VST3、AAX和NKS是音频技术界常见的几种插件格式,它们在功能和兼容性上有所不同: VST2 (Virtual Studio Tec…

QT--2

Qt界面设计 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent) {//窗口相关设置this->resize(680,520);this->setFixedSize(680,520);this->setWindowTitle("Tim");this->setWindowFla…

ES集群设置访问密码

1 新增配置 每个集群节点都需要设置,编辑 elasticsearch.yml 文件: cd /home/isearch/es vi es-cluster-01/config/elasticsearch.yml vi es-cluster-02/config/elasticsearch.yml vi es-cluster-03/config/elasticsearch.yml # 设置启用了X-Pack安全…

Linux专栏10:Linux权限详解(上)

博客主页:Duck Bro 博客主页系列专栏:Linux专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ Linux权限详解(上) 编号:10 文章…

CANdela/Diva系列1--CANdela Studio的基本介绍

大家好,这个系列主要给大家介绍跟诊断相关的Vector 工具CANdela和Diva,首先介绍CANdela。 目录 1.CANdela的简介: 2.如何打开CANdela 工程: 3.CANdela工程的详细介绍: 3.1 工具栏的介绍: 3.2 工作树的…

HarmonyOS开发案例:【电子相册】

介绍 如何实现一个简单的电子相册应用的开发,主要功能包括: 实现首页顶部的轮播效果。 实现页面跳转时共享元素的转场动画效果。 实现通过手势控制图片的放大、缩小、左右滑动查看细节等效果。 相关概念 [Swiper]:滑块视图容器&#x…

软件系统测试方案书(测试计划-Word原件)

2 引言 2.1 编写目的 2.3 测试人员 2.4 项目背景 2.5 测试目标 2.6 简写和缩略词 2.7 参考资料 2.8 测试提交文档 2.9 测试进度 3 测试环境 3.1 软硬件环境 4 测试工具 5 测试策略 5.1 测试阶段划分及内容 5.1.1 集成测试 5.1.2 系统测试 5.1.2.1 功能测试 5.…

通过mask得到bbox(numpy实现)

在SAM的加持下,我们很容易得到物体的mask,但是物体的bbox信息通常也很有用。那么,我们可以写一个函数,立马可以通过mask得到bbox。 代码如下: import numpy as npdef mask2bbox(mask):nonzero_indices np.nonzero(m…

阿里云CentOS 7.9 64位 Liunx 安装redis

具体的步骤如下: 添加 EPEL 仓库,因为 Redis 在标准的 CentOS 仓库中不可用: sudo yum install epel-release安装 Redis: sudo yum install redis启动 Redis 服务: sudo systemctl start redis如果你想让 Redis 在…

python中numpy库使用

array数组 生成array数组 将list转化为array数组 import numpy as np np.array([1,2],typenp.int32)其中dtype定义的是元素类型,np.int32指32位的整形 如果直接定义dtypeint 默认的是32位整形。 zeors和ones方法 zeros()方法,该方法和ones()类似&a…

Unity EventSystem入门

概述 相信在学习Unity中,一定有被UI事件困扰的时候把,当添加UICanvas的时候,Unity会为我们自动添加EventSystem,这个是为什么呢,Unity的UI事件是如何处理的呢,在使用各个UI组件的时候,一定有不…

35 信号处理

什么时候捕捉 如果信号的处理动作是用户自定义函数,在信号递达时就调用这个函数,称为捕捉信号,由于信号处理函数的代码是在用户空间的,处理过程比较复杂,举例如下:用户程序注册了SIGQUIT信号的处理函数sig…

【C++】C++11--- 类的新功能

目录 类的新功能 默认成员函数 示例 类成员变量初始化 强制生成默认函数的关键字default 禁止生成默认函数的关键字delete 类的新功能 默认成员函数 构造函数析构函数拷贝构造函数拷贝赋值重载取地址重载const取地址重载 C11在原先的6个默认成员函数的基础上&#xff0c…

基于Flask的岗位就业可视化系统(一)

🌟欢迎来到 我的博客 —— 探索技术的无限可能! 🌟博客的简介(文章目录) 前言 本项目综合了基本数据分析的流程,包括数据采集(爬虫)、数据清洗、数据存储、数据前后端可视化等 推荐…

Redis(Redis配置和订阅发布)

文章目录 1.Redis配置1.网络配置1.配置文件位置 /etc/redis.conf2.bind(注销支持远程访问)1.默认情况bind 127.0.0.1 只能接受本机的访问2.首先编辑配置文件3.进入命令模式输入/bind定位,输入n查找下一个,shift n查找上一个&…

STM32F407VET6 学习笔记2:定时器、串口、自定义串口打印函数

今日继续学习使用嘉立创购买的 立创梁山派天空星,芯片是 STM32F407VET6 因为已经有学习基础了,所以学习进度十分快,这次也是直接一块学习配置定时器与串口了,文章也愈来愈对基础的解释越来越少了...... 文章提供测试代码讲解、完…

springboot项目组合定时器schedule注解实现定时任务

springboot项目组合定时器schedule注解实现定时任务! 创建好springboot项目后,需要在启动类上增加注解开启定时器任务 下图所示: 增加这个注解,启动项目, package com.example.scheduledemo.util;import org.springf…

Baidu Comate——您的智能编码伙伴

文章目录 1.Baidu Comate智能编码助手简介2.Baidu Comate安装使用3.查看Comate插件功能4.Baidu Comate基础功能介绍✨注释生成代码✨实时续写✨函数注释✨行间注释✨代码解释✨单元测试生成✨代码优化✨技术问答 5.使用体验结语 1.Baidu Comate智能编码助手简介 ✨Baidu Comat…

ASP.NET MVC企业级程序设计 (入住退房,删除)

目录 效果图 实现过程 控制器代码 DAL BLL Index 效果图 实现过程 控制器代码 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc;namespace MvcApplication1.Controllers {public class HomeController …

python环境下labelImg图片标注工具的使用

labelimg GitHub地址 python环境下labelImg图片标注工具的使用 1. 写在开头2. 如何使用2.1安装2.2 启动2.2.1 先启动后设置标注的目录2.2.2 指定标注的目录和预设置的标签 2.3 设置自动保存和显示类别。2.4 保存文件类型2.5 [快捷键](https://github.com/HumanSignal/labelImg…