当前位置: 首页 > 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…...

SciencePlots——绘制论文中的图片

文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了&#xff1a;一行…...

macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用

文章目录 问题现象问题原因解决办法 问题现象 macOS启动台&#xff08;Launchpad&#xff09;多出来了&#xff1a;Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显&#xff0c;都是Google家的办公全家桶。这些应用并不是通过独立安装的…...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表&#xff0c;若其中包含环&#xff0c;则输出环的入口节点。 若其中不包含环&#xff0c;则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

Nginx server_name 配置说明

Nginx 是一个高性能的反向代理和负载均衡服务器&#xff0c;其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机&#xff08;Virtual Host&#xff09;。 1. 简介 Nginx 使用 server_name 指令来确定…...

高危文件识别的常用算法:原理、应用与企业场景

高危文件识别的常用算法&#xff1a;原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件&#xff0c;如包含恶意代码、敏感数据或欺诈内容的文档&#xff0c;在企业协同办公环境中&#xff08;如Teams、Google Workspace&#xff09;尤为重要。结合大模型技术&…...

ElasticSearch搜索引擎之倒排索引及其底层算法

文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具&#xff0c;可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板&#xff0c;允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板&#xff0c;并通…...

Reasoning over Uncertain Text by Generative Large Language Models

https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...

JVM 内存结构 详解

内存结构 运行时数据区&#xff1a; Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器&#xff1a; ​ 线程私有&#xff0c;程序控制流的指示器&#xff0c;分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 ​ 每个线程都有一个程序计数…...

基于IDIG-GAN的小样本电机轴承故障诊断

目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) ​梯度归一化(Gradient Normalization)​​ (2) ​判别器梯度间隙正则化(Discriminator Gradient Gap Regularization)​​ (3) ​自注意力机制(Self-Attention)​​ 3. 完整损失函数 二…...