全部产品
Search
文档中心

服务器迁移中心:通过标签实现精细化权限管理

更新时间:Dec 10, 2024

SMC资源绑定标签后,您可以使用标签为资源做分类并控制访问。本文介绍如何基于标签控制RAM用户以及STS(Security Token Service)角色的权限,实现不同的用户可以拥有不同云资源的访问和操作权限。

前提条件

使用阿里云账号已创建RAM用户。具体操作,请参见创建RAM用户

背景信息

标签可用于标识云资源,实现分类管理资源;访问控制RAM可基于权限策略,控制云资源的访问和操作权限。结合标签和RAM,将标签作为权限策略的匹配条件,可以实现云资源精细化权限管理。

基于标签控制RAM用户权限(即标签鉴权)的逻辑如下:786

说明

支持绑定标签的SMC资源包括迁移源和迁移任务,迁移源仅支持创建后为其绑定标签。更多信息,请参见使用标签管理迁移源和迁移任务

应用场景示例

本文以下述场景作为示例,说明如何实现标签鉴权。

假设您需要控制某一RAM用户只能操作特定(假设绑定了smc:test标签)的SMC资源,如下图所示:dad89

场景示例如下:

  • 场景1:不允许创建不带标签的迁移任务,仅当创建时为SMC迁移任务绑定smc:test标签才可以创建成功。

  • 场景2:只能操作带有特定标签smc:test的SMC资源,包括修改资源属性,删除资源,给资源打标签等操作,不允许操作其它SMC资源。

步骤一:配置自定义权限策略并授权

本步骤以在RAM控制台配置自定义为例,您也可以通过RAM API CreatePolicy创建一个自定义策略,权限策略配置请参见权限策略配置说明

  1. 使用阿里云账号登录RAM控制台

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

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

  4. 创建权限策略页面,单击脚本编辑页签。

  5. 完成权限策略的配置。

    权限策略是一组访问权限的集合。权限策略的结构包括版本号和授权语句列表,每条授权语句包括授权效果(Effect)、操作(Action)、资源(Resource)以及条件(Condition,可选项)。更多信息,请参见权限策略基本元素权限策略语法和结构

    1. 根据需要修改权限策略后,单击确定

      在权限策略的Condition中,您可以增加需要匹配标签的条件来限制操作权限,支持的标签条件的关键字如下表所示:

      标签条件关键字

      说明

      acs:RequestTag

      限制在请求中必须传入特定的标签。

      如果API请求中没有标签参数,则不能使用acs:RequestTag,否则会导致鉴权失败。

      acs:ResourceTag

      限制指定的资源必须包含特定的标签。

      如果API请求中没有资源ID参数,则不能使用acs:ResourceTag,否则会导致鉴权失败。

      说明

      设计权限策略时,您可以根据各操作接口特性(API请求是否需要指定资源ID、是否支持传入标签),结合实际业务需求,来设置acs:RequestTagacs:ResourceTag。更多信息,请参见API接口标签鉴权说明

      {
          "Statement": [
              {
                  "Action": "smc:CreateReplicationJob",
                  "Condition": {
                      "StringEquals": {
                          "acs:RequestTag/smc": "test"
                      }
                  },
                  "Effect": "Allow",
                  "Resource": "*"
              },
              {
                  "Action": "smc:*",
                  "Condition": {
                      "StringEquals": {
                          "acs:ResourceTag/smc": "test"
                      }
                  },
                  "Effect": "Allow",
                  "Resource": "*"
              },
              {
                "Action": [
                      "*:TagResources",
                      "*:UntagResources"  
                   ],
                  "Effect": "Deny",
                  "Resource": "*"
              },
              {
                  "Action": [
                      "*:List*",
                      "*:Describe*"
                  ],
                  "Effect": "Allow",
                  "Resource": "*"
              }
          ],
          "Version": "1"
      }

      以上策略内容可以实现如下权限控制:

      场景

      权限策略

      场景1:不允许创建不带标签的迁移任务,仅当创建时为SMC迁移任务绑定smc:test标签才可以创建成功。

      {
          "Statement": [
              {
                  "Action": "smc:CreateReplicationJob",
                  "Condition": {
                      "StringEquals": {
                          "acs:RequestTag/smc": "test"
                      }
                  },
                  "Effect": "Allow",
                  "Resource": "*"
              },
              {
                  "Action": [
                      "*:List*",
                      "*:Describe*"
                  ],
                  "Effect": "Allow",
                  "Resource": "*"
              }
          ],
          "Version": "1"
      }

      场景2:只能操作带有特定标签(即绑定smc:test标签)的SMC资源,包括修改资源属性,删除资源等操作,不允许操作其它SMC资源。

      {
          "Statement": [
              {
                  "Action": "smc:*",
                  "Condition": {
                      "StringEquals": {
                          "acs:ResourceTag/smc": "test"
                      }
                  },
                  "Effect": "Allow",
                  "Resource": "*"
              },
              {
                "Action": [
                      "*:TagResources",
                      "*:UntagResources"
                  ],
                  "Effect": "Deny",
                  "Resource": "*"
              },
              {
                  "Action": [
                      "*:List*",
                      "*:Describe*"
                  ],
                  "Effect": "Allow",
                  "Resource": "*"
              }
          ],
          "Version": "1"
      }                                                  
    2. 在弹出的创建权限策略对话框中,输入权限策略名称和备注后,单击确定

  6. 将自定义策略授权给RAM用户。

    1. 在左侧导航栏选择身份管理 > 用户

    2. 为RAM用户授予新创建的自定义权限策略。

      具体操作,请参见为RAM用户授权

步骤二:验证权限策略是否生效

  1. 使用RAM用户登录SMC控制台OpenAPI平台

    本步骤以SMC控制台操作验证为例。

  2. 测试权限策略是否生效。

    测试权限如下:

    • 创建迁移任务:

      • 已绑定smc:test标签的迁移源,则可以创建迁移任务。

      • 没有绑定标签或者绑定了其它标签的迁移源,则无法创建迁移任务,提示没有权限。2556

    • 删除迁移源:

      • 删除绑定smc:test标签的迁移源,则可以删除。

      • 删除没有绑定smc:test标签的迁移源,则无法删除,提示没有权限。566

API接口标签鉴权说明

为某一RAM用户授予含有标签鉴权的权限策略后,该RAM用户调用各API接口时的鉴权情况如下表所示:

接口

鉴权说明

CreateReplicationJob接口

该接口无需指定资源ID,匹配acs:RequestTag

  • 没有传入标签,或者传入的标签不包含授权标签,则鉴权不通过。

  • 传入完全匹配的标签,或者传入的标签包含了授权标签,则鉴权通过。

ModifyReplicationJobAttribute接口

该接口必须指定资源ID,匹配acs:ResourceTag

  • 更新标签无法匹配的SMC资源,则鉴权不通过。

  • 更新标签能够匹配的SMC资源,且不更新标签,则鉴权通过。

  • 更新标签能够匹配的SMC资源,且更新标签,如果具备新标签的权限,则鉴权通过,反之则鉴权不通过。

StartReplicationJob、StopReplicationJob、DeleteSourceServer等其他操作接口

该类接口必须指定资源ID,匹配acs:ResourceTag

  • 操作标签无法匹配的SMC资源,则鉴权不通过。

  • 操作标签能够匹配的SMC资源,则鉴权通过。