在Flexus L实例上如何通过委托的临时访问密钥访问其他云服务?
应用场景
假如您是一位开发者,开发了一个应用程序,这个应用程序运行在L实例上,应用程序的代码中涉及调用API访问华为云服务。此时,因为华为云服务要求访问请求方出示访问凭证,所以您的API调用将会面临提供访问凭证的问题。
访问凭证按照时效性可分为永久凭证和临时凭证,相较于永久性访问凭证,例如用户名和密码,临时访问密钥因为有效期短且刷新频率高,所以安全性更高。因此,您的应用程序若想要以更安全的方式访问云服务,需要获取临时访问凭证,而IAM的委托功能,则支持通过委托获取临时访问密钥。
如图1所示,以访问数据库服务举例。因为数据库服务要求访问请求方提供访问凭证,所以应用程序需要获得委托的临时访问密钥AK、SK。应用程序与元数据服务通信,元数据服务再与IAM通信,拿到临时AK、SK后返回给应用程序。然后,应用程序将临时AK、SK作为访问凭证出示给数据库服务,数据库服务收到请求后,先校验访问凭证是否合法,凭证通过校验后,L实例上的应用程序才能访问数据库服务。
解决方案
针对以上应用场景,可使用IAM对云服务的委托来获取临时访问密钥。在IAM上对云服务授权,并对应用程序所在的L实例进行授权委托管理。L实例获得委托权限之后,应用程序可申请指定委托的临时访问密钥,从而以临时访问密钥为凭证安全访问华为云资源。详细方案如下:
- 创建云服务委托。账号在IAM控制台创建委托。委托创建时,选择权限策略,选择可访问的资源范围,不同的委托对应不同的权限策略。
- 调用更新云服务器元数据APIAPI为L实例配置委托。
- 获取委托的临时凭证。L实例配置了委托参数后,就获得了委托权限。此时,L实例上运行的应用程序可获取委托的临时访问密钥AK、SK。拥有临时访问密钥的应用程序可与华为云服务进行交互,交互行为遵循账号授予的权限策略和资源使用范围。
操作步骤
- 管理员创建云服务委托。
- 管理员登录统一身份认证服务控制台。
- 在统一身份认证服务的左侧导航窗格中,选择“委托”页签,单击“创建委托”。
- 在创建委托页面,设置“委托名称”
- “委托类型”选择“云服务”,L实例在创建委托时对应云服务为“弹性云服务器 ECS 裸金属服务器 BMS”。
图2 创建委托
- 选择“持续时间”。
- (可选)填写“委托描述”。建议填写描述信息。
- 单击“完成”。
- 在授权的确认弹窗中,单击“立即授权”。
- 勾选需要授予委托的权限,单击“下一步”,选择权限的作用范围,给委托授权。
- 单击“确定”,委托创建完成。
- 管理员或拥有L实例权限的IAM用户为L实例配置委托。
L实例支持通过更新云服务器元数据API为L实例配置委托,更新metadata中agency_name字段为新的委托名称。
图3 在线调试配置委托
表1 调用API配置委托相关参数 参数
说明
示例
Region
区域。
请根据L实例所在区域选择Region。
华北-北京四
project_id
项目ID。
获取方法请参见获取项目ID。
2b31ed520xxxxxxebedb6e57xxxxxxxx
server_id
L实例云主机ID。获取方式请参见Flexus L实例的ID和实例中云服务器ID在哪里查看?
e6b99563-xxxx-xxxx-xxxx-1820d4fd2a67
metadata
用户自定义metadata键值对。
元数据的数据结构可参见数据结构(创建云服务器)中的“创建云服务器的metadata字段数据结构说明”部分。此处更新metadata中agency_name字段为新的委托名称。
键:agency_name
值:L_test
如果上一步创建的委托名称为“L_test”,则请求示例如下:
{ "metadata": { "agency_name": "L_test" } } - 应用程序获取临时凭证。
运行在L实例上的应用程序调用获取委托临时凭证的API,即可获得临时访问密钥,之后可使用该密钥访问其他的华为云服务。AK、SK获取方法如下,如需了解详情,可参见元数据获取。
- 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
L实例会为您自动轮换这些临时凭证,从而确保每次申请的临时凭证安全、有效。
