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

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

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

相关文章

短视频最佳时长:成都柏煜文化传媒有限公司

探索时间与内容之间的完美平衡 成都柏煜文化传媒有限公司 在数字媒体日益繁荣的今天&#xff0c;短视频已成为人们获取信息、娱乐休闲的重要形式。然而&#xff0c;关于短视频的最佳时长&#xff0c;一直是一个备受争议的话题。本文将探讨短视频时长的各种考量因素&#xff0…

MySQL报错Duplicate entry ‘0‘ for key ‘PRIMARY‘

报错现场 现象解释 因为你在插入时没有给 Customer.Id 赋值&#xff0c;MySQL 会倾向于赋值为 NULL。但是主键不能为 NULL&#xff0c;所以 MySQL 帮了你一个忙&#xff0c;将值转换为 0。这样&#xff0c;在第二次插入时就会出现冲突&#xff08;如果已经有一条记录为 0&…

微服务——服务治理

目录 1 什么是服务治理&#xff1f;2 为什么需要服务治理&#xff1f;3 服务治理的关键点3.1 服务注册与发现3.2 负载均衡3.3 容错与熔断3.4 服务监控与告警3.5 服务配置管理 4 示例说明5 总结 1 什么是服务治理&#xff1f; 简单来说&#xff0c;服务治理就是对微服务架构中的…

iptables(11)target(SNAT、DNAT、MASQUERADE、REDIRECT)

简介 前面我们已经介绍了ACCEPT、DROP、REJECT、LOG,这篇文章我们介绍SNAT、DNAT、MASQUERADE、REDIRECT,这几个参数的定义我们在上篇文章中都有介绍,我这里再列出回顾一下 DNAT(目标地址转换)和 SNAT(源地址转换) 原理:修改数据包的源或目标 IP 地址。通常用于 NAT(…

小迪安全v2023笔记 1-18

小迪安全v2023笔记 1-18 棱角社区 文章目录 1. 基础入门1. 正向shell与反向shell2. web应用3. 抓包&#xff0c;封包&#xff0c;协议&#xff0c;app&#xff0c;小程序&#xff0c;pc应用&#xff0c;web应用 2. 信息打点1. 常见信息获取2. 文件泄露3. 常见阻碍4. CDN绕过&a…

Stable Diffusion——SDXL 1.0原理解析

1. SDXL 1.0 简介 SDXL 1.0是Stability AI推出的新基础模型&#xff0c;作为Stable Diffusion的大幅改进版本&#xff0c;它是一个用于文本到图像合成的潜在扩散模型&#xff08;LDM&#xff09;。作为Stable Diffusion的最新进化&#xff0c;它正在超越其前身&#xff0c;并与…

录制视频怎么操作?手把手教会你!

在这个互联网科技高速发展的时代&#xff0c;录制视频已经成为了人们生活中一个不可或缺的技能。无论是记录游戏精彩瞬间、制作教程、分享生活趣事&#xff0c;还是进行在线教学&#xff0c;录制视频都是一种非常直观有效的方式。可是录制视频怎么操作呢&#xff1f;本文将介绍…

算法学习笔记——单双链表及其反转—堆栈诠释

单双链表及其反转——堆栈诠释 按值传递 int、long、byte、short、char、float、double、boolean和String 都是按值传递 概念&#xff1a;在方法被调用时&#xff0c;实参通过形参把它的内容副本传入方法内部&#xff0c;此时形参接收到的内容是实参值的一个拷贝&#xff0c;…

dbeaver数据库链接工具

1、下载dbeaver 一个绿色版一个安装版&#xff0c;官网开源版 2、安装 3、可以导入之前navicat的链接 导入 选择navicat 反编译密码的&#xff1a;https://tool.lu/coderunner navicat 版本15的密码解密&#xff1a;https://www.iatodo.com/navicatpw

服务运营 | MS文章精选:线上点单,当真免排队?餐饮零售与医疗场景中的全渠道运营

编者按&#xff1a; 小A走进了一家奶茶店&#xff0c;准备向店员点单&#xff0c;但却在屏幕上看到还有98杯奶茶待制作&#xff08;因为线上订单突然暴增&#xff09;。因此&#xff0c;小A不满地嘟囔着离开了奶茶店。这个例子展示了线上渠道可能会对线下渠道造成一些负面影响…

使用AES,前端加密,后端解密,spring工具类了

学习python的时候&#xff0c;看到很多会对参数进行加密&#xff0c;于是好奇心驱使下&#xff0c;让我去了解了下AES加密如何在java中实现。 首先 npm install crypto-js 然后在你的方法中&#xff0c;给你们前端源码看看&#xff0c;因为我用的ruoyi框架做的实验&#xff…

四川音盛佳云电子商务有限公司抖音电商的先行者

在当今数字时代&#xff0c;电商行业风起云涌&#xff0c;各大平台竞相争夺市场份额。而在这其中&#xff0c;四川音盛佳云电子商务有限公司以其独特的抖音电商服务模式&#xff0c;悄然崛起&#xff0c;成为了行业中的一股不可忽视的力量。今天&#xff0c;就让我们一起走进音…

【GD32F303红枫派使用手册】第二十六节 EXMC-液晶驱动实验

26.1 实验内容 通过本实验主要学习以下内容&#xff1a; LCD显示原理 EXMC NOR/SRAM模式时序和8080并口时序 LCD显示控制 26.2 实验原理 使用MCU的EXMC外设实现8080并口时序&#xff0c;和TFT-LCD控制器进行通信&#xff0c;控制LCD显示图片、字符、色块等。 26.2.1 TFT…

图像超分辨率重建

一、什么是图像超分辨 图像超分辨是一种技术&#xff0c;旨在通过硬件或软件的方法提高原有图像的分辨率。这一过程涉及从一系列低分辨率的图像中获取一幅高分辨率的图像&#xff0c;实现了时间分辨率向空间分辨率的转换。超分辨率重建的核心思想是利用多帧图像序列的时间带宽来…

计算机毕业设计Thinkphp/Laravel学生考勤管理系统zyoqy

管理员登录学生考勤管理系统后&#xff0c;可以对首页、个人中心、公告信息管理、年级管理、专业管理、班级管理、学生管理、教师管理、课程信息管理、学生选课管理、课程签到管理、请假申请管理、销假申请管理等功能进行相应操作&#xff0c;如图5-2所示。学生登录进入学生考勤…

【Spine学习16】之 人物面部绑定

1、创建头部骨骼 一根头骨 以头骨为父结点创建一个面部控制器face-holder 2、创建头发和face面部控制结点的变换约束 左右头发的约束指向为face结点 3、设定后发的变换约束&#xff0c;约束指向为face结点&#xff0c;反方向移动 设置参数为-100 同理&#xff0c;耳朵也依…

【Python时序预测系列】基于CNN+Bi-LSTM实现单变量时间序列预测(案例+源码)

这是我的第309篇原创文章。 一、引言 基于CNN&#xff08;卷积神经网络&#xff09;和Bi-LSTM&#xff08;双向长短期记忆网络&#xff09;的单变量时间序列预测是一种结合空间特征提取和时间依赖建模的方法。以下是一个基于Python和TensorFlow/Keras实现的示例&#xff0c;展…

YOLOv8改进 | 主干网络| 可变形卷积网络C2f_DCN【CVPR2017】

&#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 专栏目录&#xff1a;《YOLOv8改进有效涨点》专栏介绍 & 专栏目录 | 目前已有40篇内容&#xff0c;内含各种Head检测头、损失函数Loss、B…

SiLM585x系列SiLM5851NHCG-DG一款具有分离的管脚输出 单通道隔离驱动器 拥有强劲的驱动能力

SiLM585x系列SiLM5851NHCG-DG是一款单通道隔离驱动器&#xff0c;具有分离的管脚输出&#xff0c;提供3.0A源电流和6.0A灌电流。主动保护功能包括退饱和过流检测、UVLO、隔离故障报警和 2.5A 米勒钳位。输入侧电源的工作电压为3V至5.5V&#xff0c;输出侧电源的工作电压范围为1…

小柴冲刺嵌入式系统设计师系列总目录

工作两年 逐渐意识到基础知识的重要性✌️ 意识到掌握了这个证书好像就已经掌握了80%工作中用到的知识了。剩下的就在工作的实战中学习 来和小柴一起冲刺软考吧&#xff01;加油&#x1f61c; 【小柴冲刺软考中级嵌入式系统设计师系列】总目录 前言 专栏目标&#xff1a;冲刺…