keystone OpenStack中端点,区域等之间的关系

时间:2013-09-25 12:08:27

标签: openstack keystone

我真的想要了解关键点,关于端点,区域,租户,服务,用户和角色之间的关系。 我试图找到相关文件,但遗憾的是,失败了。

有人可以提供任何指示或解释吗?

4 个答案:

答案 0 :(得分:35)

Keystone是OpenStack的身份管理服务。

基本上,它的作用是向用户授予令牌,无论是人员,服务还是其他任何东西。

如果您在OpenStack中的任何位置进行API查询,那么如果允许您进行API查询,则会发现keystone的API。

让我们从地面开始工作。

用户。今天Keystone的用户通常都是人。目前还没有足够的细粒度ACL支持来真正地将OpenStack中的许多用户称为传统意义上的“服务”帐户。但是有一个服务帐户用作Keystone API的回程连接,作为OpenStack基础架构本身的一部分。我们将避免钻研那个异常的用户。

当用户对Keystone进行身份验证时(你点击了OS_AUTH_URL与keystone ...通常是keystone api框的5000端口),用户说“我是用户X,我有密码Y,我属于租户Z“。

X可以是用户名或用户ID(用户的唯一uuid) Y是密码,但您也可以使用令牌进行身份验证。 Z是租户名称或租户ID(租户的唯一uuid)。在过去的Keystone API中,您不需要指定租户名称,但如果您没有将令牌用于租户,则您的令牌将不会非常有用,因此您将被拒绝任何ACL租户。

所以...用户是一个相当明显的事情。密码是一个相当明显的事情。但是什么是租客?

一个租户也被称为项目。事实上,一直有人试图让这个名字成为租户或项目,但由于无法坚持一个术语,他们都意味着同样的事情。就API而言,项目是租户。因此,如果您登录地平线,您将看到项目的下拉列表。每个项目对应一个租户ID。您的令牌也与特定的租户ID相关联。因此,如果您打算处理用户所连接的多个租户,则可能需要为用户提供多个令牌。

现在,假设您将用户添加到管理员的租户ID。该用户是否获得管理员权限?答案是不。这就是角色发挥作用的地方。虽然管理员租户中的用户可以访问管理虚拟机和用于启动虚拟机的配额,但用户将无法执行查询用户列表的keystone等操作。但是,如果您向该用户添加管理员角色,他们将被赋予ACL权限,以充当keystone API和其他API中的管理员。因此,将租户视为一种资源组,将角色视为ACL集。

区域更像是在openstack基础架构环境中对物理资源进行地理分组的方式。假设您有两个分段数据中心。你可以在openstack环境的区域A和区域B中的另一个区域中放置一个。区域的有用性正在迅速发展,特别是在最近的openstack版本中引入了单元和域。除非您打算构建大型云,否则您可能不需要掌握这些知识。

keystone提供了最后一个有用的东西。目录。 keystone目录有点像openstack API的电话簿。无论何时使用命令行客户端,比如可以调用nova list列出实例,nova首先对keystone进行身份验证并获取使用API​​的令牌,但它也会立即向keystone目录请求API端点列表。对于keystone,cinder,nova,glance,swift等等,nova实际上只会使用nova-api端点,但根据您的查询,您可以使用keystone管理API端点....我们将回到那个。但基本上,目录是API在世界上的典型信息来源。这样,您只需要告诉客户端keystone的公共API端点在哪里,并且可以从目录中找出其余部分。

现在,我已经参考了公共API和keystone的管理API。

是的keystone有两个API ......有点像。它在端口5000上运行API,在32000范围内运行另一个API。 5000是公共港口。您可以在此处查找目录,并请求令牌,以便与其他API进行通信。它非常简单,有点硬化。管理API将用于更改用户密码或向用户添加新角色等事项。

挺直接的?

答案 1 :(得分:4)

迟到的回复,但我希望它能帮助未来的读者。

端点就像您使用服务的联系点。 adminurl,因为名称仅适用于管理员用户。内部网址用于各种服务,如果他们必须与对方交谈,并且公共网址供其他人使用。

为什么需要单独的公共和内部网址解释here

您不必为服务端点分配角色。您可以为访问该服务的用户分配角色,this就是这样做的。

答案 2 :(得分:3)

This是我了解openstack keystone中的租户,用户,角色和权限的方式。你也可能觉得它很有趣。

答案 3 :(得分:3)

我会尝试用外行的语言。

服务 - Openstack需要大量服务才能实现云基础架构(计算,存储和网络)。为了使它们能够顺利地进行细粒度控制,Openstack使用了服务的概念。服务使最终用户能够操纵这3个核心资源中的一个。例如:对于存储,使用cinder和swift服务。这些服务还可以配置为在后端使用Ceph或gluster。

端点 - 您进入的地点'使用openstack服务来做有用或破坏性的事情。服务可能正在运行,但为了进入,需要一个端点,它看起来像http://my-fancy-IP:hard-to-remember-port-number/v3.0。那么,在Openstack系统中是否为特定的openstack服务创建了端点?无法访问该服务。

地区 - 与地理位置或位置无关。用于划分/分组完整openstack部署的术语,如果您碰巧有许多部署。分部可能基于物理服务器的位置。

用户 - 最终用户或您。

项目/租户 - 用于分隔资源(计算,存储网络)的容器

域 - 项目,群组和用户组。为用户提供资源分离,可以容纳多个项目。具有域管理员角色的用户可以创建/删除/更新该特定域中的任何项目,用户,组等。

角色 - 您对openstack服务执行任何操作的权利。想想角色,想想用户。

令牌 - 它是由keystone给出的ID(长字符串)。您可以根据使用此令牌分配给您的角色访问任何openstack服务。

例如,你可以请求nova并说,嘿nova我从keystone获得了token1。我想删除“永远不要删除我”#39;服务器。 Nova接受token1并说,嘿keystone,这个用户有token1并且想要删除服务器“永远不要删除我”#Keystone,查看token1并根据角色分配给用户,会说,ok nova允许/不允许用户删除“永远不会删除我”#39;服务器