
# 授予获取临时安全凭证的权限
#### 概述
通过使用STS获取访问您的华为云资源的临时安全凭证，并将这些凭证提供给可信用户。STS颁发的临时安全凭证，在到期之前始终有效，并且无法撤销。但是，由于每次使用临时安全凭证签名发出请求时，都会评估分配给临时安全凭证的权限。因此，即使临时安全凭证已经签发，您仍可通过更改委托或者信任委托的访问权限来实现[撤销临时安全凭证](https://support.huaweicloud.com/usermanual-iam5/iam_01_1242.html)的效果。
默认情况下，IAM用户无权切换委托或者信任委托获取临时安全凭证，您必须通过身份策略来向用户授予此权限。虽然您可以直接向用户授予权限，但我们强烈建议您通过用户组授予权限，这样可以使权限管理更加简单。如果某个用户不再需要此权限，只需将用户从该用户组中删除；如果其他用户需要此权限，只需将用户添加到该用户组。
要向IAM用户组授予切换委托或者信任委托获取临时安全凭证的权限，可以向用户组附加一个包含如下权限的策略（admin组的用户默认就有此权限）：
- 授予sts:agencies:assume权限。
- （可选）授予sts::tagSession权限。允许切换信任委托时，设置会话标签参数。
- （可选）授予sts::setSourceIdentity权限。允许切换信任委托时，设置源身份参数。
对于AssumeAgencyWithSAML和AssumeAgencyWithOIDC API，仅需要在信任委托中的信任策略进行授权，因为调用这两个API的主体并不是一个华为云身份。
要想调用AssumeAgencyWithSAML API，可以在SAML身份提供商绑定的信任委托中的信任策略授予如下权限：
- 授予sts:agencies:assumeWithSAML权限。
- （可选）授予sts::tagSession权限。允许切换信任委托时，在SAML响应中设置会话标签属性。
- （可选）授予sts::setSourceIdentity权限。允许切换信任委托时，在SAML响应中设置源身份属性。
 
要想调用AssumeAgencyWithOIDC API，可以在OIDC身份提供商绑定的信任委托中的信任策略授予如下权限：
- 授予sts:agencies:assumeWithOIDC权限。
- （可选）授予sts::tagSession权限。允许切换信任委托时，在OIDC令牌中设置会话标签字段。
- （可选）授予sts::setSourceIdentity权限。允许切换信任委托时，在OIDC令牌中设置源身份字段。
 
接下来以AssumeAgency API为例，说明如何授予获取临时安全凭证的权限。
#### 授予用户通过信任委托获取临时安全凭证权限的示例
通过创建以下自定义策略， 然后将其关联到为账号123123123123中的testGroup用户组，这样加入testGroup用户组的用户就拥有通过AssumeAgency API切换testAgency信任委托的权限。
```
{
"Version": "5.0",
"Statement": [{
"Effect": "Allow",
"Action": [
"sts:agencies:assume",
"sts::tagSession",
"sts::setSourceIdentity"
],
"Resource": [
"iam::123123123123:agency:testAgency"
]
}]
}
```
#### 跨账号业务场景下授予用户通过信任委托获取临时安全凭证权限的示例
公司A计划让公司B协助管理自己的华为云资源，已知公司A拥有华为云账号123123123123 ，公司B拥有华为云账号456456456456。
1. 公司A需要在华为云账号123123123123创建信任委托testAgency，并将如下信任策略关联到testAgency，允许公司B管理的华为云资源可以通过testAgency关联的身份策略来定义。
   ```
   {
   "Version": "5.0",
   "Statement": [{
   "Effect": "Allow",
   "Action": [
   "sts:agencies:assume",
   "sts::tagSession",
   "sts::setSourceIdentity"
   ],
   "Principal": {
   "IAM": [
   "456456456456"
   ]
   }
   }]
   }
   ```
   
2. 公司B可以创建以下身份策略，并将其关联到testGroup用户组，加入用户组testGroup的用户就可以通过切换信任委托testAgency来管理公司A的华为云资源。
   ```
   {
   "Version": "5.0",
   "Statement": [{
   "Effect": "Allow",
   "Action": [
   "sts:agencies:assume",
   "sts::tagSession",
   "sts::setSourceIdentity"
   ],
   "Resource": [
   "iam::123123123123:agency:testAgency"
   ]
   }]
   }
   ```
   
 
