跳至主要内容

Rackspace Technologies的OpenStack身份插件

项目描述

Keystone-RXT认证插件

此存储库是一个简单的Rackspace全球认证认证插件,它允许OpenStack环境将Rackspace全球认证用作IDP。

当插件安装后,需要使用password认证方法,并将插件值设置为rxt。一旦激活,插件将正常运行,允许本地用户和远程用户对云进行认证。RXT认证插件提供了一个联盟令牌,并符合映射认证驱动程序。

为什么?

答案很简单,Rackspace公共云身份提供了一套强大的工具,可以让人们利用他们现有的用户在OpenStack环境中使用;此外,这种设置允许我们原生地使用OpenStack。

如何?

为了弥合Keystone和Rackspace身份之间的认证差距,keystone-rxt认证驱动程序有效地充当Rackspace身份的反向代理,然后将返回的数据作为联盟令牌呈现。

Capstone Diagram

历史

此插件灵感来源于 Capstone 项目。在处理过程中,Capstone 和 Keystone-RXT 都使用 Rackspace Identity 作为与 OpenStack 兼容的 IDP 来执行类似操作。虽然 Keystone-RXT 受 Capstone 启发,但这两个项目具有不同的用途。

映射

在本存储库中有一个示例映射文件 mapping.json,它将根据用户在 Rackspace Identity 中拥有的角色创建不同的用户。此文件仅作为示例,可以根据典型的映射设置进行自定义以满足 OpenStack 环境的需求。有关 Keystone 映射和联合的更多信息,请参阅 此处


部署 keystone-rxt 插件。

在我们可以做任何事情之前,您需要在您的 keystone 环境中安装此插件,此处示例使用 pip 进行开发。

pip install --force --upgrade git+https://github.com/rackerlabs/keystone-rxt

此插件目前尚未在 PyPi 上,但随着时间的推移,这将会改变。

设置您的环境

一旦认证插件安装完成,更新您的 keystone.conf 以使用名为 rxt 的新密码插件。

配置文件条目将类似于以下内容

[auth]
methods = password,token,application_credential
password = rxt

请注意,已定义 password 方法,并且密码插件被设置为使用 rxt

如果您已启用多因素认证,并希望支持使用它运行工作负载的用户,则插件还支持 TOTP。要启用 TOTP,请确保 totp 在您的允许认证方法中,并且 totp 插件正在使用 rxt 插件。

[auth]
methods = password,token,application_credential,totp
password = rxt
totp = rxt

是的,只需要几行配置即可。在配置编辑完成后,请务必重新启动 keystone。

Rackspace 配置

您还可以在 keystone.conf 中使用 [rackspace] 部分来配置如何根据角色进行锚定。

key value
role_attribute 用作发现分配给特定用户的角色的锚点的字符串选项
role_attribute_enforcement 当设置为 true 时,将限制用户的项目的范围仅限于为定义的 role_attribute 发现的 GUID

身份映射、项目域设置

一旦插件设置并运行,一切都将正常运作。插件在 Keystone 通知关于身份提供者并且我们已经创建了 rackspace_cloud_domain 之前是被动状态。

创建域
openstack domain create rackspace_cloud_domain
创建身份提供者
openstack identity provider create --remote-id rackspace --domain rackspace_cloud_domain rackspace
为我们的身份提供者创建映射
openstack mapping create --rules files/mapping.json --schema-version 2.0 rackspace_mapping
创建联合协议
openstack federation protocol create rackspace --mapping rackspace_mapping --identity-provider rackspace

使用 RXT 认证插件

使用此插件与在云中度过的一个典型日子没有不同。只需使用您喜欢的认证方法进行认证,只需确保包含 rackspace_cloud_domain 域。

使用 openstacksdk 进行认证

此设置需要一个联合令牌才能工作。默认情况下,云的 yaml 不会提取令牌。

clouds:
  local:
    auth:
      auth_url: https://:5000/v3
      project_name: 67890_Development
      project_domain_name: rackspace_cloud_domain
      username: test
      password: secrete
      user_domain_name: rackspace_cloud_domain
    region_name: RegionOne
    interface: internal
    identity_api_version: "3"

如果您使用 TOTP 启用的 CLI 工具运行且不想使用您的 API 密钥,请使用以下选项设置您的 clouds.yaml,以便它知道使用 passwordtotp 运行。

clouds:
  rxt-local-mfa:
    auth_type: "v3multifactor"
    auth_methods:
      - v3password
      - v3totp
    auth:
      auth_url: https://:5000/v3
      project_name: 67890_Development
      project_domain_name: rackspace_cloud_domain
      username: test
      password: secrete
      user_domain_name: rackspace_cloud_domain
    region_name: RegionOne
    interface: internal
    identity_api_version: "3"

启用 TOTP 将需要您使用一次性令牌来运行命令,此令牌可以在 CLI 中使用 --os-passcode 标志定义;例如,简单的镜像列表将如下所示 openstack --os-cloud local --os-passcode 123456 image list

一旦您设置了 clouds CLI,就可以正常运行命令。

openstack --os-cloud local image list
+--------------------------------------+-------------------------------------------------+--------+
| ID                                   | Name                                            | Status |
+--------------------------------------+-------------------------------------------------+--------+
| 6af793ec-d5d2-4a70-a284-cbbb223365f3 | debian-10-openstack-amd64.qcow2                 | active |
| 4ee2c1b4-1055-40b8-ad6b-eb3c9eb7b4d7 | debian-11-genericcloud-amd64.qcow2              | active |
| f16a1332-a5fb-46d5-b2ae-caa136cf9432 | jammy-server-cloudimg-amd64-disk-kvm.img        | active |
| 9e2c968c-c5b3-4a1b-9355-261fa9907e16 | ubuntu-bionic-server-cloudimg-amd64.img         | active |
| 0ee7d71b-2043-49a0-b107-56ebbbcd6b95 | ubuntu-focal-server-cloudimg-amd64-disk-kvm.img | active |
| 804cc228-251c-4081-97df-f609c0e568e7 | ubuntu-jammy-server-cloudimg-amd64-disk-kvm.img | active |
| da9923a8-ac4b-4036-ac14-46264247eb27 | ubuntu-xenial-server-cloudimg-amd64-disk1.img   | active |
+--------------------------------------+-------------------------------------------------+--------+
使用 cURL 进行认证

您还可以使用 cURL 进行操作。

示例 POST json 文件可以在文件目录中找到。

curl -sS -D - -H "Content-Type: application/json" --data-binary "@get-scoped-token" "http://172.16.27.211:5000/v3/auth/tokens" -o /dev/null
HTTP/1.1 201 CREATED
Content-Type: application/json
Content-Length: 5594
X-Subject-Token: OS_TOKEN
Vary: X-Auth-Token
x-openstack-request-id: req-5a0eb098-eecc-41e1-a10d-d872dc867561
Connection: close

使用关于命令,我们可以提取 X-Subject-Token 的值并将其存储为 OS_TOKEN,以便我们可以使用我们的服务目录支持的各个 API 进行认证。

curl -H "Accept: application/json" -H "X-Auth-Token: $OS_TOKEN" https://:9292/v2/images

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分布

keystone_rxt-0.0.4.tar.gz (49.9 kB 查看哈希值)

上传时间 源代码

构建分布

keystone_rxt-0.0.4-py3-none-any.whl (12.0 kB 查看哈希值)

上传时间 Python 3

由以下组织支持