全部产品
Search
文档中心

通过标签实现RAM用户鉴权

更新时间: 2021-06-29

为ECI实例绑定标签后,您可以使用标签对ECI实例进行分类并控制访问。本文介绍如何通过标签控制RAM用户的权限,实现RAM用户只能操作带有特定标签的ECI实例。

前提条件

已创建RAM用户。具体操作,请参见创建RAM用户

背景信息

默认情况下,为RAM用户授予AliyunECIFullAccess的系统权限策略后,RAM用户可以通过OpenAPI操作所有ECI实例。如果您希望控制RAM用户操作ECI实例的范围,可以创建并授权自定义权限策略,通过标签实现RAM用户只能操作某些满足标签条件限制的ECI实例。

操作步骤

  1. 登录RAM控制台

  2. 在左侧导航栏选择权限管理>权限策略管理

  3. 权限策略管理页面,单击创建权限策略

  4. 完成自定义策略配置。

    1. 输入策略名称。

    2. 选择配置模式为脚本配置

    3. 导入AliyunECIFullAccess的策略内容,然后根据需要修改策略内容。

      例如:您可以增加需要匹配标签(tag)的条件来限制操作权限,使得授权的RAM用户只能操作带有指定标签的ECI实例。示例如下:

      {
          "Version": "1",
          "Statement": [
              {
                  "Action": "eci:*",
                  "Resource": "*",
                  "Effect": "Allow",
                  "Condition": {
                    "StringEquals": {
                    "eci:tag/name": "eci",
                    "eci:tag/env": "test"
                  }
            }
              },
              {
                  "Action": [
                      "ecs:DescribeSecurityGroups"
                  ],
                  "Resource": "*",
                  "Effect": "Allow"
              },
              {
                  "Action": [
                      "vpc:DescribeVSwitches",
                      "vpc:DescribeVpcs",
                      "vpc:DescribeEipAddresses"
                  ],
                  "Resource": "*",
                  "Effect": "Allow"
              },
              {
                  "Action": "ram:CreateServiceLinkedRole",
                  "Resource": "*",
                  "Effect": "Allow",
                  "Condition": {
                      "StringEquals": {
                          "ram:ServiceName": "eci.aliyuncs.com"
                      }
                  }
              }
          ]
      }
      说明

      您可以根据需要添加一组或者多组tag限制。如果添加了多组tag限制,则表示能操作的ECI实例必须同时带有指定的多组tag。例如,上述示例表示ECI实例必须要同时带有name:ecienv:test两个标签。

    4. 单击

  5. 在左侧导航栏选择人员管理>用户

  6. 用户页面,找到目标RAM用户,单击操作列中的添加权限

  7. 添加权限面板,选择之前创建的自定义策略,单击确定

    授权成功后,该RAM用户只能操作带有指定标签的ECI实例。

执行结果

授权RAM用户只能操作某些带有指定tag的ECI实例后,调用各API接口的预期结果如下:

  • CreateContainerGroup

    • 创建ECI实例时,没有传入tag,或者传入的tag不包含授权tag,则鉴权不通过。

    • 创建ECI实例时,传入完全匹配的tag,或者传入的tag包含了授权tag,则鉴权通过。

  • RestartContainerGroup、ExecContainerCommand、DescribeContainerLog

    • 操作tag无法匹配的ECI实例,则鉴权不通过。

    • 操作tag能够匹配的ECI实例,则鉴权通过。

  • DescribeContainerGroups

    • 查询ECI实例时,没有传入tag,但传入了实例ID,如果该实例的tag能够匹配,则鉴权通过,反之则鉴权不通过。

    • 查询ECI实例时,传入tag,但没有传入实例ID,如果tag与账号匹配,则鉴权通过,反之则鉴权不通过。

    • 查询ECI实例时,既传入tag,又传入实例ID,则该实例带有的tag作为鉴权,您传入的tag仅作为过滤条件。

    • 查询ECI实例时,没有传入tag,也没有传入实例ID,则鉴权不通过。

    说明

    该查询接口在鉴权不通过时,返回结果为空,并不会报错。

  • UpdateContainerGroup

    • 更新tag无法匹配的ECI实例,则鉴权不通过。

    • 更新tag能够匹配的ECI实例,且不更新tag,则鉴权通过。

    • 更新tag能够匹配的ECI实例,且更新tag,如果具备新tag的权限,则鉴权通过,反之则鉴权不通过。

      说明

      更新tag时,RAM用户需要分别具有更新前后的tag权限。即授权时,需要授予用户两个自定义权限策略,分别包含更新前后的tag条件限制。