keystone学习小结

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.mfbz.cn/a/604171.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

景源畅信:想要做抖音电商有哪些适合的发展渠道?

在数字浪潮的推动下,抖音电商如同一股不可阻挡的潮流,正吸引着无数创业者和品牌的目光。如何在这一领域获得成功,选择合适的发展渠道成为关键。接下来,让我们深入探讨这一话题,揭开抖音电商成功之路的秘密。 一、内容创…

C# Web控件与数据感应之 TreeView 类

目录 关于 TreeView 一些区别 准备数据源 范例运行环境 一些实用方法 获取数据进行呈现 ​根据ID设置节点 获取所有结点的索引 小结 关于 TreeView 数据感应也即数据捆绑,是一种动态的,Web控件与数据源之间的交互,本文将继续介绍与…

Idea + maven 搭建 SSH (struts2 +hibernate5 + spring5) 环境

org.apache.struts struts2-core 2.3.35 org.apache.struts struts2-spring-plugin 2.3.35 org.apache.struts struts2-json-plugin 2.3.8 1.4 配置Java EE 坐标依赖 这里可以引入 servlet api,jstl 标签库等一系列工具 javax.servlet javax.servlet-api …

c语言实现贪吃蛇小游戏————附全代码!!!

目录 1.Win32 API 1.1控制台应用程序 1.2控制台的名称,控制台窗口大小 1.3设置控制台光标位置 COORD - 光标坐标 GetStdHandle - 获取句柄 SetConsoleCursorPosition - 设置光标位置 封装一个设置光标的函数 1.4设置控制台光标的属性 CONSOLE_CURSOR_INFO …

【第13章】spring-mvc之validator

文章目录 前言一、准备1. 引入库2. add.jsp3. show.jsp 二、代码部分1.实体类2. 控制器类3. 效果4. 展示 总结 前言 【第20章】spring-validator 虽然前面已经在spring介绍过,但是为了保证代码可用,还是会从头讲到尾,尽量把关键点列出来讲给…

微服务架构中的挑战及应对方式:Outbox 模式

使用 Outbox 模式保持微服务数据一致性 在一个由许多小型服务组成的系统中保持数据一致性是困难的,因为它们分散在各处。以下是一些常见问题以及如何处理它们的方法:当服务发送消息时,同时更新数据库和发送消息是棘手的问题。 在微服务中发出…

【Qt 开发基础体系】Qt信号与槽机制

文章目录 1.Qt 信号与槽机制原理(Signal & Slot)2. QObject 类 connect 的介绍3. 信号与槽机制连接方式4. 信号和槽机制优势及其效率:3. 信号与槽机制应用 1.Qt 信号与槽机制原理(Signal & Slot) &#x1f42…

通过AOP实现项目中业务服务降级功能

最近项目中需要增强系统的可靠性,比如某远程服务宕机或者网络抖动引起服务不可用,需要从本地或者其它地方获取业务数据,保证业务的连续稳定性等等。这里简单记录下业务实现,主要我们项目中调用远程接口失败时,需要从本…

《武林秘籍》——闪侠惠递如何让消费者寄快递更安心!

现如今,网上下单寄快递的便利性让众多人享受到了电商物流飞速发展带来的红利性。今天小编直接介绍一款寄快递特别省钱的利器,就是利用闪侠惠递来寄快递。闪侠惠递寄快递,真正的实现了便宜寄快递发物流的便捷性,开创了低价发快递的…

【汇总】虚拟机网络不通(Xshell无法连接虚拟机)排查方法

搜索关键字关键字关键字:虚拟机虚拟机虚拟机连接失败、虚拟机无法连接、Xshell连接失败、ping baidu.com失败、静态IP设置 Kali、CentOS、远程连接 描述:物理机无法连接虚拟机;虚拟机无法访问百度,虚拟机无法访问baidu.com 虚拟机…

Logstash分析MySQL慢查询日志实践

删除匹配到的行,当前行信息不记录到message中

可视化面板布局适配屏幕-基于 flexible.js + rem 智能大屏适配

可视化面板布局适配屏幕-基于 flexible.js rem 智能大屏适配 VScode 安装cssrem插件引入flexible.js在之后的开发都使用rem为单位,安装cssrem插件就是为了快捷将px转为rem我们的设计稿是1920px,设置最小宽度为1024px,最后,我们可…

JavaScript异步编程——05-回调函数

我们在前面的文章《JavaScript 基础:异步编程/单线程和异步》中讲过,Javascript 是⼀⻔单线程语⾔。早期我们解决异步场景时,⼤部分情况都是通过回调函数来进⾏。 (如果你还不了解单线程和异步的概念,可以先去回顾上一…

SlowFast报错:ValueError: too many values to unpack (expected 4)

SlowFast报错:ValueError: too many values to unpack (expected 4) 报错细节 File "/home/user/yuanjinmin/SlowFast/tools/visualization.py", line 81, in run_visualizationfor inputs, labels, _, meta in tqdm.tqdm(vis_loader): ValueError: too …

流星烛台如何交易?Anzo Capital昂首资本3步盈利收场

各位投资者通过之前的文章可以准确的辨认出什么是流星烛台了,但是各位投资者一旦遇到流星图案知道怎么交易吗?其实一点都不困难,只要掌握住流星图案的交易真棒,Anzo Capital昂首资本3步就可以盈利收场。 首先,投资者需要确定图…

文件下载出现 IOExpcetion: closed

异常原因截图 : 异常代码位置 : 出现的原因是 使用 try-with-resources, downloadFile 方法执行完毕, 文件流被关闭了...导致前面读取文件字节, 异常提示已经关闭... try (Response response OkHttpUtils.getInstance().client.newCall(new Request.Builder().url(fileUrl)…

Yolov8实现loopy视频识别

1、前言 loopy是一个非常可爱的动漫角色(可爱粉色淀粉肠),闲来无事,打算用yolov8训练一个模型对loopy进行识别。 2、准备工作 先在网络上搜寻很多loopy的图片,然后将图片导入Lablel Studio软件进行标注,并…

第1章.STM32单片机入门知识介绍

目录 0. 《STM32单片机自学教程》专栏 1.1 嵌入式系统简介 1.1.1 什么是嵌入式系统 1.1.2 嵌入式系统的特点 1.1.3 嵌入式系统的应用领域 1.2 单片机基本概念 1.3 ARM简介 1.3.1 ARM公司简介 1.3.2 ARM处理器简介 1.4 STM32简介 1.4.1 基于Cortex内核的MCU 1.4.…

springMVC入门学习

目录 1、 什么是springmvc 2、springmvc工作流程 3、 springmvc快速入门(XML版本) 4、加载自定义目录下的springmvc.xml配置文件 5、 解析器InternalResourceViewResolver 6、 映射器BeanNameUrlHandlerMapping 7、 适配器SimpleControllerHandle…

【算法-程序的灵魂#谭浩强配套】(适合专升本、考研)

无偿分享学习资料,需要的小伙伴评论区或私信dd。。。 无偿分享学习资料,需要的小伙伴评论区或私信dd。。。 无偿分享学习资料,需要的小伙伴评论区或私信dd。。。 完整资料如下: 1.一个程序主要包括以下两方面信息:程…
最新文章