在使用错误诊断工具时,可能会遇到无权限查询其他账号的API诊断信息的情况。这将影响对API错误原因的分析及解决方案的获取。本文将介绍如何通过账号授权,以获取查询其他账号API诊断信息的权限。
同一阿里云账号内
您可以为需要查看API诊断信息的RAM用户授予相应权限,以便其能够查看其他RAM用户或RAM角色的API诊断信息。
步骤一:创建自定义权限策略
-
使用主账号或者具有RAM管理权限的RAM用户登录RAM 访问控制。
-
在左侧导航栏,选择权限管理,单击权限策略。
-
在权限策略页面,单击创建权限策略。
-
在创建权限策略页面,单击脚本编辑页签。
脚本编辑器中显示默认的权限策略 JSON 模板,结构为:
Version为"1",Statement数组包含一个对象,其中Effect为"Allow",Action和Resource为空数组,Condition为空对象。 -
复制下面权限策略内容,单击确定。
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "openapiexplorer:GetRequestLog", "ram:DecodeDiagnosticMessage" ], "Resource": "*" } ] }说明该权限策略允许用户查看阿里云账号下所有的API调用日志及无权限访问的详细信息。
-
输入权限策略名称和备注,单击确定。
步骤二:为RAM用户授权
您可以任选以下一种方式为RAM用户授权:
-
给RAM用户授权的操作步骤,请参见管理RAM用户的权限。
-
给RAM用户组授权的操作步骤,请参见为RAM用户组授权
步骤三:查看API诊断结果
访问OpenAPI问题诊断,输入待查询的RequestId,单击诊断。
诊断结果显示云产品为云服务器 ECS,ErrorCode 为 Forbidden.RAM,ErrorMessage 提示 RAM 用户未被授权操作指定资源。诊断详情表明操作身份为 RAM 用户,鉴权操作为 ecs:ModifyInstanceAttribute,权限判定为权限不足。解决方案建议联系管理员授予相应系统策略,如 AliyunECSFullAccess、AliyunECSReadOnlyAccess 等,或创建自定义策略。
不同阿里云账号之间
当需要查看其他阿里云账号的API诊断信息时,您可以通过角色扮演的方式获得相应权限。
账号A:调用API报错的账号。
账号B:需查看API诊断信息的账号。
-
账号A创建RAM角色,并授权允许账号B扮演。
-
账号B创建RAM用户,并授权该RAM用户进行角色扮演。
-
账号B通过RAM用户扮演账号A所提供的RAM角色,即可在错误诊断工具中成功完成跨账号API诊断信息的查询。
步骤一:账号A创建RAM角色并授权
-
创建RAM角色
使用账号A登录RAM控制台,创建一个信任主体类型为云账号的RAM角色。更多信息,请参见创建可信实体为阿里云账号的RAM角色。
说明在创建角色页面信任主体名称处,选择其他云账号并填入账号B的账号ID(UID)。
-
创建自定义权限策略
具体操作步骤请参考步骤一:创建自定义权限策略。
-
为RAM角色授权
为RAM角色授予步骤2创建的自定义权限策略,具体操作,请参见管理RAM角色的权限。
步骤二:账号B创建RAM用户并授权
-
创建RAM用户
使用账号B登录RAM控制台,创建一个RAM用户。关于如何创建RAM用户,请参见创建RAM用户。
说明为了账号安全,建议您根据实际情况为RAM用户只配置一种访问方式,将控制台访问和程序访问分离,避免混用。
本示例中,登录名称设置为
GetApiLogUser,显示名称设置为"用于查询其他阿里云账号的API调用日志",访问方式同时勾选控制台访问和使用永久 AccessKey 访问。 -
为RAM用户授权
在扮演RAM角色之前,需要为RAM用户授予扮演RAM角色的权限。使用账号B为该RAM用户授予
AliyunSTSAssumeRoleAccess权限,以允许该RAM用户扮演所有RAM角色。有关如何为RAM用户授权的详细信息,请参见管理RAM用户的权限。说明如果希望该RAM用户仅能扮演指定的RAM角色,具体操作,请参见RAM角色和STS Token常见问题。
步骤三:扮演RAM角色并查看API诊断信息
-
使用账号B创建的RAM用户访问RAM用户登录页进行登录。
-
将鼠标悬停在右上角头像的位置,单击切换身份。
-
在角色切换页面,输入相关信息后,请单击提交进行登录。本示例输入的值为账号A的账号ID(UID)和RAM角色名称。
-
查看API诊断信息。
访问OpenAPI问题诊断,输入待查询的RequestId,单击诊断。
诊断结果显示云产品为云服务器 ECS,ErrorCode 为
Forbidden.RAM,ErrorMessage 为User not authorized to operate on the specified resource, or this API doesn't support RAM.。诊断详情表明基于身份策略(资源组级)未授权允许执行操作,权限判定为权限不足,操作身份为 RAM 用户,鉴权操作为ecs:ModifyInstanceAttribute。当前登录身份为 GetApiLogRole(RAM 用户)。