keystone学习小结2

news2024/9/24 11:31:59

简介

通过源码 官方文档 进行学习

官方文档

架构

identity

提供user和group的鉴权及数据

可以用这些数据处理增删改查的请求

这些服务在某些情况也可以托管在授权的服务中,有认证任务时,授权的服务会执行认证的任务,而不会把这些转发到identity再去认证

user

表示一个独立的api消费者,user必须在domain下

group

是user的container,group也必须在domain下

resource

resource服务提供project和domain数据

project

openstack所有resource必须由一个project托管,project在domain下

domain

domain是一个高层次的container,包括了user,group,project,role

domain间的资源可以通过assignment进行访问

assignment

role

user可基于role访问,即权限给role,再把role给user,user访问权限是他有的role里的所有权限

role assignment

由三元组构成:role,resource(project或domain),identity(user或group)

token

当user或group认证后,用token管理

catalog

提供endpoint注册和discover

Policy

实际部署环境中大量行为是否需要被允许,可以基于行为的用户是否被授权

用户被允许时,可以有这几种情况:1用户是admin 2用户在被授权的user列表里

keystone的policy部分逻辑由oslo.policy实现

rule

如enforce时,会检查信息在credential里是否有无,若有则pass 若无则enforce失败

一般来说,给user加一个role,常会加到user的metadata中

capability rbac(还没实现)

即基于action进行的鉴权

Authentication

keystone有多种插件支持,password是一种常用的,进行鉴权时,需要提供鉴权的resource和identity。比如对用户鉴权,需要用户名id,project id,用户密码。如果想通过用户名而不是用户id鉴权,可以添加domain信息(因为user名在domain下唯一存在),而userid在domain之间,整个部署环境中都是独一无二的

基础知识

identity相关概念

authentication

确认用户的identity。对于新的请求,keystone会进行大量useri id的鉴权

当鉴权通过时,初次认证用户需要用户名和密码,认证通过后,keysstone会给一个authenticattion| cde

credentials

确认用户身份的东西,比如username, userid,pwd或token

domain

是一个identity service v3实例。domain可以表示个人,公司,或一块地方等。

endpoint

一个网络可访问的地址,通常是个url。通过endpoint你可以访问一个service,

token

一个alpha字母组成的字符串,token可以在任意时间被废除,token在一定时间范围内有效,token可以使action有权进行其操作

user

user需要先login,然后拿着分配的token去执行操作。user可以被分配给project

用户管理

identity服务可以给user分配一个project和一个role

user在不同的project,可以拥有不同的role

每个服务配置目录下默认有个policy.yaml,可通过这个控制用户是否可进行某些动作

服务管理

包含wsgi后台 apache进程

初始identity

在keystone可以使用之前,需要拥有一些基础数据,比如第一个用户,endpoint等,这个过程叫bootstrapping identity

bootstrap可以通过命令实现keystone-manage bootstrap --bootstrap-password 123 --bootstrap-username test --bootstrap-project-name admin --bootstrap-role-name admin...

管理project user role

project也叫tenant或account,user可以是project的成员

role的分配

openstack role add --user username --project project_name role_name

检验role分配结果:

openstack role assignment list --project project_name --user user_name --names

implied role

创建role也可以继承现有的role出发,类似类的继承,可通过命令实现

openstack implied role create role_name --implied-role implied-role-name

查看implied role

openstack implied role list

创建并管理服务和服务用户

服务catalog

注册到keystone catalog的openstack服务可被keystone discover,服务catalog可通过静态模板文件或动态数据库表进行管理

当你的服务catalog不会随时间而改动很多时可以考虑使用静态模板catalog

动态数据库表的配置

服务用户

每个服务都有一个服务的用户

当不希望通过identity服务鉴权用户,而是其他service自己鉴权时,需要为每个service创建一个service user,user需要有管理员权限。然后为所有service创一个project,为每一个service创个user,给每个user-project对分配一个管理员role,这个管理员role可以让各个服务自己判断发送到各自服务的请求

创建服务用户

创建project openstack project create test_project --domain default

创建user openstack user create user-name -password xxx

给service user分配管理员role openstack role add --project project_name --user user_name

配置服务token

服务之间也存在大量相互的行为,如用户请求创镜像,galnce等镜像创完,请求才到存储服务,如果镜像太大,可能导致请求到存储时,token过期。当glance发出请求,可以带上服务自己的token,叫服务token

当服务收到其他服务的请求时,会校验请求的token是否能匹配到合适的service user。这个可以在各服务配置文件的[keystone_authtoken] section配置

当service token有效时,即使用户的token 过期,该请求也有效

service_token_roles是可以使token生效的role列表,可以设置为service user的role名

service_token_roles_required也设置为true

keystone配置

源码

api通信流程

创建告警

aodh alarm create -> # 命令创建告警

aodhclient -> # client解析+拼接参数

keystoneauth1 -> # 请求发送前调v3/auth/token生成token,放到请求header中X-Auth-Token

aodh-api -> # 将带有X-Auth-Token的创建告警请求发到aodh-api处理请求

keystonemiddleware -> # 校验token

aodh-api # 返回结果

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

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

相关文章

SuperMap GIS基础产品FAQ集锦(20240715)

一、SuperMap iDesktopX 问题1:想问一下,线数据更改粗细和颜色,他只能保存到地图中吗?我希望能修改源数据,但是保存不了? 11.1.1 【问题原因】简单数据集不支持保存风格。 【解决办法】入需保存风格&…

SAP中途增加批次管理提示:库存在工厂级别已经存在。

SAP中途增加批次管理提示:库存在工厂级别已经存在。 在这种情况,将需要启用批次管理功能的物料主数据进行出库,通过移动类型201(562)进行出库,然后再修改物料主数据,当成功启用物料主数据的批次…

前置-Linux相关知识速记

linux Linux命令大全 [!IMPORTANT] chown-chmod-ls-chgrp-cdpwd-mkdir-rmdir-cp-rm-mv-cat-tac-nl-more-less-head-tail 应用领域 通常服务器使用 LAMP(Linux Apache MySQL PHP)或 LNMP(Linux Nginx MySQL PHP)组合。 目前…

700.二叉搜索树的搜索

给定二叉搜索树(BST)的根节点 root 和一个整数值 val。 你需要在 BST 中找到节点值等于 val 的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 null 。 示例 1: 输入:root [4,2,7,1,3], val 2 输出:[2,1,3]…

SmartX 超融合 vs vSAN 8:数据库场景下的性能对比

此前,我们以 vSAN 7 为例,对比了 SmartX 与 VMware 超融合在快照、缓存、I/O 路径上的技术差异,及其带来的性能影响。不同于 vSAN 7,vSAN 8 引入了快速存储架构 ESA(Express Storage Architecture)&#xf…

SpringCloud------Seata(分布式事务)

分布式事务产生原因 CAP定理(一致性、可用性、分区容错性) BASE理论 解决思想 Seata 三个角色

【操作系统】线程池的底层逻辑解析及实现

目录 线程池一、线程池是什么二、底层线程池 ThreadPoolExecutor三、实现线程池四、标准库中的线程池Executors 线程池 一、线程池是什么 在我们频繁的创建线程时或销毁线程时,都会进行系统调度从而占用系统资源,虽然创建线程/销毁线程的开销不是很大,但架不住量多,进而我们该…

photoshop学习笔记——选区

选区工具快捷键:M shift M 切换 矩形/椭圆选区工具 基本用法 选区框选出的地方被激活(其后进行的操作,仅在选区中生效) 选区工具选择后(以矩形选区为例) 按下鼠标左键拖动,画出一块矩形区…

TCP连接与释放

目录 引言 一. TCP连接的建立 二.TCP连接的释放 三.TCP连接状态机 引言 传输控制协议(Transmission Control Protocol,TCP)作为互联网上最广泛使用的协议之一,其在网络通信中扮演着关键角色。其中,TCP连接的建立与释放是TCP协议中最为重要的部分之一。本文将对TCP连接的建立…

【笔记:3D航路规划算法】一、RRT

目录 关键概念3D路径规划算法1. A*算法2. RRT1. 初始化:2. 实例化搜索算法:3. 路径生成:4. 绘制图像: 3D路径规划是在三维空间中寻找从起点到终点的最短或最优路径的一种技术。它广泛应用于无人机导航、机器人运动规划、虚拟现实等…

谷粒商城实战笔记-48~49-商品服务-API-三级分类-查询-树形展示三级分类数据-前端优化

文章目录 一,48-商品服务-API-三级分类-查询-树形展示三级分类数据1,创建商品服务命名空间2,商品服务增加配置3,网关增加商品服务的路由配置4,前端树形展示5,测试 二,49-商品服务-API-三级分类-…

未来的智能交通系统:智能合约在交通管理中的应用前景

随着城市化进程的加快和交通问题日益突出,智能交通系统成为了解决城市交通拥堵和安全问题的重要手段。本文将探讨智能合约在未来智能交通系统中的应用前景,分析其在交通管理中的潜力和优势。 什么是智能交通系统? 智能交通系统利用先进的信息…

数据结构经典测题3

1. 设有定义: char *p; ,以下选项中不能正确将字符串赋值给字符型指针 p 的语句是【多选】( ) A: pgetchar(); B: scanf("%s",p); C: char s[]"china"; ps; D: *p"china"; 答案为ABD A选项&…

汇昌联信数字做拼多多运营实力好吗?

汇昌联信数字在拼多多运营方面的实力如何?汇昌联信数字作为一家专注于电子商务运营服务的公司,其在拼多多平台的运营能力是值得关注的。根据市场反馈和客户评价,汇昌联信数字在拼多多的运营实力表现良好,能够为客户提供专业的店铺管理、产品…

学习大数据DAY23 Linux基本指令4与ngnix安装以及Shell,python编写环境配置

目录 其他扩展类 echo 输出字符串 date 显示当前日期 (用于日期转字符串) date -d 日期解析(用于字符串转日期) date 设置日期 linux 网络对时 cal 查看日历 wget 命令 seq 命令 Linux 定时执行计划 特殊符号说明 linux 添加硬盘分区挂载 上…

PotatoTool 蓝队版 V1.3 发布:增强功能和性能优化

一、简介 经过广大网友的反馈和建议,我们对V1.1版本中存在的问题进行了优化。其中,我们针对MD5库进行了本地化处理,以提高查询效率。然而,这也导致了软件体积的飙升。二、优化概述 1、兼容性 兼容arm架构系统 2、UI 2.1 界面…

Meta革命性发布:Llama 3.1——性能最强的AI开源模型,开启智能新时代!

前言 🚀 Meta隆重推出Llama 3.1:迄今为止性能最强的AI模型 Meta公司近日发布了他们最新的AI语言模型——Llama 3.1,这一消息迅速在科技界掀起了波澜。作为猫头虎技术团队,我们将为大家详细解析Llama 3.1的强大功能及其应用前景。…

unity文字||图片模糊

一.文字模糊 1、增大字体大小后等比缩放 快捷键R 2、更改字体渲染模式 二.图片模糊 1、更改过滤模式 2、更改格式或者压缩 3、如果只是图片边缘看不清,可以增加canvas/图片的每单位参考像素

C++学习笔记01-语法基础(问题-解答自查版)

前言 以下问题以Q&A形式记录,基本上都是笔者在初学一轮后,掌握不牢或者频繁忘记的点 Q&A的形式有助于学习过程中时刻关注自己的输入与输出关系,也适合做查漏补缺和复盘。 本文对读者可以用作自查,答案在后面&#xff0…

AV1技术学习:Quantization

量化是对变换系数进行,并将量化索引熵编码。AV1的量化参数 QP 的取值范围是0 ~ 255。 一、Quantization Step Size 在给定的 QP 下,DC 系数的量化步长小于 AC 系数的量化步长。DC 系数和 AC 系数从 QP 到量化步长的映射如下图所示。当 QP 为 0 时&…