跨账号API错误诊断授权

更新时间:
复制为 MD 格式

在使用错误诊断工具时,可能会遇到无权限查询其他账号的API诊断信息的情况。这将影响对API错误原因的分析及解决方案的获取。本文将介绍如何通过账号授权,以获取查询其他账号API诊断信息的权限。

同一阿里云账号内

您可以为需要查看API诊断信息的RAM用户授予相应权限,以便其能够查看其他RAM用户或RAM角色的API诊断信息。

步骤一:创建自定义权限策略

  1. 使用主账号或者具有RAM管理权限的RAM用户登录RAM 访问控制

  2. 在左侧导航栏,选择权限管理,单击权限策略

  3. 权限策略页面,单击创建权限策略

  4. 创建权限策略页面,单击脚本编辑页签。

    脚本编辑器中显示默认的权限策略 JSON 模板,结构为:Version"1"Statement 数组包含一个对象,其中 Effect"Allow"ActionResource 为空数组,Condition 为空对象。

  5. 复制下面权限策略内容,单击确定

    {
        "Version": "1",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "openapiexplorer:GetRequestLog",
                    "ram:DecodeDiagnosticMessage"
                ],
                "Resource": "*"
            }
        ]
    }
    说明

    该权限策略允许用户查看阿里云账号下所有的API调用日志及无权限访问的详细信息。

  6. 输入权限策略名称备注,单击确定

步骤二:RAM用户授权

您可以任选以下一种方式为RAM用户授权:

步骤三:查看API诊断结果

访问OpenAPI问题诊断,输入待查询的RequestId,单击诊断

诊断结果显示云产品为云服务器 ECS,ErrorCode 为 Forbidden.RAM,ErrorMessage 提示 RAM 用户未被授权操作指定资源。诊断详情表明操作身份为 RAM 用户,鉴权操作为 ecs:ModifyInstanceAttribute,权限判定为权限不足。解决方案建议联系管理员授予相应系统策略,如 AliyunECSFullAccessAliyunECSReadOnlyAccess 等,或创建自定义策略。

不同阿里云账号之间

当需要查看其他阿里云账号的API诊断信息时,您可以通过角色扮演的方式获得相应权限。

image

账号A:调用API报错的账号。

账号B:需查看API诊断信息的账号。

  1. 账号A创建RAM角色,并授权允许账号B扮演。

  2. 账号B创建RAM用户,并授权该RAM用户进行角色扮演。

  3. 账号B通过RAM用户扮演账号A所提供的RAM角色,即可在错误诊断工具中成功完成跨账号API诊断信息的查询。

步骤一:账号A创建RAM角色并授权

  1. 创建RAM角色

    使用账号A登录RAM控制台,创建一个信任主体类型云账号RAM角色。更多信息,请参见创建可信实体为阿里云账号的RAM角色

    说明

    在创建角色页面信任主体名称处,选择其他云账号并填入账号B的账号ID(UID)。

  2. 创建自定义权限策略

    具体操作步骤请参考步骤一:创建自定义权限策略

  3. RAM角色授权

    RAM角色授予步骤2创建的自定义权限策略,具体操作,请参见管理RAM角色的权限

步骤二:账号B创建RAM用户并授权

  1. 创建RAM用户

    使用账号B登录RAM控制台,创建一个RAM用户。关于如何创建RAM用户,请参见创建RAM用户

    说明

    为了账号安全,建议您根据实际情况为RAM用户只配置一种访问方式,将控制台访问和程序访问分离,避免混用。

    本示例中,登录名称设置为 GetApiLogUser显示名称设置为"用于查询其他阿里云账号的API调用日志",访问方式同时勾选控制台访问使用永久 AccessKey 访问

  2. RAM用户授权

    在扮演RAM角色之前,需要为RAM用户授予扮演RAM角色的权限。使用账号B为该RAM用户授予AliyunSTSAssumeRoleAccess权限,以允许该RAM用户扮演所有RAM角色。有关如何为RAM用户授权的详细信息,请参见管理RAM用户的权限

    说明

    如果希望该RAM用户仅能扮演指定的RAM角色,具体操作,请参见RAM角色和STS Token常见问题

步骤三:扮演RAM角色并查看API诊断信息

  1. 使用账号B创建的RAM用户访问RAM用户登录页进行登录。

  2. 将鼠标悬停在右上角头像的位置,单击切换身份

  3. 角色切换页面,输入相关信息后,请单击提交进行登录。本示例输入的值为账号A的账号ID(UID)和RAM角色名称。

  4. 查看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 用户)。