对云上应用进行动态身份管理与授权

最近更新时间:2021-07-13 14:18:53

查看PDF

当企业购买了金山云的产品后,应用程序可以通过访问控制(IAM)可以获取到IAM角色的临时安全令牌,从而访问金山云服务。

背景介绍

企业A购买了KEC实例,并计划在KEC实例中部署企业的应用程序。这些应用程序需要使用访问密钥(AccessKey)访问其它云服务API。

有两种做法:

  • 将访问密钥直接嵌入在代码里。
  • 将访问密钥保存在应用程序的配置文件中。

这样会带来两个问题:

  • 保密性问题:如果访问密钥以明文形式存在于KEC实例中,可能会随着快照、镜像及镜像创建出来的实例泄露。
  • 难运维问题:由于访问密钥存在于实例中,如果要更换访问密钥(例如:周期性轮转或切换用户身份),那么需要对每个实例和镜像进行更新并重新部署,这会增加对实例和镜像管理的复杂性。

解决方案

KEC结合IAM提供的访问控制能力,允许给每一个KEC实例配置一个拥有合适权限的IAM角色身份。应用程序通过获取该IAM角色的临时安全令牌来访问云API。

操作流程

步骤一:创建IAM角色并为角色授权

  1. 使用金山云账号创建一个IAM角色。

创建IAM角色时受信实体选择金山云服务,受信服务选择云服务器,即允许KEC扮演该IAM角色来访问金山云资源。

  1. 为IAM角色授权。参考IAM角色授权

如果临时安全令牌权限不足时,您可以根据需要为IAM角色添加相应的权限。权限更新后立即生效,无需重新启动KEC实例。

步骤二:为KEC实例绑定IAM角色

  1. 登录云服务器控制台

被授权的IAM用户才能为KEC实例配置IAM角色,参考系统策略KECAdminFullAccess (提供云主机全部操作管理的权限)。

  1. 在左侧导航菜单,单击实例列表。

  2. 在实例列表中,根据实际需求选择如下操作:

    • 单个实例绑定/解绑IAM角色:在实例列表找到目标实例,选择更多绑定/解绑IAM角色
    • 批量实例绑定/解绑IAM角色:批量选中目标实例,选择更多绑定/解绑IAM角色。(注:仅支持为同批实例绑定同一个IAM角色,不支持批量多角色绑定)
  3. 在绑定/解绑IAM角色弹窗中选择操作类型为绑定,并为实例选择IAM角色。(若无角色请先前往IAM角色列表创建授信实体为金山云服务的IAM角色。)

  4. 单击确定,完成绑定。

您也可以在创建KEC实例时,并在系统配置页面高级选项的实例IAM角色属性中为实例选择已创建好的实例IAM角色或者新建实例IAM角色

步骤三:在实例内部访问实例元数据URL获取STS临时凭证

1.启动KEC,KEC调用STS API AssumeRole去获取该IAM角色的临时安全令牌。
2.STS将临时安全令牌返回给KEC。
3.KEC将通过实例元数据将临时安全令牌传递给KEC实例中的应用程序。
(1)Linux系统
通过实例元数据可以获取临时安全令牌及过期时间等信息。

请求示例
curl http://global.cloudinit.sdns.ksyun.com:8775/latest/iam
返回示例
{ 
<SecretAccessKey>wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY</SecretAccessKey> 
<Expiration>2017-07-15T23:28:33.359Z</Expiration> 
<AccessKeyId>AKIAIOSFODNN7EXAMPLE</AccessKeyId> 
<SecurityToken>V1xxxxxxxxxxxx</SecurityToken>
<IamRoleName>XXXXX</IamRoleName>
}

(2)Windows系统

  • 若安装的windows系统支持powershell和curl命令,则获取临时安全令牌及过期时间等信息的方法同Linux系统。
  • 若安装的windows系统不支持,则可使用其他http请求调试工具,如postman、Chrome插件等(需要自行安装)访问http://global.cloudinit.sdns.ksyun.com:8775/latest/iam获取临时安全令牌及过期时间等信息。

4.应用程序使用临时安全令牌访问金山云API。

文档内容是否对您有帮助?

根本没帮助
文档较差
文档一般
文档不错
文档很好

在文档使用中是否遇到以下问题

内容不全,不深入
内容更新不及时
描述不清晰,比较混乱
系统或功能太复杂,缺乏足够的引导
内容冗长

更多建议

0/200

评价建议不能为空

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

问题反馈