借助 ECS 实例 RAM 角色,可实现无需配置 AccessKey(AK)即可访问 ACM,从而提高安全性。本文介绍了借助 EDAS 应用的挂载脚本能力,在扩容 ECS 实例到应用中时,自动为 ECS 实例添加访问 ACM 所需的 RAM 角色。

背景信息

以往,如果部署在 ECS 实例中的应用程序需要访问 ACM,则必须将 Access Key(AK)以配置文件或其他形式保存在 ECS 实例中,这在一定程度上增加了 AK 管理的复杂性,并且降低了 AK 的保密性。

现在,借助 ECS 实例 RAM 角色,您可以将 RAM 角色和 ECS 实例关联起来,然后将 RAM 角色名称告知 ACM SDK (版本 1.0.8 及以上),此后无需配置 AK 即可访问 ACM。另外,借助 RAM(访问控制),您可以通过角色和授权策略实现不同实例对 ACM 具有不同访问权限的目的。例如,如果配置只读策略,关联了该角色的 ECS 就只能读取 ACM 的配置,而无法新增或修改 ACM 配置。

前提条件

已开通访问控制(RAM),相关操作请参见:开通方法

步骤一:创建 RAM 角色并配置授权策略

  1. 云账号登录RAM控制台
  2. 在左侧导航栏,单击RAM角色管理
  3. 单击新建RAM角色,选择可信实体类型为阿里云服务,单击下一步
  4. 输入角色名称备注
  5. 选择受信服务为云服务器
  6. 单击完成
  7. RAM角色名称列表下,找到刚创建的RAM角色。
  8. 操作列单击添加权限
  9. 添加权限对话框中,通过关键词搜索授权策略 AliyunACMFullAccess,并单击该授权策略将其添加至右侧的已选授列表,然后单击确定
    说明 如果需要用到加解密配置功能,则还要添加 AliyunKMSCryptoAccess 授权策略。
    此时,该角色已具备 ACM 的所有操作权限。

步骤二:创建权限策略

  1. 在左侧导航栏的权限管理菜单下,单击权限策略管理
  2. 单击新建权限策略
  3. 填写策略名称AttachACMRamRoleToECSPolicy,并填写备注
  4. 配置模式选择脚本配置,在策略内容文本框内输入以下内容:
    {
        "Statement": [
            {
                "Effect": "Allow",
                "Action": "ecs:AttachInstanceRamRole",
                "Resource": "*"
            },
            {
                "Effect": "Allow",
                "Action": "ecs:DescribeInstanceRamRole",
                "Resource": "*"
            },
            {
                "Effect": "Allow",
                "Action": "ram:*",
                "Resource": "acs:ram:*:<替换成您的主账号ID>:role/<替换成步骤一:创建 RAM 角色并配置授权策略中创建的角色名称>"
            }
        ],
        "Version": "1"
    }
  5. 单击确定

步骤三:创建 RAM 用户并添加授权

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

步骤四:通过挂载脚本为 ECS 实例授予 RAM 角色

  1. 登录 EDAS 控制台,在页面左上角选择所需地域。
  2. 在左侧导航栏中选择应用管理 > 应用列表 ,在应用列表页面单击具体的应用名称。
  3. 在应用的基本信息页签的应用设置区域单击编辑,然后在下拉列表中单击挂载脚本
  4. 挂载脚本对话框中单击展开准备实例脚本
  5. 在文本框中输入以下脚本,然后单击修改
    注意 以下脚本含有您在步骤三:创建 RAM 用户并添加授权中创建的子账号的访问密钥,请妥善保管。
    #!/bin/sh
    fileURL='https://edas-public.oss-cn-hangzhou.aliyuncs.com/samples/acm/attachAcmRamRole.sh'
    file=/tmp/attachAcmRamRoleToEcs.sh
    wget "$fileURL" -O "$file" &>/dev/null
    chmod +x "$file"
    #<accessKeyId>替换成子账号对应的accessKeyId
    #<accessSecret>替换成子账号对应的accessSecret
    #<ecsRamRoleForACM>替换成步骤一:创建 RAM 角色并配置授权策略中所创建的角色名称。
    bash "$file" <accessKeyId> <accessSecret> <ecsRamRoleForACM>

    该脚本执行后会将 <ecsRamRoleForACM> 绑定到扩容的 ECS 实例上。

更多信息