Rackspace Technologies的OpenStack身份插件
项目描述
Keystone-RXT认证插件
此存储库是一个简单的Rackspace全球认证认证插件,它允许OpenStack环境将Rackspace全球认证用作IDP。
当插件安装后,需要使用password
认证方法,并将插件值设置为rxt
。一旦激活,插件将正常运行,允许本地用户和远程用户对云进行认证。RXT认证插件提供了一个联盟令牌,并符合映射认证驱动程序。
为什么?
答案很简单,Rackspace公共云身份提供了一套强大的工具,可以让人们利用他们现有的用户在OpenStack环境中使用;此外,这种设置允许我们原生地使用OpenStack。
如何?
为了弥合Keystone和Rackspace身份之间的认证差距,keystone-rxt认证驱动程序有效地充当Rackspace身份的反向代理,然后将返回的数据作为联盟令牌呈现。
历史
此插件灵感来源于 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
,以便它知道使用 password
和 totp
运行。
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 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ee9cdc7b00b8d2b9b4ae7320a594e122a0aeeb1a970fe82d507f43c07675101d |
|
MD5 | d04e020ae974f6a9dfc8eed32271247e |
|
BLAKE2b-256 | d4175adecf5c56ab7884827feea8a67e2a974f7cc43dd70456958e491b31665c |
keystone_rxt-0.0.4-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0ab80e4b7edb9253467e5c4ce0894da7fdf3a2d3e449d5bef87f60d59f68a556 |
|
MD5 | 44a1f1158c7b5cf0a98cc74dbf9936db |
|
BLAKE2b-256 | 634c86a76554b31153868c4f1b9a2a5aa79ae1c0ebd32ab213b2cf336e34591e |