项目四 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 •OpenStack的oslo.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.tpcf.cn/diannao/35418.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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(…

怎样利用 MATLAB 进行实时系统的建模与仿真?

要利用MATLAB进行实时系统的建模与仿真&#xff0c;您可以按照以下步骤进行操作&#xff1a; 确定系统的建模方法&#xff1a;根据实际情况&#xff0c;选择适合的建模方法&#xff0c;如&#xff1a;微分方程、状态空间模型、传递函数模型等。 编写系统模型的MATLAB代码&…

小迪安全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…

Java中线程的状态转换有什么(生命周期)

在Java中&#xff0c;线程的生命周期由六种主要状态构成&#xff0c;每种状态都有其特定的转换条件。以下是Java线程的生命周期状态及其转换条件&#xff1a; 线程状态 新建&#xff08;NEW&#xff09;&#xff1a; 线程对象已经创建&#xff0c;但尚未调用start()方法。 Thr…

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;本文将介绍…

驻马店建筑工程设计资质变更操作要点

150资质变更操作要点&#xff1a; 3806变更原因&#xff1a;若因企业重组、合并、分立、跨省变更等原因导致企业名称、法定代表人、注册地址、经济性质、注册资本、经营范围等发生变动&#xff0c;应及时申请资质变更。 1686 变更申请&#xff1a;提交资质变更申请书及…

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

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

Makefile中eval函数的用法

Makefile中eval函数的用法 一&#xff0c;eval函数的使用方法&#xff1a;二&#xff0c;eval函数的优势 一&#xff0c;eval函数的使用方法&#xff1a; 在Makefile中&#xff0c;eval 函数的作用是用来动态地执行Makefile中的命令或赋值操作。它的基本语法如下&#xff1a; …

Spring MVC数据绑定和响应——简单数据绑定(三)POJO绑定

一、POJO数据绑定的使用场景 在使用简单数据类型绑定时&#xff0c;可以很容易的根据具体需求来定义方法中的形参类型和个数&#xff0c;然而在实际应用中&#xff0c;客户端请求可能会传递多个不同类型的参数数据&#xff0c;如果还使用简单数据类型进行绑定&#xff0c;那么就…

adb shell执行定时2小时命令

在Android设备上使用adb shell来执行一个定时2小时后运行的命令并不直接支持&#xff0c;因为adb shell是即时执行shell命令的工具&#xff0c;不支持内置的定时任务功能。但是&#xff0c;你可以通过几种方法来实现类似的功能&#xff1a; 方法一&#xff1a;使用sleep命令 …

dbeaver数据库链接工具

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

css动画自定义动画间隔时间

function playAnimation(element) {var animationName rubberBand;var duration 2000; // 动画持续时间&#xff0c;单位为毫秒element.style.animation ${animationName} 1s ease;element.addEventListener(animationend, function() {// 动画结束后重置样式&#xff0c;以…

服务运营 | 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…