# 在ECS上通过委托的临时安全凭证访问OBS
#### 应用场景
假如您是一位开发者，使用OBS SDK开发了一个应用程序，这个应用程序运行在ECS实例上，应用程序的代码中涉及调用OBS API。因为OBS要求访问请求方出示访问凭证，所以您的API调用将会面临提供访问凭证的问题。
访问凭证按照时效性可分为永久凭证和临时凭证，相较于永久性访问凭证，例如用户名和密码，临时安全凭证因为有效期短且刷新频率高，所以安全性更高。因此，您的应用程序若想要以更安全的方式访问云服务，需要获取临时安全凭证，而IAM的委托功能，则支持通过ECS委托获取临时安全凭证。
图1应用程序获取临时安全凭证访问OBS
![](https://support.huaweicloud.com/bestpractice-obs/zh-cn_image_0000002717306858.png "点击放大")
如[图1]所示，因为OBS服务要求访问请求方提供访问凭证，所以应用程序需要获得委托的临时的AK、SK。应用程序与ECS元数据服务通信，ECS元数据服务再与IAM通信，拿到临时AK、SK后返回给应用程序。然后，应用程序将临时AK、SK作为访问凭证出示给OBS服务，OBS服务收到请求后，先校验访问凭证是否合法，凭证通过校验后，ECS实例上的应用程序才能访问OBS。
#### 解决方案
针对以上应用场景，可使用IAM对ECS云服务的委托来获取临时安全凭证。在IAM上对ECS云服务授权，并对应用程序所在的ECS实例进行授权委托管理。ECS实例获得委托权限之后，应用程序可申请指定委托的临时安全凭证，从而以临时安全凭证为凭证安全访问华为云资源。详细方案如下：
1. 创建ECS云服务委托。账号在IAM控制台创建委托，指定委托对象为ECS云服务。委托创建时，选择权限策略，选择可访问的资源范围，不同的委托对应不同的权限策略。
2. ECS实例配置委托。在ECS实例的配置项中选择上一步创建的委托，一个ECS实例只可以选择一个委托。
3. 获取委托的临时安全凭证。ECS实例配置了委托参数后，就获得了委托权限。此时，ECS实例上运行的应用程序可获取委托的临时安全凭证。拥有临时安全凭证的应用程序可与OBS进行交互，交互行为遵循账号授予的权限策略和资源使用范围。
 
图2ECS委托   
![](https://support.huaweicloud.com/bestpractice-obs/zh-cn_image_0000002746985937.png "点击放大")
#### 操作流程
图3在ECS上获取临时访问密钥   
![](https://support.huaweicloud.com/bestpractice-obs/zh-cn_image_0000002727745818.png "点击放大")
#### 实施步骤
如[图3]所示，配置ECS弹性云服务器委托分为创建ECS云服务委托、ECS实例配置委托、获取委托的临时安全凭证三步。详细步骤如下：
 #### 步骤一：创建ECS云服务委托
1. 管理员进入[IAM控制台创建委托界面](https://console.huaweicloud.com/iam/?locale=zh-cn&agencyId=f850724153414d0587ce87493cc9f521#/iam/agencies/create)。
2. 在创建委托页面，设置"委托名称"
3. "委托类型"选择"云服务"，在"云服务"中选择"弹性云服务器 ECS 裸金属服务器 BMS"。 
   图4创建委托   
   ![](https://support.huaweicloud.com/bestpractice-obs/zh-cn_image_0000002727763716.png "点击放大")
   
   
4. 选择"持续时间"。
5. （可选）填写"委托描述"。建议填写描述信息。
6. 单击"完成"。
7. 单击"下一步"，进入给委托授权页面。
8. 在授权的确认弹窗中，单击"立即授权"。
9. 勾选需要授予委托的权限，此处以勾选"OBS OperateAccess"权限为例。
10. 单击"下一步"，选择权限的作用范围，此处以勾选"所有资源"为例。
11. 单击"确定"，委托创建完成。
12. 等待10\~15分钟后，委托授权生效。
 
#### 步骤二：为ECS实例配置委托
- 若ECS实例未创建，则参考[自定义购买弹性云服务器](https://support.huaweicloud.com/usermanual-ecs/ecs_03_7002.html)，购买并配置ECS云服务器，在高级配置过程中，单击下拉列表选择[步骤一：创建ECS云服务委托]创建的委托。
  图5选择委托   
  ![](https://support.huaweicloud.com/bestpractice-obs/zh-cn_image_0000002727754056.png "点击放大") 
- 若ECS实例已创建，可按照如下流程配置ECS实例委托：
1. 进入ECS产品页，单击ECS实例名，进入配置页面。 
   图6单击ECS实例名   
   ![](https://support.huaweicloud.com/bestpractice-obs/zh-cn_image_0000002727603860.png "点击放大")
   
   
2. 管理信息栏目下，单击![](https://support.huaweicloud.com/bestpractice-obs/zh-cn_image_0000002727763718.png)，为ECS实例选择委托。
   
   图7为ECS实例选择委托   
   ![](https://support.huaweicloud.com/bestpractice-obs/zh-cn_image_0000002757323427.png "点击放大")
   
   
3. 根据委托名选择[步骤1]创建的委托。
   
   图8选择委托   
   ![](https://support.huaweicloud.com/bestpractice-obs/zh-cn_image_0000002757243555.png "点击放大")
   
   
4. 单击![](https://support.huaweicloud.com/bestpractice-obs/zh-cn_image_0000002757323429.png)，完成配置
 
#### 步骤三：OBS Java SDK获取委托的临时访问凭证访问OBS
1. [下载并安装OBS Java SDK](https://support.huaweicloud.com/sdk-java-devg-obs/obs_21_0001.html)。
2. 创建OBS SDK客户端并初始化，使用EcsObsCredentialsProvider从ECS服务器自动获取临时访问密钥，该访问凭证会定期自动刷新。了解更多SDK初始化信息请参见[初始化Java SDK](https://support.huaweicloud.com/sdk-java-devg-obs/obs_21_0201.html)。
   
   ```
   // endPoint以北京四为例，其他地区请按实际情况填写。
   String endPoint = "https://obs.cn-north-4.myhuaweicloud.com";
   // 创建ObsClient实例
   ObsClient obsClient = new ObsClient(new EcsObsCredentialsProvider(), endPoint);
   // 使用访问OBS
   // 关闭obsClient
   obsClient.close();
   ```
   
   
3. 使用OBS客户端正常调动OBS SDK接口，详见[OBS Java SDK接口](https://support.huaweicloud.com/sdk-java-devg-obs/obs_21_0401.html)。
 
