
# 在Flexus L实例上如何通过委托的临时访问密钥访问其他云服务？
#### 应用场景
假如您是一位开发者，开发了一个应用程序，这个应用程序运行在L实例上，应用程序的代码中涉及调用API访问华为云服务。此时，因为华为云服务要求访问请求方出示访问凭证，所以您的API调用将会面临提供访问凭证的问题。
访问凭证按照时效性可分为永久凭证和临时凭证，相较于永久性访问凭证，例如用户名和密码，临时访问密钥因为有效期短且刷新频率高，所以安全性更高。因此，您的应用程序若想要以更安全的方式访问云服务，需要获取临时访问凭证，而IAM的委托功能，则支持通过委托获取临时访问密钥。
图1应用程序获取临时访问密钥   
![](https://support.huaweicloud.com/flexusl_faq/zh-cn_image_0000002505257617.png "点击放大")
如[图1]所示，以访问数据库服务举例。因为数据库服务要求访问请求方提供访问凭证，所以应用程序需要获得委托的临时访问密钥AK、SK。应用程序与元数据服务通信，元数据服务再与IAM通信，拿到临时AK、SK后返回给应用程序。然后，应用程序将临时AK、SK作为访问凭证出示给数据库服务，数据库服务收到请求后，先校验访问凭证是否合法，凭证通过校验后，L实例上的应用程序才能访问数据库服务。
#### 解决方案
针对以上应用场景，可使用IAM对云服务的委托来获取临时访问密钥。在IAM上对云服务授权，并对应用程序所在的L实例进行授权委托管理。L实例获得委托权限之后，应用程序可申请指定委托的临时访问密钥，从而以临时访问密钥为凭证安全访问华为云资源。详细方案如下：
1. 创建云服务委托。账号在IAM控制台创建委托。委托创建时，选择权限策略，选择可访问的资源范围，不同的委托对应不同的权限策略。
2. 调用[更新云服务器元数据API](https://console.huaweicloud.com/apiexplorer/#/openapi/ECS/doc?api=UpdateServerMetadata)API为L实例配置委托。
3. 获取委托的临时凭证。L实例配置了委托参数后，就获得了委托权限。此时，L实例上运行的应用程序可获取委托的临时访问密钥AK、SK。拥有临时访问密钥的应用程序可与华为云服务进行交互，交互行为遵循账号授予的权限策略和资源使用范围。
 
#### 操作步骤
1. 管理员创建云服务委托。 
   1. 管理员登录[统一身份认证服务控制台](https://console.huaweicloud.com/iam?locale=zh-cn)。
   
   2. 在统一身份认证服务的左侧导航窗格中，选择"委托"页签，单击"创建委托"。
   
   3. 在创建委托页面，设置"委托名称"
   
   4. "委托类型"选择"云服务"，L实例在创建委托时对应云服务为"弹性云服务器 ECS 裸金属服务器 BMS"。
      图2创建委托   
      ![](https://support.huaweicloud.com/flexusl_faq/zh-cn_image_0000002505423767.png "点击放大") 
   
   5. 选择"持续时间"。
   
   6. （可选）填写"委托描述"。建议填写描述信息。
   
   7. 单击"完成"。
   
   8. 在授权的确认弹窗中，单击"立即授权"。
   
   9. 勾选需要授予委托的权限，单击"下一步"，选择权限的作用范围，给委托授权。
   
   10. 单击"确定"，委托创建完成。
   
   
   
   
2. 管理员或拥有L实例权限的IAM用户为L实例配置委托。 
   L实例支持通过[更新云服务器元数据API](https://console.huaweicloud.com/apiexplorer/#/openapi/ECS/doc?api=UpdateServerMetadata)为L实例配置委托，更新metadata中agency_name字段为新的委托名称。
   图3在线调试配置委托   
   ![](https://support.huaweicloud.com/flexusl_faq/zh-cn_image_0000002473261506.png "点击放大")
   表1调用API配置委托相关参数 
   | 参数         | 说明                                                                                                                                                                                                                  | 示例                                                        |
   |:---|:---|:---|
   | Region     | 区域。 请根据L实例所在区域选择Region。                                                                                                                                                        | 华北-北京四                                                    |
   | project_id | 项目ID。 获取方法请参见[获取项目ID](https://support.huaweicloud.com/api-ecs/ecs_01_0016.html)。                                                                                                  | 2b31ed520xxxxxxebedb6e57xxxxxxxx                          |
   | server_id  | L实例云主机ID。获取方式请参见[Flexus L实例的ID和实例中云服务器名称在哪里查看？](https://support.huaweicloud.com/flexusl_faq/faq_01_0003.html)                                                                                                       | e6b99563-xxxx-xxxx-xxxx-1820d4fd2a67                      |
   | metadata   | 用户自定义metadata键值对。 元数据的数据结构可参见[数据结构(创建云服务器)](https://support.huaweicloud.com/api-ecs/zh-cn_topic_0167957246.html)中的"创建云服务器的metadata字段数据结构说明"部分。此处更新metadata中agency_name字段为新的委托名称。 | 键：agency_name 值：L_test |
      
   如果上一步创建的委托名称为"L_test"，则请求示例如下：
   ```
   {
       "metadata": {
           "agency_name": "L_test"
       }
   }
   ```
   
   
3. **应用程序获取临时凭证** 。
   
   运行在L实例上的应用程序调用获取委托临时凭证的API，即可获得临时访问密钥，之后可使用该密钥访问其他的华为云服务。AK、SK获取方法如下，如需了解详情，可参见[元数据获取](https://support.huaweicloud.com/usermanual-ecs/ecs_03_0166.html#section7)。
   - URI
   
   
   /openstack/latest/securitykey
   - 方法
   
   
   支持GET请求
   - 示例
   
   
   Linux操作系统：
   **curl http://169.254.169.254/openstack/latest/securitykey**
   Windows操作系统：
   **Invoke-RestMethod http://169.254.169.254/openstack/latest/securitykey**
   ![](https://support.huaweicloud.com/flexusl_faq/public_sys-resources/note_3.0-zh-cn.png)
   L实例会为您自动轮换这些临时凭证，从而确保每次申请的临时凭证安全、有效。
   
   
 
