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.mzph.cn/news/833991.shtml

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

相关文章

爬虫:爬取豆瓣电影

文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 前言 上篇我们将到如何利用xpath的规则,那么这一次,我们将通过案例来告诉读者如何使用Xpath来定位到我们需要的数据,就算你不懂H5代码是怎么个嵌套或者十分复…

C++新特性-线程

主要内容 thread、condition、mutexatomicfunction、bind使用新特性实现线程池(支持可变参数列表)异常协程其他 1 C11多线程thread 重点: join和detach的使用场景thread构造函数参数绑定c函数绑定类函数线程封装基础类互斥锁mutexconditi…

计算机组成原理网课笔记

无符号整数的表示与运算 带符号整数的表示与运算 原反补码的特性对比 移码

搜狗输入法 PC端 v14.4.0.9307 去广告绿化版.

软件介绍 搜狗拼音输入法作为众多用户计算机配置的必备工具,其功能的全面性已为众所周知,并且以其高效便捷的输入体验受到广大使用者的青睐。然而,该软件在提供便利的同时,其内置的广告元素常常为用户带来一定的干扰。为此&#…

Linux中动态库的用法及优缺点?怎样制作动态库和静态库?

一、什么是gcc gcc的全称是GNU Compiler Collection,它是一个能够编译多种语言的编译器。最开始gcc是作为C语言的编译器(GNU C Compiler),现在除了c语言,还支持C、java、Pascal等语言。gcc支持多种硬件平台. 在 Linux…

航空电子ARINC818采集卡

ARINC818采集卡是针对航空电子数字视频总线协议(Avionics Digital Video BUS,ADVB)的高性能PCIe视频光纤采集测试设备。ARINC818协议主要应用于机载设备间的实时高清图像传输,目前已经成功应用于多款民用、军用机型当中&#xff0…

渐进淡出背景个人导航页源码(火影版)

渐进淡出背景个人导航页源码&#xff08;火影版&#xff09; 效果图部分源码领取源码下期更新预报 效果图 部分源码 <!DOCTYPE html> <html> <head> <!--小K网 www.xkwo.com --><meta charset"UTF-8"><title>火影版个人主页<…

每日一博 - 闲聊架构设计中的多级缓存设计

文章目录 方法论概述客户端缓存应用层缓存服务层缓存缓存设计的注意事项总结 思维导图戳这里 方法论概述 从客户端到服务层&#xff0c;缓存的应用广泛而重要。通过合理的缓存设计&#xff0c;能够有效地提高系统的性能并降低延迟。 客户端缓存 在客户端层面&#xff0c;浏览…

多模态融合技术现实世界中的挑战与研究进展

在人工智能的诸多领域中&#xff0c;多模态融合技术正逐渐成为连接不同信息源的桥梁。这种技术通过整合来自视觉、听觉、文本等多种模态的数据&#xff0c;旨在提供更为丰富和精确的预测结果。然而&#xff0c;现实世界的数据往往是不完美和不完整的&#xff0c;这给多模态融合…

[微信小程序] 入门笔记1-滚动视图组件

[微信小程序] 入门笔记1-滚动视图组件 1.页面&组件&渲染 在小程序是由一个个页面page组成, 而页面又是由一个个组件component组成.和网页类似,这里的组件指的就是输入框<input>,按钮<button>,文本<text>,图片<image>等元素.如果你学过网页一…

Linux基础之git与调试工具gdb

目录 一、git的简单介绍和使用方法 1.1 git的介绍 1.2 git的使用方法 1.2.1 三板斧之git add 1.2.2 三板斧之git commit 1.2.3 三板斧之git push 二、gdb的介绍和一些基本使用方法 2.1 背景介绍 2.2 基本的使用方法 一、git的简单介绍和使用方法 1.1 git的介绍 Git是一…

Shell 编程规范与变量

目录 一.Shell 1.shell 的概念 2.Linux 中有哪些 Shell &#xff1f; 二.Shell 脚本概述 1.Shell 脚本的概念 2.shell 脚本应用场景 3.shell 脚本的作用 三.Shell脚本的构成与执行 1.Shell脚本的构成 2.Shell脚本的执行 四.重定向与管道操作 1.交互式硬件设备 2.重…

论文分享[cvpr2018]Non-local Neural Networks非局部神经网络

论文 https://arxiv.org/abs/1711.07971 代码https://github.com/facebookresearch/video-nonlocal-net 非局部神经网络 motivation:受计算机视觉中经典的非局部均值方法[4]的启发&#xff0c;非局部操作将位置的响应计算为所有位置的特征的加权和。 非局部均值方法 NLM&#…

男士内裤什么牌子的好?男士内裤五大排名品牌推荐

夏天快到了&#xff0c;你是不是在为内裤不够舒适透气、质量不好而困扰呢&#xff1f;现在市面上的男士内裤品牌众多&#xff0c;而且还有各种材质的分类&#xff0c;让大家一时也不知道该选什么好。 那么最近我也是特别购置了近期热门的几个男士内裤品牌进行测评&#xff0c;今…

(十六)Servlet教程——Servlet文件下载

Servlet文件下载 文件下载是将服务器上的资源下载到本地&#xff0c;可以通过两种方式来下载服务器上的资源。第一种是使用超链接来下载&#xff0c;第二种是通过代码来下载。 超链接下载 在HTML或者JSP页面中使用超链接时&#xff0c;可以实现页面之间的跳转&#xff0c;但是…

RK3568 学习笔记 : Linux emmc 内核启动 rootfs 根文件系统无法正常挂载问题的分析

问题描述 平台 &#xff1a; NanoPi-R5C 开发板 RK3568 平台。 手动编译的 Linux 内核&#xff0c;结果发现大概率 emmc 无法正常初始化&#xff0c;导致 rootfs 根文件系统无法正常挂载 Linux 内核版本&#xff1a; 6.1 Linux 内核代码位置&#xff1a; https://github.com…

第2章 WebServer进阶

2.1 使用多线程处理多用户请求 2.1.1 多线程Socket通信 在上一章的案例中&#xff0c;服务端显然只能处理一次浏览器请求&#xff0c;请求一次浏览器端就结束程序。如何解决这个问题呢&#xff1f;可以采用多线程Socket通信技术&#xff0c;解决多用户并发请求。 在多线程Sock…

从谚语:“一手交钱,一手交货来”谈谈什么是数据库事务

事务与交易 一手交钱&#xff0c;一手交货 一手交钱&#xff0c;一手交货&#xff0c;谚语&#xff0c;意思是指钱和货当场相交&#xff0c;互不拖欠。出自明朝施耐庵《水浒传》第二一回。 Transaction 意思 我们先来看一下来自于剑桥英-英词典的解释&#xff1a; transac…

Flask-HTTP请求、响应、上下文、进阶实验

本节主要目录如下&#xff1a; 一、请求响应循环 二、HTTP请求 2.1、请求报文 2.2、Request对象 2.3、在Flask中处理请求 2.4、请求钩子 三、HTTP响应 3.1、响应报文 3.2、在Flask中生成响应 3.3、响应格式 3.4、Cookie 3.5、session&#xff1a;安全的Cookie 四、…

企业车辆管理系统参考论文(论文 + 源码)

【免费】关于企业车辆管理系统.zip资源-CSDN文库https://download.csdn.net/download/JW_559/89282550 企业车辆管理系统 摘 要 随着经济的日益增长,车辆作为最重要的交通工具,在企事业单位中得以普及,单位的车辆数目已经远远不止简单的几辆,与此同时就产生了车辆资源的合理…