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

背景信息

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

现在,借助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. RAM角色名称列,找到刚创建的RAM角色。
  6. 操作列单击添加权限
  7. 添加权限对话框中,通过关键词搜索授权策略AliyunACMFullAccess,并单击该授权策略将其添加至右侧的已选授列表,然后单击确定
    说明 如果需要用到加解密配置功能,则还要添加 AliyunKMSCryptoAdminAccess授权策略。
    此时,该角色已具备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实例上。

更多信息