策略变量
最近更新时间: 2024-10-17 17:10:00
使用场景
场景假设:您希望给每个 CAM 用户授予其创建资源的访问权限。例如您想要设置 COS 资源的创建者默认拥有该资源的访问权限。 如果由资源拥有者(根账号)将资源逐个授权给资源创建者,授权成本很高,需要为每种资源都编写策略并授权给创建者。在这种情况下,您可以通过使用策略变量来实现您的需求。在策略的资源定义中增加占位符描述的创建人信息,该占位符即使策略变量。当鉴权时,策略变量将被替换为来自请求本身的上下文信息。
授予创建者资源读权限的策略描述方式如下:
{
"version":"2.0",
"statement":
{
"effect":"allow",
"action":"name/cos:Read*",
"resource":"qcs::cos::uid/1238423:prefix/${uin}/*"
}
}
- 策略变量在每个资源的路径中带上创建人的 uin。如uin 为12356 的用户创建了名为 test 的 bucket,则其对应的资源描述方式为
qcs::cos::uid/1238423:prefix/12356/test
- uin 为 12356 的用户访问该资源时,鉴权过程中会把对应的策略信息的占位符替换为访问者,即
qcs::cos::uid/1238423:prefix/12356/
- 策略中的资源
qcs::cos::uid/1238423:prefix/12356/
可以通过前缀匹配访问资源qcs::cos::uid/1238423:prefix/12356/test
。
策略变量的位置
资源元素位置 :策略变量可以用在[资源六段式]的最后一段。 条件元素位置 :策略变量可以用在条件值中。
以下策略表示 VPC 创建者拥有访问权限。
{
"version":"2.0",
"statement":
{
"effect":"allow",
"action":"name/vpc:*",
"resource":"qcs::vpc::uin/12357:vpc/*"
"condition":{"string_equal":{"qcs:create_uin":"${uin}"}}
}
}
策略变量列表
目前支持的策略变量列表如下:
变量名 | 变量含义 |
---|---|
${uin} | 当前访问者的子账号 uin 。对于访问者是根账号的情况,它和根账号 uin 一致。 |
${owner_uin} | 当前访问者所属的根账号 uin 。 |
${app_id} | 当前访问者所属的根账号的 APPID 。 |