我们经常会有需要在阿里云的ECS中访问各类OSS资源,以存取在ECS中需要使用到的各种文件。
通常,我们的做法是:
把阿里云账号的Access Key ID及Access Key Secret(以下简称AK)设置在ECS中,通过这个AK来调用OSS的OPENAPI以达到从OSS中存取各类文件的目的。
但是,这种做法当前存在下列问题:
1)
直接存储在ECS中的AK可能会因为各种原因出现泄漏的情况
2)
AK的权限较大,无法更细致的限制当前ECS的具体权限,比如只允许当前的ECS以只读的方式访问某个Bucket
3)
假设AK因为某些原因需要变更,那么您需要逐个实例手动进行修改
为解决上述问题,阿里云ECS推出了“ECS实例RAM角色”功能,使用该功能您可以安全快捷的在阿里云ECS中访问各类阿里云的云资源:
1)
ECS实例RAM角色所提供的临时安全token(STS Token)可让您方便的访问已授权的云资源
2)
STS Token会每六小时内刷新一次,大大的降低泄露所带来的风险
3) STS Token所拥有的权限完全受您控制,您可以随时进行权限的更改/维护
“ECS实例RAM角色”适用于下述各类场景:
1)
需要在当前ECS实例中读写指定OSS资源的
2)
需要在当前ECS中获取账户下ECS资源的各种信息的,如:获取账号下其他ECS资源的外网IP信息
3)
需要在当前ECS中自定义运维策略的:如定时开启/关闭指定的ECS实例
4)
需要在当前ECS中获取RDS资源相关信息的
5)
其他各类需要在ECS中完成的对各类阿里云资源的相关操作
下面以“在ECS中只读访问所有OSS资源”为例,说明ECS实例RAM角色具体的使用步骤:
1)
登录阿里云访问控制控制台,进入角色管理,点击“新建角色“
2)
选择“服务角色”->“ECS云服务器”
3)
输入角色名称,这里我们设置为“OSSReadOnly”,点击“创建”
4)
点击“授权”->“编辑授权策略”,对角色进行授权
5)
选择“AliyunOSSReadOnlyAccess”,并点击“确定”。至此“ECS实例RAM角色”就创建并授权好了。
6)
进入阿里云ECS购买页面,在“RAM角色”中选择刚刚创建的“OSSReadOnly”,设定其他购买选项后,您购买的ECS实例即拥有了“OSSReadOnly”的角色
7)
远程连接进入实例,使用metadata(curl
http://100.100.100.200/latest/meta-data/ram/security-credentials/OSSReadOnly)即可获得该角色所提供的STS Token信息:
8)
使用所获取的Token,在ECS中利用OSS的OPENAPI来进行OSS信息的读取
说明:
1.
不只是OSS,您还可以通过角色的权限控制,设置ECS在可控权限范围内访问阿里云的其他各类云资源
2.
若要为已创建的实例赋予RAM角色,您可在“ECS控制台的实例列表”中进行操作
3.
更多关于ECS实例角色的文档,请参考阿里云在线帮助:
a)
中文版
i. 关于ECS实例RAM角色
ii. 通过控制台使用实例RAM角色
iii. 通过OPENAPI使用实例RAM角色
iv. 实例RAM角色API实践
b)
英文版
i. 关于ECS实例RAM角色
ii. 通过控制台使用实例RAM角色
iii. 通过OPENAPI使用实例RAM角色
iv. 实例RAM角色API实践