Alibabacloud Ram Permission Diagnose — 阿里云 RAM 权限诊断
v0.0.2Alibaba Cloud RAM 权限诊断和修复助手。当代理在操作阿里云资源时遇到任何权限相关错误(403、NoPermission、Forbidden、AccessDenied、InvalidSecurityToken等),或者当用户描述阿里云 RAM 权限问题时,立即使用此技能。不要等待用户明确请求 —— 一旦出现权限错误,就主动启动诊断过程。此外,还适用于以下情况:开发人员在编写阿里云 SDK 代码时遇到权限问题,用户询问如何为操作配置最小权限,或者用户想知道当前身份缺少哪些权限。同时适用于用户通过 API、CLI 或 GitHub 等方式操作阿里云资源时遇到的权限问题。
运行时依赖
安装命令
点击复制技能文档
RAM 权限诊断和修复安装 预检查:Aliyun CLI >= 3.3.3 必须 运行 aliyun version 验证 >= 3.3.3。如果未安装或版本过低,运行 curl -fsSL https://aliyuncli.alicdn.com/setup.sh | bash 更新,或者参考 references/cli-installation-guide.md 获取安装指南。 预检查:Aliyun CLI 插件更新必须 [MUST] 运行 aliyun configure set --auto-plugin-install true 启用自动插件安装。 [MUST] 运行 aliyun plugin update 确保现有的插件始终保持最新。 在 Core Workflow 开始时(在任何 CLI 调用之前): [MUST] 启用 AI 模式 — AI 模式是 Agent Skill 执行所必需的。 运行以下命令在任何 CLI 调用之前: aliyun configure ai-mode enable aliyun configure ai-mode set-user-agent --user-agent "AlibabaCloud-Agent-Skills/alibabacloud-ram-permission-diagnose" [MUST] 在每个退出点禁用 AI 模式 — 在任何原因下交付最终响应之前,始终先禁用 AI 模式。 这适用于所有退出路径:工作流成功、工作流失败、错误/异常、用户取消、会话结束或不再执行任何 CLI 命令的任何其他场景。 AI 模式仅用于 Agent Skill 调用场景,不能在 Skill 停止运行后仍保持启用状态。 aliyun configure ai-mode disable [MUST] CLI User-Agent — 每个 aliyun CLI 命令调用必须包含: --user-agent AlibabaCloud-Agent-Skills/alibabacloud-ram-permission-diagnose 执行约束:在直接执行 aliyun CLI 命令时(不是生成命令让用户复制),始终追加 --user-agent AlibabaCloud-Agent-Skills/alibabacloud-ram-permission-diagnose。 不要在 Path B 输出或 Path C 控制台指南中为用户显示的命令添加此标志。 概述 当检测到 RAM 权限错误时,运行以下步骤: 快速分析 — 解析原始错误字段(无工具调用),输出简要摘要,询问用户选择分析深度 深度分析 — (仅当用户选择路径 B 时)解码(如果需要),运行差距分析,分类根因 生成建议 — 最小权限授权计划 执行修复 — 提出修复选项并等待用户选择 权限级别(L0–L3)是代理的内部路由状态,从流程中的 API 调用结果隐式推断。 它决定了诊断深度和可用的修复路径。 永远不要向用户声明或描述级别。 请参考 references/diagnose-flow.md 获取级别定义。 步骤 1:快速分析 解析原始错误字段而不进行任何工具调用,然后让用户决定深度。 1a. 从原始错误中提取 error_code:例如 NoPermission、Forbidden、InvalidSecurityToken missing_action:例如 ecs:StopInstance principal_type:SubUser / AssumedRoleUser / RootUser(来自 AuthPrincipalType) principal_display_name:UserId 或 role:session(来自 AuthPrincipalDisplayName) no_permission_type:ImplicitDeny 或 ExplicitDeny(来自 NoPermissionType) policy_type:例如 AccountLevelIdentityBasedPolicy、AssumeRolePolicy(来自 PolicyType) encoded_message:保留 EncodedDiagnosticMessage,如果需要用于步骤 2 1b. 输出简要摘要 根据提取的字段,输出简洁的摘要:谁受到影响、缺少什么操作、初始根因推断。 1c. 提出深度选择并等待选择 提出以下选项并等待用户选择 — 不要继续直到选择被做出: A. 快速路径(推荐:ImplicitDeny + 所有关键字段存在 + 常见服务)— 跳过步骤 2,直接从原始字段和内置知识生成建议 B. 深度路径(推荐:ExplicitDeny、缺少字段或不熟悉的服务)— 运行完整的步骤 2 分析以获得更精确的结果。 需要两个可选权限:ram:DecodeDiagnosticMessage(解码编码错误)和系统策略 AliyunRAMReadOnlyAccess(差距分析)。 缺少权限限制特定功能,但流程继续。 跳过 — 停止这里;输出手动故障排除链接 明确标记推荐选项并简要解释原因。 如果用户选择 A:继续到步骤 3。 注意在建议中,这是基于快速分析;用户可以随时请求深度分析。 如果用户选择 B:继续到步骤 2。 如果用户选择跳过:输出错误摘要、RAM 文档链接(https://help.aliyun.com/document_detail/93733.html)和 RAM 控制台链接(https://ram.console.aliyun.com/policies),以及有关如何重新开始诊断的说明。 边缘情况 — ExplicitDeny 与路径 A 强制:如果 NoPermissionType = ExplicitDeny 且用户仍选择 A,解释无法在没有深度分析的情况下识别特定的 Deny 策略,并提供带有明确不确定性注释的有限建议。 步骤 2:深度分析 仅当用户在步骤 1 中选择路径 B 时才进入。 首先尝试使用步骤 1 中的原始字段进行分类。 DecodeDiagnosticMessage 是补充 — 只有在需要时才调用它。