当企业购买阿里云产品后,通过访问控制(RAM),应用程序可以获取RAM角色的临时安全令牌从而访问阿里云。
前提条件
进行操作前,请确保您已经注册了阿里云账号。如还未注册,请先完成账号注册。
背景信息
企业A购买了ECS实例,并计划在ECS中部署企业的应用程序。这些应用程序需要使用访问密钥(AccessKey)访问其它云服务API。
有两种做法:
- 将访问密钥直接嵌入在代码里。
- 将访问密钥保存在应用程序的配置文件中。
这样会带来两个问题:
- 保密性问题:如果访问密钥以明文形式存在于ECS实例中,可能会随着快照、镜像及镜像创建出来的实例泄露。
- 难运维问题:由于访问密钥存在于实例中,如果要更换访问密钥(例如:周期性轮转或切换用户身份),那么需要对每个实例和镜像进行更新并重新部署,这会增加对实例和镜像管理的复杂性。
解决方案
ECS服务结合RAM提供的访问控制能力,允许给每一个ECS实例配置一个拥有合适权限的RAM角色身份。应用程序通过获取该RAM角色的临时安全令牌来访问云API。
操作流程
- 云账号创建一个RAM角色(MyApplicationRole)。
说明 创建RAM角色时受信实体选择阿里云服务,受信服务选择云服务器,即允许云服务ECS扮演该RAM角色来访问阿里云资源。
关于如何创建RAM角色,请参见创建可信实体为阿里云服务的RAM角色。
- 为RAM角色授予合适的权限。
关于如何为RAM角色授权,请参见为RAM角色授权。
说明 如果临时安全令牌权限不足时,您可以根据需要为RAM角色添加相应的权限。权限更新后立即生效,无需重新启动ECS实例。
- 云账号创建一个RAM用户。
- 为RAM用户授予合适的权限。
- 若管理员和操作员是同一人,需要授予RAM用户管理员权限:
AdministratorAccess
。
- 若管理员与操作员职责分离,需要授予RAM用户
PassRole
权限将管理员和操作员区分为不同的RAM用户。
在RAM控制台创建自定义策略,然后将这个自定义策略授权给RAM用户。策略内容如下:
{
"Statement": [
{
"Effect": "Allow",
"Action": "ram:PassRole",
"Resource": "acs:ram:*:*:role/MyApplicationRole"//替换MyApplicationRole为自己的RAM角色名称
}
],
"Version": "1"
}
说明
- 只有被授权的RAM用户才能为ECS实例配置RAM角色,避免RAM角色权限被滥用。
- 如果RAM用户没有管理员权限,仅有管理ECS的权限。在创建ECS实例并配置RAM角色时,ECS服务会强制检查当前RAM用户是否拥有指定RAM角色的
ram:PassRole
权限,否则将无法成功创建ECS实例。
- 启动ECS实例时,配置创建好的RAM角色。
- ECS服务调用STS API AssumeRole去获取该RAM角色的临时安全令牌。
说明 STS服务会验证ECS服务身份及RAM角色的授权类型,验证通过后颁发临时安全令牌。
关于如何通过调用STS API使用RAM角色,请参见通过API使用实例RAM角色。
- STS服务将临时安全令牌返回给ECS服务。
- ECS将通过实例元数据将临时安全令牌传递给ECS实例中的应用程序。
- 若在Linux系统中,通过实例元数据可以获取临时安全令牌及过期时间等信息。请参见使用实例RAM角色访问其他云产品。
请求示例
$ curl http://100.100.100.200/latest/meta-data/ram/security-credentials/MyApplicationRole
返回示例
[root@local ~]# curl http://100.100.100.200/latest/meta-data/ram/security-credentials/MyApplicationRole
{
"AccessKeyId" : "STS.J8XXXXXXXXXX4",
"AccessKeySecret" : "9PjfXXXXXXXXXBf2XAW",
"Expiration" : "2017-06-09T09:17:19Z",
"SecurityToken" : "CAIXXXXXXXXXXXwmBkleCTkyI+",
"LastUpdated" : "2017-06-09T03:17:18Z",
"Code" : "Success"
}
- 若应用程序使用了阿里云SDK,无需在SDK中配置任何访问密钥相关的信息,阿里云SDK将会自动从ECS实例元数据中获取临时安全令牌。请参见配置RamRole实现ECS实例的无AK访问。
说明 临时安全令牌过期时间通常为1小时,有效期内应用程序都能正常访问阿里云API,过期之前ECS服务会自动刷新临时安全令牌。
- 应用程序使用临时安全令牌访问阿里云API。
说明 除ECS外,阿里云其它计算类服务(例如:函数计算、MaxCompute)也提供了类似的RAM角色访问能力,以帮助用户解决云上应用的动态身份管理与授权的问题。
在文档使用中是否遇到以下问题
更多建议
匿名提交