在ECS上通过委托的临时安全凭证访问OBS
应用场景
假如您是一位开发者,使用OBS SDK开发了一个应用程序,这个应用程序运行在ECS实例上,应用程序的代码中涉及调用OBS API。因为OBS要求访问请求方出示访问凭证,所以您的API调用将会面临提供访问凭证的问题。
访问凭证按照时效性可分为永久凭证和临时凭证,相较于永久性访问凭证,例如用户名和密码,临时安全凭证因为有效期短且刷新频率高,所以安全性更高。因此,您的应用程序若想要以更安全的方式访问云服务,需要获取临时安全凭证,而IAM的委托功能,则支持通过ECS委托获取临时安全凭证。

如图1所示,因为OBS服务要求访问请求方提供访问凭证,所以应用程序需要获得委托的临时的AK、SK。应用程序与ECS元数据服务通信,ECS元数据服务再与IAM通信,拿到临时AK、SK后返回给应用程序。然后,应用程序将临时AK、SK作为访问凭证出示给OBS服务,OBS服务收到请求后,先校验访问凭证是否合法,凭证通过校验后,ECS实例上的应用程序才能访问OBS。
解决方案
针对以上应用场景,可使用IAM对ECS云服务的委托来获取临时安全凭证。在IAM上对ECS云服务授权,并对应用程序所在的ECS实例进行授权委托管理。ECS实例获得委托权限之后,应用程序可申请指定委托的临时安全凭证,从而以临时安全凭证为凭证安全访问华为云资源。详细方案如下:
- 创建ECS云服务委托。账号在IAM控制台创建委托,指定委托对象为ECS云服务。委托创建时,选择权限策略,选择可访问的资源范围,不同的委托对应不同的权限策略。
- ECS实例配置委托。在ECS实例的配置项中选择上一步创建的委托,一个ECS实例只可以选择一个委托。
- 获取委托的临时安全凭证。ECS实例配置了委托参数后,就获得了委托权限。此时,ECS实例上运行的应用程序可获取委托的临时安全凭证。拥有临时安全凭证的应用程序可与OBS进行交互,交互行为遵循账号授予的权限策略和资源使用范围。
操作流程
实施步骤
如图3所示,配置ECS弹性云服务器委托分为创建ECS云服务委托、ECS实例配置委托、获取委托的临时安全凭证三步。详细步骤如下:
步骤一:创建ECS云服务委托
- 管理员进入IAM控制台创建委托界面。
- 在创建委托页面,设置“委托名称”
- “委托类型”选择“云服务”,在“云服务”中选择“弹性云服务器 ECS 裸金属服务器 BMS”。 图4 创建委托
- 选择“持续时间”。
- (可选)填写“委托描述”。建议填写描述信息。
- 单击“完成”。
- 单击“下一步”,进入给委托授权页面。
- 在授权的确认弹窗中,单击“立即授权”。
- 勾选需要授予委托的权限,此处以勾选“OBS OperateAccess”权限为例。
- 单击“下一步”,选择权限的作用范围,此处以勾选“所有资源”为例。
- 单击“确定”,委托创建完成。
- 等待10~15分钟后,委托授权生效。
步骤二:为ECS实例配置委托
- 若ECS实例未创建,则参考自定义购买弹性云服务器,购买并配置ECS云服务器,在高级配置过程中,单击下拉列表选择步骤一:创建ECS云服务委托创建的委托。 图5 选择委托
- 若ECS实例已创建,可按照如下流程配置ECS实例委托:
- 进入ECS产品页,单击ECS实例名,进入配置页面。 图6 单击ECS实例名
- 管理信息栏目下,单击
,为ECS实例选择委托。 图7 为ECS实例选择委托
- 根据委托名选择步骤1创建的委托。 图8 选择委托
- 单击
,完成配置
步骤三:OBS Java SDK获取委托的临时访问凭证访问OBS
- 下载并安装OBS Java SDK。
- 创建OBS SDK客户端并初始化,使用EcsObsCredentialsProvider从ECS服务器自动获取临时访问密钥,该访问凭证会定期自动刷新。了解更多SDK初始化信息请参见初始化Java SDK。
// endPoint以北京四为例,其他地区请按实际情况填写。 String endPoint = "https://obs.cn-north-4.myhuaweicloud.com"; // 创建ObsClient实例 ObsClient obsClient = new ObsClient(new EcsObsCredentialsProvider(), endPoint); // 使用访问OBS // 关闭obsClient obsClient.close();
- 使用OBS客户端正常调动OBS SDK接口,详见OBS Java SDK接口。