如何自动为企业级分布式应用服务ECS实例添加访问ACM所需的RAM角色。企业级分布式应用服务EDAS借助ECS实例RAM角色,可实现无需配置AccessKey(AK)即可访问ACM,从而提高安全性。典名科技为您提供借助EDAS应用的挂载脚本能力,并在扩容ECS实例到应用中的同时,自动为ECS实例添加访问ACM所需的RAM角色。
背景信息
之前,当部署在ECS实例中的应用程序需要访问ACM,则必须将AccessKey以配置文件或其他形式保存在ECS实例中,这时会在一定的程度上增加了AK管理的复杂性,而且降低了AK的保密性。访问密钥AccessKey(AK)相当于登录密码,只是其使用的场景各不同。AccessKey是用于程序方式调用云服务API,从而登录密码于登录控制台。如果您不是需要调用API,就不需要创建AccessKey。
就现在,借助实例RAM角色允许您将一个角色关联到ECS实例,在实例内部基于STS(SecurityTokenService)临时凭证访问其他云产品的API,临时凭证将会周期性更新。即可保证云账号AccessKey安全,还可d借助访问控制RAM实现精细化控制和权限的管理。您可以将RAM角色和ECS实例关联起来,然后将RAM角色名称告知ACMSDK(版本1.0.8及以上),此后无需配置AK即可访问ACM。另借助访问控制(RAM)是阿里云提供的管理用户身份与资源访问权限的服务。您可通过角色和授权策略实现不同实例对ACM具有不同访问权限的目的。例,如果配置只读策略,关联了该角色的ECS就只能读取ACM的配置,从而无法新增或修改ACM配置。
前提条件
已开通访问控制(RAM),访问控制(RAM)为免费产品,只要经过实名认证的阿里云账号就可以直接使用,该产品暂不支持关闭。实名认证的详情请参见:个人实名认证、企业实名认证。
步骤一:创建RAM角色并配置授权策略
云账号登录RAM控制台。
在左侧导航栏,单击RAM角色管理。
单击创建RAM角色,选择可信实体类型为阿里云服务,单击下一步。
选择角色类型,输入角色名称和备注,选择受信服务为云服务器,然后单击完成。
在RAM角色名称列,找到刚创建的RAM角色。
在操作列单击添加权限。
在添加权限对话框中,通过关键词搜索授权策略AliyunACMFullAccess,并单击该授权策略将其添加至右侧的已选授列表,然后单击确定。
说明如果需要用到加解密配置功能,则还要添加AliyunKMSCryptoAdminAccess授权策略。
此时,该角色已具备ACM的所有操作权限。
步骤二:创建权限策略
在左侧导航栏的权限管理菜单下,单击权限策略管理。
单击创建权限策略。
填写策略名称为AttachACMRamRoleToECSPolicy,并填写备注。
配置模式选择脚本配置,在策略内容文本框内输入以下内容:
{
"Statement": [
{
"Effect": "Allow",
"Action": "ecs:AttachInstanceRamRole",
"Resource": "*"
},
{
"Effect": "Allow",
"Action": "ecs:DescribeInstanceRamRole",
"Resource": "*"
},
{
"Effect": "Allow",
"Action": "ram:*",
"Resource": "acs:ram:*:<替换成您的主账号id>:role/<替换成< span="">步骤一:创建RAM角色并配置授权策略中创建的角色名称>"
}
],
"Version": "1"
}
单击确定。
步骤三:创建RAM用户并添加授权
在左侧导航栏的人员管理菜单下,单击用户。
单击创建用户。
说明单击添加用户,可一次性创建多个RAM用户。
输入登录名称和显示名称。
在访问方式区域下,选择编程访问,然后单击确定。
在用户信息页面会显示创建用户的AccessKeyID和AccessKeySecret,请记录下来供后续步骤使用并妥善保管。
在用户登录名称/显示名称列表下,找到目标RAM用户。
单击添加权限,被授权主体会自动填入。
在权限策略名称右侧的输入框内,输入步骤二:创建权限策略中生成的策略名称。
单击确定,然后关闭右侧面板。
步骤四:通过挂载脚本为ECS实例授予RAM角色
登录EDAS控制台。
在左侧导航栏中选择应用管理>应用列表,在顶部菜单栏选择地域并在页面上方选择命名空间,然后在应用列表页面单击具体的应用名称。
在应用的基本信息页签的应用设置区域单击编辑,然后在下拉列表中单击挂载脚本。
在挂载脚本对话框中单击展开准备实例脚本
在文本框中输入以下脚本,然后单击修改。
注意以下脚本含有您在步骤三:创建RAM用户并添加授权中创建的子账号的访问密钥,请一定要妥善保管。
{
"Statement": [
{
"Effect": "Allow",
"Action": "ecs:AttachInstanceRamRole",
"Resource": "*"
},
{
"Effect": "Allow",
"Action": "ecs:DescribeInstanceRamRole",
"Resource": "*"
},
{
"Effect": "Allow",
"Action": "ram:*",
"Resource": "acs:ram:*:<替换成您的主账号id>:role/<替换成< span="">步骤一:创建RAM角色并配置授权策略中创建的角色名称>"
}
],
"Version": "1"
}
然后该脚本执行后会将会绑定到扩容的ECS的实例上面。