访问控制RAM(Resource Access Management)是阿里云提供的权限管理系统。RAM主要的作用是控制账号系统的权限,您可以使用RAM在主账号的权限范围内创建子账号,给不同的子账号分配不同的权限来允许或拒绝子账号对云资源的访问,从而达到授权管理的目的。

背景信息

说明
  • RAM子账号从属于阿里云主账号,并且这些子账号下不能拥有实际的任何资源,所有资源都属于阿里云主账号。
  • 通过RAM子账号创建AnalyticDB MySQL版集群后,只能通过该RAM子账号和所属阿里云主账号查看或使用集群;其他RAM子账号需要授权后才能查看或者使用该集群。

使用场景

通过阿里云主账号创建AnalyticDB MySQL版集群后,如果您的组织里有多个用户需要使用AnalyticDB MySQL版集群,这些用户只能共享使用您的云账号AccessKey。这里有两个问题:

  • 您的密钥由多人共享,泄露的风险很高。
  • 您无法控制特定用户可以对集群进行哪些操作,例如扩容集群、重启集群等。

此时,您可以创建RAM子账号,并授予子账号对应的权限。之后,让您的用户通过子账号访问或管理您的AnalyticDB MySQL版集群。

如何实现

通过RAM子账号访问或者管理AnalyticDB MySQL版集群需要以下两个步骤。

  1. 创建RAM子账号
  2. 为RAM子账号授权

创建RAM子账号

  1. 登录RAM控制台
  2. 单击左侧导航栏的人员管理 > 用户
  3. 用户页面,单击创建用户,输入登录名称显示名称
    说明 单击添加用户,可一次性创建多个RAM子账号。
  4. 访问方式区域下,选择控制台访问编程访问
    • 控制台访问:可以完成对登录安全的基本设置,包括自动生成或自定义登录密码、是否要求下次登录时重置密码以及是否要求开启多因素认证。
    • 编程访问:自动为RAM子账号创建访问密钥(AccessKey)。RAM子账号可以通过其他开发工具访问AnalyticDB MySQL版集群。
    • 为保障账号安全,建议仅为RAM子账号选择一种登录方式。避免RAM子账号离开组织后仍可以通过访问密钥访问AnalyticDB MySQL版集群。
  5. 单击确认,创建RAM子账号。

为RAM子账号授权

  1. 登录RAM控制台
  2. 单击左侧导航栏的人员管理 > 用户
  3. 用户页面,单击目标RAM子账号右侧的添加权限
  4. 添加权限页面,权限类型选择系统策略,输入策略名称找到对应的权限策略,单击将其添加到已选择框中。

    权限策略说明:

    • AliyunADBReadOnlyAccess,只读访问AnalyticDB MySQL版 3.0集群的权限。
    • AliyunADBFullAccess,管理AnalyticDB MySQL版 3.0集群的权限。
  5. 单击确认,为RAM子账号授权。

    为RAM子账号授予相应的权限后,您就可以通过RAM子账号访问或者管理AnalyticDB MySQL版集群。

创建权限策略

如需对子账号进行精细到实例级别的操作授权,这种场景需要在RAM中创建自定义权限策略。

  1. 登录RAM控制台
  2. 单击左侧导航栏的权限管理 > 权限策略管理
  3. 单击创建权限策略,本文以创建管理实例权限为例说明。
  4. 输入策略名称,例如:AliyunADBFullAccess-am-xxx。
  5. 配置模式选择脚本配置
  6. 脚本内容示例如下。

    管理“am-xxx”实例权限:

    {
        "Version": "1",
        "Statement": [
            {
                "Action": ["adb:DescribeDBClusters", "adb:ListTagResources"],
                "Resource": "acs:adb:*:*:dbcluster/*",
                "Effect": "Allow"
            },
            {
                "Action": "adb:*",
                "Resource": ["acs:adb:*:*:dbcluster/am-xxx"],
                "Effect": "Allow"
            }
        ]
    }

    只读“am-xxx”实例权限:

    {
        "Version": "1",
        "Statement": [
            {
                "Action": ["adb:DescribeDBClusters", "adb:ListTagResources"],
                "Resource": "acs:adb:*:*:dbcluster/*",
                "Effect": "Allow"
            },
            {
                "Action": "adb:Describe*",
                "Resource": ["acs:adb:*:*:dbcluster/am-xxx"],
                "Effect": "Allow"
            }
        ]
    }

    若子账号需要管理或只读多个实例,在脚本的"Resource": ["acs:adb:*:*:dbcluster/am-xxx"] 中增加相应的实例即可,例如 "Resource": ["acs:adb:*:*:dbcluster/am-xxx", "acs:adb:*:*:dbcluster/am-yyy"]

    权限策略创建完成后,将权限策略授权给对应子账号即可。

更多操作

当RAM子账号不再需要某些权限或离开组织时,您可以将这些权限移除或者删除RAM子账号,请参见为RAM用户移除权限以及删除RAM用户