什么是条件键

条件键是一种支持基于实例创建者的访问控制。举个例子,通过条件键赋予了某一个子账号创建云主机实例,那么被创建的云主机就只允许该实例创建的子账号所有者进行访问控制,其他子账号用户在未授权情况下无法对该实例进行相关操作。

用于的条件键

Condition 元素中使用的条件键。您可以使用这些键进一步细化应用策略语句的条件。

条件键描述类型value值
nvm:ResourceTag/createBy授权子账号允许使用该创建者下面的实例进行action字符串主账号ssn/子账号ssn

使用范围

目前支持如下产品:

  • 云服务器

其他产品的支持陆续开发中。

例子

假如我们需要允许子账号 demo_test 创建云主机实例,并只允许该子账号对自己创建的实例进行生命周期操作,这里主账号用户名为 163yun@163.com 子账号为 demo_test,我们在访问控制的自定义策略中创建一个空策略把这各策略命名为 permission_demo_test,如下所示:

{
    "version": 1,
    "statement": [
        {
            "action": [
                "comb:nvm:*"
            ],
            "effect": "allow",
            "resource": [
                "comb:nvm:*:*:*"
            ],
            "condition": {
                "stringEquals": {
                    "nvm:ResourceTag/createBy": "163yun@163.com/demo_test"
                }
            }
        },
        {
            "action": [
                "comb:nvm:CreateInstance"
            ],
            "effect": "allow",
            "resource": [
                "comb:nvm:*:*:*"
            ]
        }
    ]
}

然后给需要授权的子账号添加 permission_demo_test 这个自定义策略,如果需要创建云主机还需要对子账号增加一些其他策略,例如:

  • KeyPairReadonlyAccress
  • VpcFullAccess
  • NvmFinanceAccess
  • NvmReadOnlyAccess

当然具体的策略设置需要根据用户的需求来决定。

这里需要说明下,鉴权会根据最大权限来判断,以上面的策略 permission_demo_test 为例:

  • 如果子账号 demo_test 配置了策略 permission_demo_test,并且没有赋予最大权限,则 demo_test 只能对自己创建的云主机进行生命周期管理操作;
  • 如果其他子账号配置了策略 permission_demo_test,并且没有赋予最大权限,则其他子账号只能对 demo_test 创建的云主机进行生命周期管理操作;
  • 如果子账号 demo_test 配置了策略 permission_demo_test,赋予最大权限,则 demo_test 可以对任何账号创建的云主机进行生命周期管理操作;