项目四 OpenStack身份管理

任务一  理解身份服务

1.1 Keystone的基本概念

认证 Authentication —— 确认用户身份的过程 ,又称身份验证
凭证 Credentials —— 称凭据,是用于 确认用户身份的数据
令牌 Token —— 访问 OpenStack API 和各种资源需要提供的一种 特殊的文本字符串。
用户 User —— 使用OpenStack云服务的个人、系统或服务的账户名称。
项目 Project —— 分配 和隔离资源或身份对象的一个容器,也是一个权限组织形式 。域 Domain —— 项目 和用户的集合,目的是为身份实体定义管理界限
Group —— 表示 域所拥有的用户集合的容器。
角色 Role —— 用于定义用户权利和权限的集合。
端点 Endpoint —— OpenStack 组件能够访问的网络地址,通常是一个 URL
服务 Service —— 提供 一个或多个端点,供用户通过这些端点访问资源和执行操作。
分区 Region —— OpenStack 部署的通用分区

1.2 •Keystone的主要功能

身份 认证( Authentication —— 令牌的发放和校验。
用户 授权( Authorization —— 授予用户在一个服务中所拥有的权限。
用户 管理( Account —— 管理用户账户。
服务 目录( Service Catalog —— 为每个OpenStack服务对外提供一个可用的服务目录和相应的API端点。

1.3  •Keystone的管理层次结构

1.4 •Keystone的认证流程

1.5•查看当前的Identity API版本

1.6 •通过API请求认证令牌

Keystone 默认支持的认证方法包括 external password token oauth1 mapped application_credential
password token 分别表示 密码认证和令牌认证 ,是常用的两种认证方法。
密码认证要求验证两条信息:资源( Resource )信息和身份( Identity
资源 由作用域( Scope )来确定,指定用户要访问的资源(域或项目)
作用域 决定获取令牌的有效 范围。对于 用户、域和项目来说,作用域常常是指实体的所属 域。

1.7 •通过API请求认证令牌

密码认证方式通过 API 获取令牌
Ø 请求 一个 admin 项目作用域的令牌。

[root@node-a ~]# curl -i   -H "Content-Type: application/json"   -d '

{ "auth": {

    "identity": {          #指定身份

      "methods": ["password"],

      "password": {      #密码认证

        "user": {

          "name": "admin",

          "domain": { "id": "default" },

          "password": "ABC123456"

        }

      }

    },

    "scope": {                     #指定作用域

      "project": {                  #作用域的项目

        "name": "admin",

        "domain": { "id": "default" }

      }

    }

  }

}'   "http://localhost:5000/v3/auth/tokens" ;

令牌认证方式请求另一个认证令牌

(1)导出环境变量OS_TOKEN,将其值设置为上述操作获取的令牌ID

[root@node-a ~]# export OS_TOKEN="gAAAAABfUY7KPLJNvQqZp……64_R_a0IqxYw"

(2)令牌认证方式请求一个认证令牌。

[root@node-a ~]# curl -i \

  -H "Content-Type: application/json" \

  -d '

{ "auth": {

    "identity": {

      "methods": ["token"],            #令牌认证

      "token": {

        "id": "'$OS_TOKEN'"

      }

    }

  }

}' \

  "http://localhost:5000/v3/auth/tokens"

1.8 •使用认证令牌通过API进行身份管理操作

获取认证令牌后 ,根据 该令牌的权限进行身份管理操作
获取 域列表。

curl -s \

  -H "X-Auth-Token: $OS_TOKEN" \

  "http://localhost:5000/v3/domains" | python -mjson.tool

获取 项目列表。

curl -s \

 -H "X-Auth-Token: $OS_TOKEN" \

 "http://localhost:5000/v3/projects" | python -mjson.tool

创建 一个用户。

curl -s \

 -H "X-Auth-Token: $OS_TOKEN" \

 -H "Content-Type: application/json" \

 -d '{"user": {"name": "newuser", "password": "changeme"}}' \

 "http://localhost:5000/v3/users" | python -mjson.tool

任务二  管理项目、用户和角色

2.1 •进一步了解项目、用户和角色

一个用户必须至少属于一个项目,也可以属于多个项目。
•至少添加一个项目,再添加用户。
在删除用户账户之前,必须从该用户的主项目中删除该用户账户。
OpenStack 中可以针对项目(而不是用户)设置配额

2.2 •进一步了解项目、用户和角色

将用户分配给多个项目,需要定义一个角色
通常将角色 分配给“用户 项目”对 某个项目的指定用户分配角色
•Keystone使用基于角色的访问控制来保护其API。
admin 角色具有最高权限
拥有 reader 角色的系统用户可以列出所部署的所有 项目。
拥有 reader 角色的某个域用户只能查看该域范围的项目
member 角色更适合于其他服务
创建 的所有角色都必须映射到每一个 Openstack 服务特定的 policy.json 配置文件中,默认的策略会将大多数服务的管理权限授予 admin 角色

2.3 •命令行的身份管理用法

openstack 命令的身份管理基本用法。

1项目管理

Ø 列出 所有项目的 ID 和名称,包括禁用的项目。

openstack project list

Ø 查看项目详细 信息。

openstack project show 项目名称或ID

Ø 创建一个项目的 命令。

openstack project create --description 项目描述信息 项目名称 --domain 域名

Ø 修改 项目 名称。

openstack project set 项目名称或ID --name 新的项目名称

Ø 临时禁用某 项目。

openstack project set 项目名称或ID --disable

Ø 激活已禁用 项目。

openstack project set 项目名称或ID --enable

Ø 删除 项目。

                             openstack project delete 项目名称或ID

2)用户管理

Ø 列出用户 列表。

openstack user list

Ø 创建 用户。

openstack user create --project 项目 --password 密码 用户名

Ø 改变 用户账户的名称和邮件 地址。

openstack user set 用户名或ID --name 新的用户名 --email 邮件地址

Ø 临时禁用用户账户(不能登录 )。

openstack user set 用户名或ID --disable

Ø 激活已禁用用户 账户。

openstack user set 用户名或ID --enable

Ø 删除 用户。

openstack user delete 用户名或ID

3)角色管理

Ø 列出 可用的角色。

openstack role list

Ø 创建一个新的 角色。

openstack role create 角色名

Ø 查看角色详细 信息。

openstack role show 角色名或ID

Ø 角色分配给“用户 项目” 对。

openstack role add --user  用户名或ID  --project  项目名或ID  角色名或ID

Ø 查看某项目某用户的角色分配 情况。

openstack role assignment list --user 用户名  --project 项目名 --names

Ø 删除分配给“用户 项目”对的 角色。

openstack role remove --user 用户名或ID --project 用户名或ID  角色名或ID

2.3 •专用的服务用户

其他 OpenStack 服务要通过 Keystone 进行集中统一认证,必须进行注册,即在 Keystone 中创建相应的项目、用户和角色并进行关联,然后创建服务目录
Keystone 的服务目录是每个服务的可访问端点列表
所有 OpenStack 服务共用一个项目(通常命名为“ service” 或“ services” ),所用的角色都是 admin ,而服务之间的通信也要使用 admin 角色。

2.4 •使用命令行进行身份管理操作

1)加载demo用户的客户端环境脚本。

[root@node-a ~]# source keystonerc_demo

2)查看当前的项目列表,该用户可以访问两个项目。

[root@node-a ~(keystone_demo)]# openstack project list

3)查看用户列表,可以发现demo用户没有被授权此项操作。

[root@node-a ~(keystone_demo)]# openstack user list

4)加载admin用户的客户端环境脚本。

[root@node-a ~(keystone_demo)]# source keystonerc_admin

5)查看当前的项目列表,云管理员可以查看所有的项目。

[root@node-a ~(keystone_admin)]# openstack project list

6)查看云平台上所有的角色分配。

[root@node-a ~(keystone_admin)]# openstack role assignment list --name

7)进一步筛选出系统管理员的角色分配。

[root@node-a ~(keystone_admin)]# openstack role assignment list --names --system all

任务三  通过oslo.policy库实现权限管理

3.1 •OpenStackoslo.policy

OpenStack oslo.policy 库用于实现基于角色的权限访问控制 RBAC .
使用 策略控制某一个用户权限,规定用户能执行什么操作,不能执行什么操作
一个 API 调用某个 OpenStack 服务时,该服务的策略引擎使用合适的策略定义来决定是否接受该调用

3.2 •policy.json文件的语法

条策略采用一行语句 定义。

"目标" : "规则"

策略中的目标,又称操作( Action ),表示需要执行的 操作。
策略中的规则决定 API 调用在哪些情况或条件下可用,即是否被允许
规则
Ø 总是允许,可以使用空字符串("")、中括号([])或"@"来表示。
Ø总是拒绝,只能使用感叹号("!")来表示。
Ø 特定 的检查结果。
Ø 个值的比较。
Ø 基于 简单规则的逻辑表达式。
特定的检查 结果
Ø 角色 : 角色名称 —— 测试 API 凭证是否包括该角色。
Ø 规则 : 规则名称 —— 别名定义。
Ø http : 目标 URL—— 将检查委托给远程服务器,远程服务器返回 True 则被 授权。
个值的比较采用以下语法格式。

"1: 2"

策略定义可以 采用别名,别名是复杂或难懂的规则的一个名称

"别名名称" : "<别名定义>"

policy.json 文件的内容使用符号 {} 括起来,其中的多条策略之间由逗号分隔。

{

       "别名1" : "定义1",

       "别名2" : "定义2",

       ...

       "目标1" : "规则1",

       "目标2" : "规则2",

       ....

                             }

3.3 •编写简单的policy.json策略

允许 任何实体列出虚拟机实例的策略。

"compute:get_all" : ""

使用 感叹号表示拒绝。以下这条策略表示不能搁置实例。

"compute:shelve": "!"

规定 只有云管理员才能在 Identity (身份管理)数据库中创建新用户。

"identity:create_user" : "role:admin"

编排 服务定义一个名为“ heat_stack_user 的角色,属于该角色的用户都不被允许创建堆栈。

"stacks:create": "not role:heat_stack_user"

只有实例的所有者能够启动 策略

"os_compute_api:servers:start" : "project_id:%(project_id)s"

3.4 •解读policy.json策略

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

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

相关文章

SpringMVC系列三: Postman(接口测试工具)

接口测试工具 &#x1f49e;Postman(接口测试工具)Postman介绍Postman是什么Postman相关资源Postman安装Postman快速入门Postman完成Controller层测试其它说明 &#x1f49e;课后作业 上一讲, 我们学习的是SpringMVC系列二: 请求方式介绍 现在打开springmvc项目 &#x1f49e…

三电平光伏逆变器高效DPWM研究

1. 引言 本文从效率 提升角度出发 , 详细分析了逆变器不同调制策略下开关 器件及滤波器损耗分布情况 , 并在 50kW 组串式三电平光伏逆变器上对比分析采用 SVPWM 和 DPWM 两种 调制方法对逆变器效率和谐波的影响 , 最终验证了采用 DPWM 调制策略的优越性。 2 SVPWM 和 DPWM 对比…

浙江工商大学24计算机考研数据,好几个专业都接收调剂,计专复试线284分!

浙江工商大学&#xff08;Zhejiang Gongshang University&#xff09;&#xff0c;简称“浙商大”&#xff08;ZJSU&#xff09;&#xff0c;坐落于浙江省杭州市&#xff0c;是中华人民共和国教育部、中华人民共和国商务部和浙江省人民政府共建的浙江省重点建设高校&#xff0c…

解决:Xshell通过SSH协议连接Ubuntu服务器报“服务器发送了一个意外的数据包,received:3,expected:20”

下图所示&#xff1a; 日志也基本看不出来问题在哪&#xff0c;只是说断开了连接大概是验证失败。有幸在某论坛评论区找到了原因&#xff0c;是因为我的xshell版本太低了而服务器的ssh版本太高&#xff0c;高版本的ssh默认屏蔽了一部分不太安全的算法导致建立连接的时候验证失败…

“论软件架构风格”必过范文,软考高级,系统架构设计师论文

论文真题 软件体系结构风格是描述某一特定应用领域中系统组织方式的惯用模式。体系结构风格定义一个系统家族,即一个体系结构定义一个词汇表和一纽约束。词汇表中包含一些构件和连接件类型,而这组约束指出系统是如何将这些构件和连接件组合起来的。体系结构风格反应了领域中…

全国青少年人工智能创新挑战赛考试系统果然卡壳了

本比赛的官网地址是&#xff1a;http://aiic.china61.org.cn/niWXB 昨天考的全国青少年人工智能创新挑战赛的图形化编程卡的没有答题区&#xff0c;有的是空白&#xff0c;有的是组卷&#xff0c;大家先熟悉题目&#xff0c;构思怎么编程&#xff0c;两道编程题5050分值&#…

1.Triangle

一、你好&#xff0c;三角形 在OpenGL中&#xff0c;任何事物都在3D空间中&#xff0c;而屏幕和窗口却是2D像素数组&#xff0c;这导致OpenGL的大部分工作都是关于把3D坐标转变为适应你屏幕的2D像素。 3D坐标转为2D坐标的处理过程是由OpenGL的图形渲染管线&#xff08;Graphi…

Hallo技术:革新电影、游戏与虚拟现实中的动态肖像动画

在数字娱乐的浪潮中&#xff0c;逼真的动态肖像动画成为了电影制作、游戏开发和虚拟现实等领域不可或缺的一部分。复旦大学研发的Hallo技术&#xff0c;以其独特的扩散模型和分层音频驱动视觉合成模块&#xff0c;为这一领域带来了革命性的突破。 技术概览 Hallo技术是一种基…

【UML用户指南】-20-对基本行为建模-交互图

目录 1、概述 2、顺序图 2.1、两个不同于通信图的特征&#xff1a; 2.1.1、顺序图有对象生命线 2.1.2、顺序图有控制焦点 2.2、结构化控制 2.2.1、可选执行opt 2.2.2、条件执行alt 2.2.3、并行执行par 2.2.4、循环迭代执行loop 2.3、嵌套活动图 3、通信图 3.1、两…

Redis进阶 - 朝生暮死之Redis过期策略

概述 Redis 是一种常用的内存数据库&#xff0c;其所有的数据结构都可以设置过期时间&#xff0c;时间一到&#xff0c;就会自动删除。你可以想象 Redis 内部有一个死神&#xff0c;时刻盯着所有设置了过期时间的 key&#xff0c;寿命一到就会立即收割。 你还可以进一步站在死神…

关于笔记本电脑连接电源时触摸板失灵、卡顿、乱飘的问题

目录 前言 问题原因 解决方法 前言 我查阅了相关的资料和方法如下&#xff08;很感谢这位楼主大佬提供的问题所在&#xff09;&#xff1a; 问题原因 解决方法 那么解决方法无非就是几种&#xff08;方法仅供参考&#xff0c;不排除一些危险性&#xff09;&#xff1a; 1…

扫码称重上位机

目录 一 设计原型 二 后台代码 一 设计原型 模拟工具: 二 后台代码 主程序&#xff1a; using System.IO.Ports; using System.Net; using System.Net.Sockets; using System.Text;namespace 扫码称重上位机 {public partial class Form1 : Form{public Form1(){Initialize…

测试辅助工具(抓包工具)的使用1 之初识抓包工具(fiddler)

1.什么是抓包&#xff1f; 说明&#xff1a;客户端向服务器发送请求以及服务器响应客户端的请求,都是以数据包来传递的。 抓包&#xff08;packet capture&#xff09;&#xff1a;通过工具拦截客户端与服务器交互的数据包。 抓包后可以修改数据包的内容 2.为什么要抓包&…

【鸿蒙 HarmonyOS】尺寸设置:size/layoutWeight/constraintSize

一、背景 常见尺寸&#xff1a;width&#xff08;宽度&#xff09;、height&#xff08;高度&#xff09;、padding&#xff08;内边距&#xff09;、margin&#xff08;外边距&#xff09; 主要整理下size&#xff08;设置高宽尺寸&#xff09;、layoutWeight&#xff08;对…

C#事件详解及应用示例

简介 事件是使类具备向其它类通知发生的相关事情的能力。事件被分成两部分&#xff1a;一、引发或发送事件的类&#xff08;称发布者&#xff09;&#xff1b;二、处理或接收事件的类&#xff08;称订阅者&#xff09;。事件也是类型的成员。在 .NET 的桌面应用程序中&#xff…

梯度提升决策树(GBDT)的训练过程

以下通过案例&#xff08;根据行为习惯预测年龄&#xff09;帮助我们深入理解梯度提升决策树&#xff08;GBDT&#xff09;的训练过程 假设训练集有4个人&#xff08;A、B、C、D&#xff09;&#xff0c;他们的年龄分别是14、16、24、26。其中A、B分别是高一和高三学生&#x…

[SAP ABAP] 运算符

1.算数运算符 算术运算符描述加法-减法*乘法/除法MOD取余 示例1 输出结果: 输出结果: 2.比较运算符 比较运算符描述示例 等于 A B A EQ B <> 不等于 A <> B A NE B >大于 A > B A GT B <小于 A < B A LT B >大于或等于 A > B A GE B <小…

LLM功能应用的测试艺术:策略与实践

在人工智能技术日新月异的今天,大规模语言模型(LLMs)凭借其强大的自然语言处理能力,正逐渐成为众多应用和服务的核心驱动力。从智能客服到创作辅助,从信息检索到个性化推荐,LLMs的广泛应用对测试策略提出了全新的挑战。本文旨在探讨针对拥有LLM功能的应用或软件,如何制定…

Paxos分布式共识算法

Paxos分布式共识算法 一、简介 Paxos算法是由莱斯利兰伯特(Leslie Lamport)于1990年提出的一种基于消息传递且具有高度容错特性的一致性算法。它主要用于解决分布式系统中如何就某个值达成一致&#xff0c;并保证整个系统的一致性&#xff0c;即使在部分节点发生故障的情况下…

java干货,spring声明式事务

文章目录 一、编程式事务1.1 什么是编程式事务1.2 编程式事务的优缺点 二、声明式事务2.1 什么是声明式事务2.2 声明式事务的优点2.3 Spring 事务管理器2.4 spring 声明式事务使用 一、编程式事务 1.1 什么是编程式事务 编程式事务是指通过手动编写程序来管理事务&#xff0c…