借助ECS实例RAM角色,可实现无需配置AccessKey(AK)即可访问ACM,从而提高安全性。本文介绍了借助EDAS应用的挂载脚本能力,在扩容ECS实例到应用中时,自动为ECS实例添加访问ACM所需的RAM角色。
背景信息
以往,如果部署在ECS实例中的应用程序需要访问ACM,必须将AccessKey以配置文件或其他形式保存在ECS实例中,这在一定程度上增加了AccessKey管理的复杂性,并且降低了AccessKey的保密性。创建AccessKey的具体操作,请参见创建AccessKey。
现在,借助ECS实例RAM角色,您可以将RAM角色和ECS实例关联起来,然后将RAM角色名称告知ACM SDK(1.0.8及以上版本),此后无需配置AccessKey即可访问ACM。另外,借助RAM(访问控制),您可以通过角色和授权策略实现不同实例对ACM具有不同访问权限的目的。例如,如果配置只读策略,关联了该角色的ECS就只能读取ACM的配置,而无法新增或修改ACM配置。
前提条件
已开通访问控制(RAM),相关操作,请参见:计费方法。
步骤一:创建RAM角色并配置授权策略
- 使用阿里云账号登录RAM控制台。
- 在左侧导航栏,选择 。
- 在角色页面,单击目标RAM角色操作列的添加权限。
- 在添加权限面板,为RAM角色添加权限。
- 单击确定。
- 单击完成。
说明 您可以在添加权限对话框中,通过关键词搜索授权策略
AliyunACMFullAccess
,并单击该授权策略将其添加至右侧的已选授列表,然后单击确定添加权限。如果需要用到加解密配置功能,则还要添加AliyunKMSCryptoAdminAccess
授权策略。此时,该角色已具备ACM的所有操作权限。
步骤二:创建权限策略
- 在左侧导航栏,选择 。
- 在权限策略页面,单击创建权限策略。
- 在创建权限策略页面选择脚本编辑,然后在策略文档区域输入测试服务的自定义权限策略,然后单击下一步。
测试服务的自定义权限策略内容如下:
{ "Statement": [ { "Effect": "Allow", "Action": "ecs:AttachInstanceRamRole", "Resource": "*" }, { "Effect": "Allow", "Action": "ecs:DescribeInstanceRamRole", "Resource": "*" }, { "Effect": "Allow", "Action": "ram:*", "Resource": "acs:ram:*:<替换成您的主账号ID>:role/<替换成您创建的角色名称>" } ], "Version": "1" }
- 填写策略名称为AttachACMRamRoleToECSPolicy,并填写备注等基本信息。创建成功后,界面会提示自定义权限策略新建成功。
- 单击确认。
步骤三:创建RAM用户并添加授权
- 在左侧导航栏,选择 。
- 在用户页面,单击创建用户。
- 在创建用户页面的用户账号信息区域,设置用户基本信息。
- 登录名称:可包含英文字母、数字、半角句号(.)、短划线(-)和下划线(_),最多64个字符。
- 显示名称:最多包含128个字符。
- 可选:标签:您可以单击,然后输入标签键和标签值。为RAM用户绑定标签,便于后续基于标签的用户管理。
说明 单击添加用户,可以批量创建多个RAM用户。 - 在访问方式区域下,选择Open API 调用访问,然后单击确定,RAM会自动为RAM用户创建AccessKey(API访问密钥),请记录下来供后续步骤使用并妥善保管。
- 在用户页面,单击目标RAM用户操作列的添加权限。
- 在添加权限面板设置授权范围。
- 在权限策略名称上方的输入框内,输入生成的策略名称。策略名称的具体信息,请参见步骤二:创建权限策略。
- 单击确定。
步骤四:通过挂载脚本为ECS实例授予RAM角色
- 登录EDAS控制台。
- 在左侧导航栏,单击应用列表页面单击具体的应用名称。 ,在顶部菜单栏选择地域,并在页面上方选择微服务空间,然后在
- 在应用的基本信息页签的应用设置区域,单击挂载脚本。
- 在挂载脚本对话框中单击展开准备实例脚本。
- 在文本框中输入以下脚本,然后单击修改。重要 以下脚本含有您创建的子账号的访问密钥,请妥善保管。访问密钥的具体信息,请参见步骤三:创建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>替换成子账号对应的AccessKey ID。 #<accessSecret>替换成子账号对应的AccessKey Secret。 #<ecsRamRoleForACM>替换成您所创建的角色名称。 bash "$file" <accessKeyId> <accessSecret> <ecsRamRoleForACM>
该脚本执行后会将<ecsRamRoleForACM>绑定到扩容的ECS实例上。