本文以将单个命名空间授权给某个RAM用户为例,介绍如何使用ACM的访问权限控制功能。

迁移到MSE Nacos

ACM进入下线状态,所有配置管理相关的需求由MSE中的Nacos承接(ACM独享版,更好的安全和稳定性)。您需要在ACM控制台导出配置,然后在MSE控制台导入之前导出的配置即可完成迁移。具体操作,请参见将应用配置从ACM迁移到MSE Nacos

背景信息

以往,当一个RAM用户(或角色)被授予AliyunACMFullAccess授权策略时,即拥有ACM的完全操作权限,包括对所有配置和所有命名空间的读写权限。由于RAM用户之间的配置并未隔离,因误操作或恶意操作造成的损失就可能会被放大,并造成严重后果。更重要的是,由于对所有授权用户可见,数据库账号密码等敏感配置面临着泄露的安全风险。

现在,ACM提供了更细粒度的权限控制,您可以按需为用户分配最小权限,达到为不同用户(或角色)授予不同资源操作权限的目的。对应RAM的授权策略,可以分为操作(Action)维度和资源(Resource)维度。

操作(Action)

  • 读:可以读取Resource所指定范围的配置,以及读取命名空间基本信息,对应的RAM授权策略Action为acms:R
  • 写:可以增加、删除和修改Resource所指定范围的配置,但无法增加、删除和修改命名空间,对应的RAM授权策略Action为acms:W
  • 完全权限:可以读写Resource所指定范围的配置,并读取命名空间基本信息。当Resource为*时,也可以增加、删除和修改命名空间,对应的RAM授权策略Action为acms:*

资源(Resource)

授权资源的定义规则为acs:${service-name}:${region-id}:${resource-owner-id}:${resource-type}/${namespace_id}/${resource-name}

  • 所有资源:对应的RAM授权策略Resource为*
  • 单个命名空间:例如命名空间为1ca01ca0-11b0-1e01-0df1-d1010101bc10,则对应的RAM授权策略Resource为*:*:*:*:cfg/1ca01ca0-11b0-1e01-0df1-d1010101bc10
  • 单个命名空间下的某个Group:例如命名空间为1ca01ca0-11b0-1e01-0df1-d1010101bc10,Group为DEFAULT_GROUP,则对应的RAM授权策略Resource为*:*:*:*:cfg/1ca01ca0-11b0-1e01-0df1-d1010101bc10/DEFAULT_GROUP
  • 单个命名空间下的某个Group的特定配置项:例如命名空间为1ca01ca0-11b0-1e01-0df1-d1010101bc10,Group为DEFAULT_GROUP,配置项的DataId为com.alibaba.acm.test,则对应的RAM授权策略Resource为*:*:*:*:cfg/1ca01ca0-11b0-1e01-0df1-d1010101bc10/DEFAULT_GROUP/com.alibaba.acm.test

步骤一:创建RAM自定义授权策略

  1. 登录RAM控制台
  2. 在左侧导航栏的权限管理菜单下,单击权限策略管理
  3. 授权策略管理页面左上角单击创建权限策略
  4. 新建自定义权限策略页面,选择配置模式脚本配置
  5. 策略内容输入框内输入自定义的授权策略名称、备注和策略内容,并单击确定
    例如,要为命名空间1ca01ca0-11b0-1e01-0df1-d1010101bc10配置读写权限,请在策略内容文本框中输入以下内容:
    {
    "Version": "1",
    "Statement": [
     {
       "Action": [
         "acms:*"
       ],
       "Resource": "*:*:*:*:cfg/1ca01ca0-11b0-1e01-0df1-d1010101bc10",
       "Effect": "Allow"
     }
    ]
    }
    说明 关于创建RAM自定义授权策略的详细步骤,请参考创建自定义策略

步骤二:创建RAM用户并授权

  1. 在左侧导航栏,选择身份管理 > 用户
  2. 用户页面,单击创建用户
  3. 创建用户页面的用户账号信息区域,输入登录名称显示名称
    说明 单击添加用户,可一次性创建多个RAM用户。
  4. 访问方式区域下,选择编程访问,然后单击确定
    用户信息页面会显示创建用户的AccessKey IDAccessKeySecret,请记录下来供后续步骤使用并妥善保管。
  5. 用户页面,单击目标RAM用户操作列的添加权限
  6. 权限策略名称右侧的输入框内,输入步骤一:创建RAM自定义授权策略中生成的策略名称。
  7. 单击确定,然后关闭右侧面板。

步骤三:登录RAM用户并验证权限

  1. 返回到RAM控制台
  2. 概览页面上单击账号管理区域的登录链接,并以您新建的用户登录。
  3. 访问ACM控制台,验证当前可以操作的只有刚刚设置授权策略中的命名空间。

更多示例

  1. 授予单个命名空间(例如1ca01ca0-11b0-1e01-0df1-d1010101bc10)的只读权限。
    {
    "Version": "1",
    "Statement": [
     {
       "Action": [
         "acms:R"
       ],
       "Resource": "*:*:*:*:cfg/1ca01ca0-11b0-1e01-0df1-d1010101bc10",
       "Effect": "Allow"
     }
    ]
    }
  2. 授予单个命名空间(例如1ca01ca0-11b0-1e01-0df1-d1010101bc10)中单个Group(例如DEFAULT_GROUP)的读写权限。
    {
    "Version": "1",
    "Statement": [
     {
       "Action": [
         "acms:*"
       ],
       "Resource": "*:*:*:*:cfg/1ca01ca0-11b0-1e01-0df1-d1010101bc10/DEFAULT_GROUP",
       "Effect": "Allow"
     }
    ]
    }
  3. 授予单个命名空间(例如1ca01ca0-11b0-1e01-0df1-d1010101bc10)中多个Group(例如DEFAULT_GROUPDEFAULT_GROUP_1)的只读权限。
    {
    "Version": "1",
    "Statement": [
     {
       "Action": [
         "acms:R"
       ],
       "Resource": [
               "*:*:*:*:cfg/1ca01ca0-11b0-1e01-0df1-d1010101bc10/DEFAULT_GROUP",
               "*:*:*:*:cfg/1ca01ca0-11b0-1e01-0df1-d1010101bc10/DEFAULT_GROUP_1"
           ],
       "Effect": "Allow"
     }
    ]
    }
  4. 授予单个命名空间(例如1ca01ca0-11b0-1e01-0df1-d1010101bc10)中某个Group(例如DEFAULT_GROUP)下特定配置项(com.alibaba.acm.test)只读权限。
    {
        "Version": "1",
        "Statement": [
            {
                "Action": [
                    "acms:R"
                ],
                "Resource": "*:*:*:*:cfg/1ca01ca0-11b0-1e01-0df1-d1010101bc10/DEFAULT_GROUP/com.alibaba.acm.test",
                "Effect": "Allow"
            }
        ]
    }
  5. 授予所有命名空间中单个Group(例如DEFAULT_GROUP)的读写权限。
    {
    "Version": "1",
    "Statement": [
     {
       "Action": [
         "acms:*"
       ],
       "Resource": [
               "*:*:*:*:cfg/*/DEFAULT_GROUP"
           ],
       "Effect": "Allow"
     }
    ]
    }
  6. 授予单个Region(例如杭州cn-hangzhou)单个命名空间(例如1ca01ca0-11b0-1e01-0df1-d1010101bc10)的读写权限。
    {
    "Version": "1",
    "Statement": [
     {
       "Action": [
         "acms:*"
       ],
       "Resource": [
               "*:*:cn-hangzhou:*:cfg/1ca01ca0-11b0-1e01-0df1-d1010101bc10"
           ],
       "Effect": "Allow"
     }
    ]
    }

备注

  • 只有当授权策略操作(Action)acms:*并且资源(Resource)*时,被授予该授权策略的用户(或角色)才能增加、删除和修改命名空间。
  • 由于存在缓存机制,授权策略的添加和修改会延迟生效,但通常都会在10秒内生效。
  • 通过ECS实例RAM角色访问ACM时,授予如上所述授权策略,同样可以实现细粒度的权限控制。

相关文档

通过ECS实例RAM角色访问ACM