第 17 章 使用 Multicloud 对象网关的安全令牌服务假设另一个用户的角色
Multicloud Object Gateway (MCG)提供对安全令牌服务(STS)的支持,类似于 Amazon Web Services 提供的服务。
要允许其他用户假定某个用户的角色,您需要为用户分配角色配置。您可以使用 MCG CLI 工具管理角色配置。
以下示例显示了允许两个 MCG 用户(assumer@mcg.test
和 assumer2@mcg.test
)的角色配置来假定特定用户的角色:
'{"role_name": "AllowTwoAssumers", "assume_role_policy": {"version": "2012-10-17", "statement": [ {"action": ["sts:AssumeRole"], "effect": "allow", "principal": ["assumer@mcg.test", "assumer2@mcg.test"]}]}}'
'{"role_name": "AllowTwoAssumers", "assume_role_policy": {"version": "2012-10-17", "statement": [ {"action": ["sts:AssumeRole"], "effect": "allow", "principal": ["assumer@mcg.test", "assumer2@mcg.test"]}]}}'
使用 MCG CLI 工具分配角色配置。
mcg sts assign-role --email <assumed user's username> --role_config '{"role_name": "AllowTwoAssumers", "assume_role_policy": {"version": "2012-10-17", "statement": [ {"action": ["sts:AssumeRole"], "effect": "allow", "principal": ["assumer@mcg.test", "assumer2@mcg.test"]}]}}'
mcg sts assign-role --email <assumed user's username> --role_config '{"role_name": "AllowTwoAssumers", "assume_role_policy": {"version": "2012-10-17", "statement": [ {"action": ["sts:AssumeRole"], "effect": "allow", "principal": ["assumer@mcg.test", "assumer2@mcg.test"]}]}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在继续执行角色前收集以下信息,然后后续步骤中需要该角色:
- 假定器的访问密钥 ID 和 secret 访问密钥(假定角色的用户)
MCG STS 端点,可以使用以下命令检索:
oc -n openshift-storage get route
$ oc -n openshift-storage get route
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 假设用户的访问密钥 ID。
-
角色配置中
role_name
值的值。 - 为角色会话选择的名称
- 配置角色就绪后,将其分配给适当的用户(使用上一步中描述的数据填充)--
AWS_ACCESS_KEY_ID=<aws-access-key-id> AWS_SECRET_ACCESS_KEY=<aws-secret-access-key1> aws --endpoint-url <mcg-sts-endpoint> sts assume-role --role-arn arn:aws:sts::<assumed-user-access-key-id>:role/<role-name> --role-session-name <role-session-name>
AWS_ACCESS_KEY_ID=<aws-access-key-id> AWS_SECRET_ACCESS_KEY=<aws-secret-access-key1> aws --endpoint-url <mcg-sts-endpoint> sts assume-role --role-arn arn:aws:sts::<assumed-user-access-key-id>:role/<role-name> --role-session-name <role-session-name>
注意
根据集群的配置,可能需要添加 -no-verify-ssl
。
生成的输出包含访问密钥 ID、secret 访问密钥和会话令牌,可用于在假定其他用户的角色时执行操作。
您可以使用假定角色步骤后生成的凭证,如下例所示:
AWS_ACCESS_KEY_ID=<aws-access-key-id> AWS_SECRET_ACCESS_KEY=<aws-secret-access-key1> AWS_SESSION_TOKEN=<session token> aws --endpoint-url <mcg-s3-endpoint> s3 ls
AWS_ACCESS_KEY_ID=<aws-access-key-id> AWS_SECRET_ACCESS_KEY=<aws-secret-access-key1> AWS_SESSION_TOKEN=<session token> aws --endpoint-url <mcg-s3-endpoint> s3 ls