OpenStack-9-用户,项目和角色的关系

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenStack-9-用户,项目和角色的关系相关的知识,希望对你有一定的参考价值。

参考技术A 域可以创建多个
项目project可以创建多个
用户也可有多个
角色只有2种,分为管理员admin和用户user

①先创建角色

②创建项目

可以在项目里调整配额,配额限制的是创建的实例数

创建项目时候可以配置项目成员

③创建用户
也可在创建用户的时候选定已创建的项目

普通用户登录无法看到管理员栏目,也无法进行相关权限配置

admin角色:所有项目管理员

user角色:单个项目的用户

只用管理员才能看到所有实例。

管理员可以设定flavor方案

非关系型数据库设计混乱

【中文标题】非关系型数据库设计混乱【英文标题】:Non-relational database design confusion 【发布时间】:2020-01-28 14:05:17 【问题描述】:

我正在学习 MongoDB,并试图了解不使用关系数据库模式的概念。

对于我的应用程序,我希望能够添加新用户和项目并按角色将用户分配给项目,例如“经理”、“开发人员”等。用户应该能够查看有关他们拥有角色的项目的详细信息。检索有关项目的详细信息应包括在该项目中也具有角色的用户列表。

假设我通过 POST 添加一个新用户到/users。我可以通过 POST 向/projects 添加一个新项目。

然后我想给用户一个项目中的角色。我可以使用角色(包括角色名称和项目 ID)对 /users/id 执行 PUT,但随后通过 GET /projects/id 检索项目的详细信息不会包括该项目中具有角色的用户列表。

我本可以将角色发布到 /project/id(包括角色名称和用户 ID),但是 GET /users/id 不会包含他们的角色,我可能想在他们的角色上显示用户参与的角色登陆页面。

要创建一个新角色,我真的必须将其 PUT 到 /users/id,然后使用角色和用户再 PUT 到 /projects/id

上述可以在关系数据库中通过简单地创建一个角色表来实现,该表可能包括角色名称、用户 ID 和项目 ID。然后我可以执行连接并访问我需要的任何信息。

我在这里遗漏了什么吗?任何提示或有用的参考资料将不胜感激。

【问题讨论】:

什么是您的 1 个明确的具体研究问题,即第一个坚持什么目标? 【参考方案1】:

恐怕您在使用关系型数据库时遇到了 NOSQL 数据库的巨大缺点。答案是忘记你所知道的关于规范化的一切,将数据复制到这两个地方,然后让它们都保持最新。

我知道这与您在 SQL 数据库中学到的所有内容背道而驰,但这是一种权衡。 Rob Volk 在这里写了一篇很好的文章https://robvolk.com/nosql-design-patterns-for-relational-data-9c2c11ae3b4a

起初这可能看起来很糟糕,但实际上是有道理的,因为您基本上所做的是以增加写入时间和额外内存为代价来减少读取时间。现在内存很便宜,你要写的用户权限比你要读的要少得多。

【讨论】:

【参考方案2】:

你是对的。 NOSql 数据库有一个概念,如果您沿着“表”重复相同的数据,这不是问题,因为重复的信息有一个哈希码,它将识别一个数据,当您想要更新它时将使用它。

【讨论】:

以上是关于OpenStack-9-用户,项目和角色的关系的主要内容,如果未能解决你的问题,请参考以下文章

非关系型数据库设计混乱

Django项目中的实现rbac功能

MongoDB Mongoose Schema 嵌套文档结构和关系

049医疗项目-模块五:权限设置

项目后台管理之权限管理(RBAC)

BOS项目 第7天(shiro权限框架进行认证和授权)