用途:诊断阿里云 OSS 跨账号授权问题,例如其他账号读取桶时返回 AccessDenied/NoPermission、跨账号复制失败、复制角色信任策略报错、AssumeRole 未授权、跨账号迁移被授权阻断。
主要能力:先经 aliyun sts get-caller-identity 获取调用者 UID,再用只读 GetBucketInfo 读取桶属主 UID 与地域,判断同账号或跨账号;用 GetBucketPolicy 检查桶策略是否存在及内容(404 NoSuchBucketPolicy 视为未配置的事实);对证据做纯函数归因,区分信任策略缺口、RAM 策略资源粒度错误、Bucket Policy 与 RAM 双重授权要求、AssumeRole 失败路由;输出可直接套用的授权模板(含 oss.aliyuncs.com 服务主体的信任策略、跨账号 RAM 策略、复制桶策略)。
使用方式:必须运行 scripts/ 下脚本,入口为 oss_cross_account_auth_diagnosis.py,身份检查用 sts_token.py。示例:cd $SKILL_DIR && python3 scripts/oss_cross_account_auth_diagnosis.py --bucket <name> [--scenario access|replication|migration|all] [--peer-uid <uid>] [--role-name <name>] [--region <region>] [--encoded-diagnostic-message <msg>]。凭据仅由默认凭据链解析,不读取或传递 AK/SK/STS。aliyun CLI 需 3.3.3 或更新版本,可用 aliyun version 检查、aliyun upgrade --yes 升级。
限制:严格只读,禁止生成或执行任何应用授权变更的命令(如 PutBucketPolicy、RAM 策略创建/绑定、PutBucketReplication 等),修复仅以 JSON 模板和手动步骤给出。不处理同账号 RAM 子账号 403、直链 403、签名 URL 过期、传输错误码、CRR 健康检查、ossfs 挂载失败、内网端点等问题。结论必须基于实际返回数据,证据缺失时标注为不确定,不编造属主 UID、策略文档或归因。