如何通过禁用Token以达到只使用身份策略鉴权的目的
禁用Token的原因
Token类型凭证请求认证方式自带一些劣势:
- 使用Token认证时,身份策略授权将不会生效。
- Token相对临时访问密钥安全性更低。
- 用户身份权限信息静态固化在Token中,权限更新后需要重新获取Token。
禁用Token的相关接口
方法 |
接口 |
身份策略授权项 |
接口说明 |
---|---|---|---|
POST |
/v3/auth/tokens |
iamToken::generatePkiToken |
获取Token |
GET |
/v3/auth/tokens |
iamToken::validatePkiToken |
校验Token合法性 |
约束与限制
- 在禁用Token前,需要确认没有任何依赖Token的业务场景。否则禁用后会造成获取Token失败,从而导致业务功能受到影响。
- 不建议在身份策略中使用通配方式来达到禁用效果。
以下身份策略示例对iamToken::*的通配形式进行了Deny。如果后续系统新增iamToken::xxx格式的授权项,也将会被这个身份策略预期外地禁用,存在潜在的风险。
{ "Version": "5.0", "Statement": [{ "Effect": "Deny", "Action": [ "iamToken::*"#不推荐使用通配形式进行Deny ] }] }
建议策略只对具体的授权项进行Deny。例如您希望禁用获取Token的操作,建议您只对iamToken::generatePkiToken这个授权项进行Deny。
操作方式
- 身份策略方式
您可以在IAM新版控制台配置身份策略进行禁用获取Token。
请参考创建自定义身份策略以及以下示例完成自定义身份策略的创建,并将身份策略附加至授权主体。
以下身份策略示例结合了g:DomainId条件键(可选),表示禁止该用户获取Token:
{ "Version": "5.0", "Statement": [{ "Effect": "Deny", "Action": [ "iamToken::generatePkiToken" ], "Condition": { "StringEquals": { "g:DomainId": [ "xxxxxxxxxxxxxxxxxxxxx" ] } } }] }
- SCP方式
您可以在组织服务控制台配置SCP进行禁用获取Token。
请参考创建SCP以及以下示例完成SCP的创建,并将SCP绑定至组织单元或成员账号上。
以下SCP示例结合了g:UserId条件键(可选),表示禁止该用户获取Token:
{ "Version": "5.0", "Statement": [{ "Effect": "Deny", "Action": [ "iamToken::generatePkiToken" ], "Condition": { "StringEquals": { "g:UserId": [ "xxxxxxxxxxxxxxxxxxxxx" ] } } }] }