2.3.11.5. 在 Keystone 中配置和使用 STS Lite(技术预览)
同一命名空间中的 Amazon 安全令牌服务(STS)和 S3 API 共存。STS 选项可以和 Keystone 选项一起配置。
S3 和 STS API 都可以使用 Ceph 对象网关中的同一端点来访问。
先决条件
- Red Hat Ceph Storage 3.2 或更高版本。
- 正在运行的 Ceph 对象网关.
- 安装 Boto Python 模块,版本 3 或更高版本。
流程
使用以下选项打开并编辑
group_vars/rgws.yml文件:rgw_sts_key = STS_KEY rgw_s3_auth_use_sts = true
rgw_sts_key = STS_KEY rgw_s3_auth_use_sts = trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 替换:
-
STS_KEY带有用于加密会话令牌的密钥。
-
再次运行适当的 Ceph Ansible playbook:
裸机部署:
ansible-playbook site.yml --limit rgws
[user@admin ceph-ansible]$ ansible-playbook site.yml --limit rgwsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 容器部署:
ansible-playbook site-docker.yml --limit rgws
[user@admin ceph-ansible]$ ansible-playbook site-docker.yml --limit rgwsCopy to Clipboard Copied! Toggle word wrap Toggle overflow
生成 EC2 凭证:
示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用生成的凭证,通过 GetSessionToken API 来备份一组临时安全凭证。
示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 获取临时凭证可用于发出 S3 调用:
示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建新的 S3Access 角色并配置策略。
使用管理 CAPS 为用户分配:
语法
radosgw-admin caps add --uid="USER" --caps="roles=*"
radosgw-admin caps add --uid="USER" --caps="roles=*"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
radosgw-admin caps add --uid="gwadmin" --caps="roles=*"
[user@client]$ radosgw-admin caps add --uid="gwadmin" --caps="roles=*"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建 S3Access 角色:
语法
radosgw-admin role create --role-name=ROLE_NAME --path=PATH --assume-role-policy-doc=TRUST_POLICY_DOC
radosgw-admin role create --role-name=ROLE_NAME --path=PATH --assume-role-policy-doc=TRUST_POLICY_DOCCopy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
radosgw-admin role create --role-name=S3Access --path=/application_abc/component_xyz/ --assume-role-policy-doc=\{\"Version\":\"2012-10-17\",\"Statement\":\[\{\"Effect\":\"Allow\",\"Principal\":\{\"AWS\":\[\"arn:aws:iam:::user/TESTER\"\]\},\"Action\":\[\"sts:AssumeRole\"\]\}\]\}[user@client]$ radosgw-admin role create --role-name=S3Access --path=/application_abc/component_xyz/ --assume-role-policy-doc=\{\"Version\":\"2012-10-17\",\"Statement\":\[\{\"Effect\":\"Allow\",\"Principal\":\{\"AWS\":\[\"arn:aws:iam:::user/TESTER\"\]\},\"Action\":\[\"sts:AssumeRole\"\]\}\]\}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将权限策略附加到 S3Access 角色:
语法
radosgw-admin role-policy put --role-name=ROLE_NAME --policy-name=POLICY_NAME --policy-doc=PERMISSION_POLICY_DOC
radosgw-admin role-policy put --role-name=ROLE_NAME --policy-name=POLICY_NAME --policy-doc=PERMISSION_POLICY_DOCCopy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
radosgw-admin role-policy put --role-name=S3Access --policy-name=Policy --policy-doc=\{\"Version\":\"2012-10-17\",\"Statement\":\[\{\"Effect\":\"Allow\",\"Action\":\[\"s3:*\"\],\"Resource\":\"arn:aws:s3:::example_bucket\"\}\]\}[user@client]$ radosgw-admin role-policy put --role-name=S3Access --policy-name=Policy --policy-doc=\{\"Version\":\"2012-10-17\",\"Statement\":\[\{\"Effect\":\"Allow\",\"Action\":\[\"s3:*\"\],\"Resource\":\"arn:aws:s3:::example_bucket\"\}\]\}Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
现在,另一个用户可以假定
gwadmin用户的角色。例如,gwuser用户可以假定gwadmin用户权限。 记录假定用户的
access_key和secret_key值。示例
radosgw-admin user info --uid=gwuser | grep -A1 access_key
[user@client]$ radosgw-admin user info --uid=gwuser | grep -A1 access_keyCopy to Clipboard Copied! Toggle word wrap Toggle overflow
使用 AssumeRole API 调用,提供来自假定用户的
access_key和secret_key值:示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要AssumeRole API 需要 S3Access 角色。
其它资源
- 有关安装 Boto Python 模块的更多信息,请参阅 Red Hat Ceph Storage Object Gateway 指南中的 Test S3 Access 部分。
- 如需更多信息,请参阅 Red Hat Ceph Storage Object Gateway 指南中的 创建用户 部分。