开发者社区> 玄岳> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

ECS实例RAM角色实践

简介:
+关注继续查看

ECS实例RAM角色快速入门

概述

以往部署在ECS实例中的应用程序如果需要访问阿里云其他云产品的API,通常需要借助于AccessKeyId和AccessKeySecret(下文简称AK)来实现。AK是用户访问阿里云API的密钥,具有相应账户的完整权限。但是为了方便应用程序对AK的管理,用户通常需要将AK保存在应用程序的配置文件中或以其他方式保存在实例中。这在一定程度上增加了AK管理上的复杂性且降低了AK的保密性,尤其是对有多地域一致性部署需求的用户,AK将随着镜像及镜像创建的实例扩散出去。在需要更换AK时,也需要逐台实例(和镜像)进行更新和重新部署。此外,使用AK虽然简单,但AK的权限过大,无法做到精细的权限控制。

现在借助于ECS实例RAM角色,我们可以将RAM角色和ECS实例关联起来,实例内部的应用程序则通过STS临时凭证访问其他云产品的API。其中临时凭证由系统自动生成和更新,应用程序可以通过访问实例元数据的指定URL获取临时凭证,而无须特别的管理。同时借助于RAM,用户可以通过对角色和授权策略的管理,达到不同实例对不同云产品或相同云产品具有各自访问权限的目的。

本文接下来将详细介绍ECS实例使用RAM角色的正确姿势,为了方便读者随本篇样例快速入门,全文将基于OpenAPI Explorer操作(OpenAPI Explorer将各产品的API及参数以可视化的方式展现出来,并能自动生成Java,Python等SDK的样例代码)。具体分为以下几个步骤:

  1. 通过RAM创建角色,并配置授权策略
  2. 指定RAM角色创建ECS实例
  3. 在实例内部访问实例元数据URL获取STS临时凭证
  4. 基于临时凭证,使用Python SDK访问OSS

注:OpenAPI Explorer通过已登录用户信息获取当前账号临时AK,对当前账号线上资源发起线上资源操作,请小心操作。同时创建实例操作也会产生一定的费用!操作完成后请及时释放实例。

创建RAM角色&配置策略

  1. 创建RAM角色。找到OpenAPI Explorer RAM产品下CreateRole API。其中RoleName参数可以根据自己的需要填写,如本文填“RamRoleTest”。AssumeRolePolicyDocument填如下内容,表示该角色为一个服务角色,受信云服务(此处为ECS)可以扮演该角色:
    
    

{
"Statement": [

{
  "Action": "sts:AssumeRole",
  "Effect": "Allow",
  "Principal": {
    "Service": [
      "ecs.aliyuncs.com"
    ]
  }
}

],
"Version": "1"
}

1.png

  1. 创建授权策略。找到CreatePolicy API。其中PolicyName本文填“RamRolePolicyTest”。PolicyDocument填以下内容,表示该角色具有OSS只读权限。
    
    

{
"Statement": [

{
  "Action": [
    "oss:Get\*",
    "oss:List\*"
  ],
  "Effect": "Allow",
  "Resource": "\*"
}

],
"Version": "1"
}

当希望通过子账号创建指定RAM角色的ECS实例时,还需要在上述“Statement”节点中额外增加ECS相关的权限和PassRole权限,如下所示。其中“...”需要替换成具体的ECS RAM Action,或替换成“ecs:*”表示所有Action。


{
  "Action": ...,
  "Resource": "\*",
  "Effect": "Allow"
},
{
  "Action": "ram:PassRole",
  "Resource": "\*",
  "Effect": "Allow"
}


2.png
  1. 为角色附加授权。找到AttachPolicyToRole API。其中PolicyType填“Custom”,PolicyName填第2步创建的“RamRolePolicyTest”,RoleName填第1步创建的“RamRoleTest”。
    3.png

指定角色创建实例

  1. 创建实例。找到OpenAPI Explorer ECS产品下的CreateInstance API,参数可根据实际情况进行填写,主要需要填写的参数有:RegionId、ImageId、ecs.n1.tiny、VSwitchId和RamRoleName。由于ECS实例RAM角色目前只支持VPC实例,所以VSwitchId是必须的,RamRoleName则填之前创建的RamRoleTest。
    5.png
  2. 设置密码和启动实例。从ECS控制台“实例标签页”重置实例密码,并启动实例。

获取STS临时凭证

从ECS控制台远程连接实例,并登陆到实例中。访问http://100.100.100.200/latest/meta-data/ram/security-credentials/RamRoleTest获取STS临时凭证,其中路径最后为实例名。
6.png

基于临时凭证访问OSS

  1. 命令行输入pip install oss2安装OSS python SDK
  2. 执行下述命令进行测试,其中oss2.StsAuth中的前三个参数分别对应于上述URL返回的AccessKeyId、AccessKeySecret和SecurityToken。
import oss2
from itertools import islice

auth = oss2.StsAuth(<AccessKeyId>, <AccessKeySecret>, <SecurityToken>)
bucket = oss2.Bucket(auth, "oss-cn-qingdao.aliyuncs.com", "bozhi-qd")

for b in islice(oss2.ObjectIterator(bucket), 10):
    print(b.key)

7.png

相关文档

  1. 支持RAM的云服务列表
  2. RAM产品文档
  3. RAM中可对ECS资源进行授权的Action
  4. ECS实例元数据
  5. OSS STS授权访问
  6. OSS python SDK管理文件

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
aliyunid阿里云国际站版代充-如何通过 SDK 使用海外云服务器ECS实例详细介绍
开发人员可以通过SDK创建阿里云国际版的海外云服务器ECS实例,下面aliyunid小编将简单介绍了如何通过Java SDK创建海外云服务器ECS实例。
0 0
《ECS全知道(上) 实例+计费》电子版地址
作为阿里云五大基础服务之一,云服务器ECS一直是阿里云的核心产品。为了更好的帮助用户了解ECS以及解决可能遇到的问题,阿里云内容设计中心团队根据丰富的内容设计经验,从各渠道的用户反馈中,总结归纳出了ECS各方面的常见问题,与阿里云开发者社区联合打造了《ECS全知道》上下两册电子手册,《ECS全知道》精准锁定实例与计费,希望可以给正在学习和使用ECS的用户提供一些帮助。
0 0
阿里云2核8G配置云服务器可选实例规格详解及价格整理
阿里云服务器分为多种规格,2核8G配置的云服务器有21种实例规格可选,2核8G配置的阿里云服务器收费标准大多为200元-300元/月,最低收费为171.0/月,最高为2375.0/月,目前2核8G配置的阿里云服务器最低活动价格为58.86元/3个月、941.76元/1年。
0 0
推荐Go语言开源项目:Excelize ,获取阿里云ECS实例监控数据导出到自定义Excel表格(二)
推荐Go语言开源项目:Excelize ,获取阿里云ECS实例监控数据导出到自定义Excel表格(二)
0 0
阿里云4核8G服务器配置可选哪些ECS实例规格?
阿里云4核8G服务器ECS规格可选计算型c7、共享型s6、高主频计算型hfc7、计算型c6、AMD计算型c7a、计算型c8y、ARM计算型c6r及安全增强计算型c7t等规格,ECS实例规格不同CPU、网络带宽、网络收发包PPS、存储IOPS等性能参数也不同,阿里云百科分享阿里云4核8G服务器ECS实例规格及性能参数表:
0 0
阿里云国际版Linux系统的ECS实例内部无法正常解析域名
本文www.123clouds.com介绍阿里云国际版Linux系统的ECS实例内部无法正常解析域名的解决办法。
0 0
阿里云国际版使用自定义镜像创建的ECS实例没有网关
本文www.123clouds.com介绍阿里云国际版使用自定义镜像创建的ECS实例没有网关的处理办法。
0 0
阿里云国际版如何给Windows系统的ECS实例增加安全加固
本文www.123clouds.com介绍阿里云国际版如何给Windows系统的ECS实例增加安全加固的方法。
0 0
阿里云国际版Windows系统的ECS实例访问IIS创建的网站访问提示“Bad Request (Invalid Hostname)”
本文www.123clouds.com介绍阿里云国际版Windows系统的ECS实例访问IIS创建的网站访问提示“Bad Request (Invalid Hostname)”时的解决办法。
0 0
阿里云国际版访问解析到ECS实例上的域名出现跳转
本文www.123clouds.com介绍阿里云国际版访问解析到ECS实例上的域名出现跳转的处理办法。
0 0
+关注
玄岳
云服务器ECS产品经理
文章
问答
来源圈子
更多
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
ECS全知道(上) 实例+计费
立即下载
云服务器ECS内存增强型实例re6全新发布
立即下载
冬季实战营第一期:从零到一上手玩转云服务器
立即下载