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

背景信息

以往,当一个 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)

  • 所有资源:对应的 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

第 1 步:创建 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 自定义授权策略的详细步骤,请参考创建自定义策略(可选)

第 2 步:创建 RAM 用户

  1. 返回到 RAM 控制台
  2. 在左侧导航栏单击用户管理
  3. 单击用户管理页面右上角的新建用户,并在创建用户对话框中填写用户名等信息。
    说明 如需生成 AccessKey,请勾选 为该用户自动生成 AccessKey。新创建的用户没有任何权限,因此您需要为其授权。
  4. 用户管理页面的列表中单击上一步创建的用户名。
  5. 用户详情页面的Web 控制台登录管理区域,单击右侧的启动控制台登录,并设置用户密码。
  6. 在左侧导航栏单击用户授权策略,并单击页面右上角的编辑授权策略
  7. 编辑个人授权策略对话框中,通过关键词搜索上一步新建的授权策略,并单击 > 按钮将该授权策略移至右侧的已选授权策略名称列表,然后单击确定
说明

关于创建 RAM 用户和为其授权的详细步骤,请参考创建 RAM 用户为 RAM 用户授权

第 3 步:登录 RAM 用户并验证权限

  1. 返回到 RAM 控制台
  2. RAM 概览页面上单击 RAM 用户登录链接,并以您新建的用户登录。
  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. 授予所有命名空间中单个 Group(例如 DEFAULT_GROUP)的读写权限
    {
    "Version": "1",
    "Statement": [
     {
       "Action": [
         "acms:*"
       ],
       "Resource": [
               "*:*:*:*:cfg/*/DEFAULT_GROUP"
           ],
       "Effect": "Allow"
     }
    ]
    }

备注

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

相关文档