当前位置: 首页 > news >正文

项目四 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策略

相关文章:

项目四 OpenStack身份管理

任务一 理解身份服务 1.1 •Keystone的基本概念 • 认证 &#xff08; Authentication &#xff09; —— 确认 用户身份的过程&#xff0c;又称身份验证 。 • 凭证 &#xff08; Credentials &#xff09; —— 又 称凭据&#xff0c;是用于确认用户身份的数据 。 • 令牌 …...

【后端】websocket学习笔记

文章目录 1. 消息推送常见方式1.1 轮询 VS 长轮询1.2 SSE&#xff08;server-sent event)服务器发送事件 2. websocket介绍2.1 介绍2.2 原理2.3 websoket API2.3.1 客户端【浏览器】API2.3.2 服务端API 3. 代码实现3.1 流程分析3.2 pom依赖3.3 配置类3.4 消息格式3.5 消息类 4.…...

DataWhale - 吃瓜教程学习笔记(一)

学习视频&#xff1a;第1章-绪论_哔哩哔哩_bilibili 西瓜书对应章节&#xff1a; 第一章 & 第二章 文章目录 机器学习三观What&#xff1a;什么是机器学习&#xff1f;Why: 为什么要学机器学习&#xff1f;1. 机器学习理论研究2. 机器学习系统开发3. 机器学习算法迁移 &…...

Attention Is All You Need论文地址

论文地址 点击即可...

如何优雅的一键下载OpenHarmony活跃分支代码?请关注【itopen: ohos_download】

itopen组织&#xff1a;1、提供OpenHarmony优雅实用的小工具2、手把手适配riscv qemu linux的三方库移植3、未来计划riscv qemu ohos的三方库移植 小程序开发4、一切拥抱开源&#xff0c;拥抱国产化 一、概述 为方便大家每次下载OpenHarmony不同分支/tag代码&#xff0c…...

torch.topk用法

torch.topk用法 介绍使用示例 介绍 官网介绍&#xff1a;https://pytorch.org/docs/stable/generated/torch.topk.html 在指定维度选取k个最大&#xff08;最小&#xff09;的值。 使用示例 values torch.tensor([[2, 1, 3], [1, 2, 3]]) # values # tensor([[2, 1, 3], #…...

终极版本的Typora上传到博客园和csdn

激活插件 下载网址是这个&#xff1a; https://codeload.github.com/obgnail/typora_plugin/zip/refs/tags/1.9.4 解压之后这样的&#xff1a; 解压之后将plugin&#xff0c;复制到自己的安装目录下的resources 点击安装即可&#xff1a; 更改配置文件 "dependencies&q…...

洛谷:P5707【深基2.例12】上学迟到

1. 题目链接 https://www.luogu.com.cn/problem/P5707 【深基2.例12】上学迟到 2. 题目描述 学校和y的家距离s米&#xff0c;s以v的速度去学校&#xff0c;8点之前到&#xff0c;y出门前要打扫10分钟卫生&#xff0c;求s最晚的出门时间 输入&#xff1a;两个正整数路程s&…...

数据治理:数据提取过程中的合规性与安全性

数据治理&#xff1a;数据提取过程中的合规性与安全性 随着数字化时代的到来&#xff0c;数据已经成为企业运营和决策的核心驱动力。然而&#xff0c;在数据提取的过程中&#xff0c;确保数据的合规性和安全性成为了企业面临的重要挑战。数据治理作为一种系统的方法&#xff0…...

24计算机应届生的活路是什么

不够大胆❗ 很多小伙伴在找工作时觉得自己没有竞争力&#xff0c;很没有自信&#xff0c;以至于很害怕找工作面试&#xff0c;被人否定的感觉很不好受。 其实很多工作并没有想象中的高大上&#xff0c;不要害怕&#xff0c;计算机就业的方向是真的广&#xff0c;不要走窄了&…...

HTML页面布局-使用div示例

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title> </head> <body><!--text-align:center 文字水平居中line-height&#xff1a;200px; 文字垂直居中,行高设置跟高…...

怎么把webp文件转换为jpg?快来试试这四种转换方法!

怎么把webp文件转换为jpg&#xff1f;Webp是一种不常见的图片格式&#xff0c;这种格式在使用过程中有很多缺点&#xff0c;首先它的浏览器兼容性不是很强&#xff0c;这就代表大家无法随意进行网络传输&#xff0c;可能需要准备特定的操作才能进行&#xff0c;然后编辑webp的工…...

计算机网络(7) 错误检测

一.校验和 使用补码计算校验和是一种常见的错误检测方法&#xff0c;应用于网络协议如IP和TCP。补码是二进制数的一种表示方法&#xff0c;可以有效地处理符号位和进位。下面是如何利用补码计算校验和的详细步骤和算数例子。 ### 计算步骤 1. **将数据分块**&#xff1a;将数…...

实体类status属性使用枚举类型的步骤

1. 问题引出 当实体类的状态属性为Integer类型时&#xff0c;容易写错 2. 初步修改 把状态属性强制为某个类型&#xff0c;并且自定义一些可供选择的常量。 public class LessonStatus {public static final LessonStatus NOT_LEARNED new LessonStatus(0,"未学习"…...

pytorch基础【4】梯度计算、链式法则、梯度清零

文章目录 梯度计算计算图&#xff08;Computational Graph&#xff09;梯度求导&#xff08;Gradient Computation&#xff09;函数与概念 示例代码更多细节梯度求导的过程梯度求导的基本步骤示例代码注意事项总结 链式法则是什么&#xff1f;链式法则的数学定义链式法则在深度…...

mapreduce综合应用案例 — 招聘数据清洗

MapReduce是一个编程模型和处理大数据集的框架&#xff0c;它由Google开发并广泛使用于分布式计算环境中。MapReduce模型包含两个主要的函数&#xff1a;Map和Reduce。Map函数用于处理输入的键值对生成中间键值对&#xff0c;Reduce函数则用于合并Map函数输出的具有相同键的中间…...

发力采销,京东的“用户关系学”

作者 | 曾响铃 文 | 响铃说 40多岁打扮精致的城市女性&#xff0c;在西藏那曲的偏远农村&#xff0c;坐着藏民的摩托车&#xff0c;行驶在悬崖边的烂泥路上&#xff0c;只因为受顾客的“委托”&#xff0c;要寻找最原生态的藏区某款产品。 30多岁的憨厚中年男性&#xff0c;…...

期望23K,go高级社招面试复盘

面经哥只做互联网社招面试经历分享&#xff0c;关注我&#xff0c;每日推送精选面经&#xff0c;面试前&#xff0c;先找面经哥 我最终还是上岸了&#xff0c;花了一周总结了3万字的go社招高级面试知识体系思维导图&#xff0c;分享出来希望能帮助有缘人吧&#xff0c;以下只是…...

电感(线圈)具有哪些基本特性

首先&#xff0c;电感&#xff08;线圈&#xff09;具有以下基本特性&#xff0c;称之为“电感的感性电抗” ?①直流基本上直接流过。 ?②对于交流&#xff0c;起到类似电阻的作用。 ?③频率越高越难通过。 下面是表示电感的频率和阻抗特性的示意图。 在理想电感器中&#…...

tkinter实现一个GUI界面-快速入手

目录 一个简单界面输出效果其他功能插入进度条文本框内容输入和删除标签内容显示和删除 一个简单界面 含插入文本、文本框、按钮、按钮调用函数 # -*- coding: UTF-8 -*-import tkinter as tk from tkinter import END from tkinter import filedialog from tkinter impor…...

Top10在线音频剪辑软件,你了解几款?(免费分享)

多年来&#xff0c;随着音乐制作人和音频工程师的需求不断增长&#xff0c;音频剪辑软件领域经历了巨大的发展。最新的音频剪辑软件提供了从基本录制到最终发布所需的一切功能。其中一些软件专为播客设计&#xff0c;一些软件是免费的&#xff0c;并且一些软件提供了出色的音效…...

mysql报错:You can‘t specify target table ‘Person‘ for update in FROM clause

背景 在做leetcode里数据库的196题删除重复数据时&#xff0c;我参考评论区大佬的方法先用group by找到每个分组里的最小的id的那条记录&#xff0c;然后删掉原表中id不在其中的记录&#xff0c;然后就报了如题所示的错误。 我的写法如下&#xff1a; DELETE FROMPerson WHER…...

Python sorted()方法

sorted() 是Python中的一个内置函数&#xff0c;用于对可迭代对象进行排序。它返回一个新的已排序的列表&#xff0c;而不会修改原始的可迭代对象。sorted() 函数的基本语法如下&#xff1a; sorted(iterable, keyNone, reverseFalse)参数解释&#xff1a; iterable&#xff…...

云上宝库:三大厂商对象存储安全性及差异性比较

前言 看了几家云厂商的对象存储&#xff0c;使用上有相似也有差异&#xff0c;聊聊阿里云、腾讯云、京东云三家对象存储在使用中存在的风险以及防护措施。 0x01 云存储命名 阿里云对象存储OSS(Object Storage Service)&#xff0c;新用户免费试用三个月&#xff0c;存储包容…...

【计算机网络体系结构】计算机网络体系结构实验-www实验

二、www实验 1. 添加网站 2. 浏览器打开...

Windows下MySQL数据库定期备份SQL文件与删除历史备份文件.bat脚本

目录 一、功能需求 二、解决方案 (1)新建文件夹及批处理文件 (2)编写备份脚本 ①完整脚本 ②参数修改 (3)编写定期删除备份脚本 ①根据文件名识别日期进行删除 ② 根据文件的修改日期删除 (4)设置定时器 (5)常见报错与处理 一、功能需求 在Windows系统下…...

electron基础使用

安装以及运行 当前node版本18&#xff0c;按照官网提供操作&#xff0c;npm init进行初始化操作&#xff0c;将index.js修改为main.js&#xff0c;执行npm install --save-dev electron。&#xff08;这里我挂梯子下载成功了。&#xff09;&#xff0c;添加如下代码至package.…...

9.华为交换机telnet远程管理配置aaa认证

目的&#xff1a;telnet远程管理设备 LSW1配置 [Huawei]int Vlanif 1 [Huawei-Vlanif1]ip add 1.1.1.1 24 [Huawei-Vlanif1]q [Huawei]user-interface vty 0 4 [Huawei-ui-vty0-4]authentication-mode aaa [Huawei-ui-vty0-4]q [Huawei]aaa [Huawei-aaa]local-user admin pass…...

xcode报错合集,你都遇到过哪些跳不过的坑

1.报错Consecutive declarations on a line must be separated by ; 其实我这里是用因为创建了一个结构体&#xff0c;然后在没有使用State的情况下&#xff0c;修改它的属性了 当然加上State依然报错&#xff1a; 应该在UI事件中修改&#xff1a;...

六面体大米装袋机长期稳定运行原因分析

随着现代化农业生产的发展&#xff0c;六面体大米装袋机已成为粮食加工行业不可或缺的重要设备。然而&#xff0c;如何确保这些机器长期稳定运行&#xff0c;提高生产效率&#xff0c;降低维护成本&#xff0c;一直是广大粮食加工企业关注的焦点。星派将为您揭示六面体大米装袋…...

wordpress阅读量修改/深圳市社会组织总会

对称加密 在之前的章节中&#xff0c;我们知道了 Alice 和 Bob 为了保证他们之间消息的私密性&#xff0c;他们对消息进行了加密。并且&#xff0c;我们还注意到一点&#xff0c;就是 Alice 和 Bob 之间的加解密采用了相同的密匙。我们统称这种加密和解密采用相同密匙的方式为 …...

手机版网站开发的功能点/中国十大关键词

首先启动需要访问的Linux发行版&#xff0c;然后打开资源管理器&#xff0c;在地址栏输入\\wsl$&#xff0c;回车即可看见各Linux发行版挂载在本地网络的目录&#xff08;要先启动对应的Linux发行版才能看见&#xff09;。 双击想要访问的发行版即可查看该发行版虚拟磁盘的文件…...

网站建设丂金手指科杰/哪里有免费的网站推广

简单的说&#xff0c;Silverlight是一个跨平台跨操作系统的插件&#xff0c;使Web开发者能够在浏览器中建造丰富的媒体体验和RIA应用。目前发布的版本为 RC版&#xff0c;可用于Windows平台上的IE和Firefox浏览器&#xff0c;以及Mac OS X平台上的Firefox和Safari浏览器。 在公…...

flash 可以做网站吗/万网官网域名查询

数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时&#xff0c;在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据&#xff0c;破坏数据库的一致性。 加锁是实现数据库并发控制的一个非常重要的技术。当事务…...

互联网做网站属于什么行业/广州网站优化费用

软件程序软件工程&#xff0c;以前只知道程序数据结构算法&#xff0c;而软件呢则是很多程序组成起来的再加上一些软件开发过程的方法步骤组成的。其中包括需求分析&#xff0c;一个软件的需求是什么&#xff0c;然后进行开发阶段&#xff0c;然后还要进行不断的改进&#xff0…...

wordpress生成推广链接/学网络运营在哪里学比较好

在项目上使用到了滚动条插件&#xff0c;但是使用var & layui.$&#xff0c;会影响到插件。 错误提示&#xff1a; Uncaught TypeError: $(...).perfectScrollbar is not a function 转载于:https://www.cnblogs.com/ybixian/p/9209302.html...