用途:诊断并修复 SAP Joule CLI 的登录问题、HTTP 401/403 授权错误,以及缺少 capability 部署访问权限。核心原则是先诊断再改动,把登录、授权与 IAS App2App 设置视为三类独立问题。
主要能力与保护措施:不代替用户执行交互式 Joule 或 BTP SSO/口令流程;不循环登出或重试登录;不打印、持久化或索取客户端密钥与绑定 JSON;先做只读检查,不直接用 BTP CLI 改角色;通过 Terraform 修复受管访问,应用前须展示计划并获得批准;计划若含无关变更、替换、删除或付费服务变更则停止。
必要用法:只运行一次失败命令并保留原始输出,用 joule -w status 仅识别当前登录与用户。若为已登出、AUTH_LOAD_FAILED 或无用户,则交还命令并停止,由用户在自己终端完成口令流程:cd infra/btp 后执行 ./scripts/joule-login.sh;仅在绑定缺失且用户授权时加 --create-binding。若登录曾有效后出现 401/403,检查角色集合与分配;其他错误按非授权失败报告,不改角色。
授权检查:先确认 Terraform 目标,读取 subaccount_id,再用 btp --format json get security/role-collection 检查 Joule Developer 是否含 das-application 的 end_user、extensibility_developer、capability_admin,用户是否被分配,来源是否匹配登录所用 IAS 信任(本 Cookbook 通常为 sap.custom)。若三者都对,不修改 Terraform,说明令牌过期并交还一次登录脚本。
修复缺失分配:在现有环境 tfvars 中向受管变量添加用户,如 joule_capability_deployer_users 或拆分栈中的 capability_deployer_users,保留既有用户。用目标账户相同变量文件创建保存计划并运行策略检查,示例:terraform -chdir=infra/btp plan -var-file=live-test.tfvars -var-file=live-joule.tfvars -out=/tmp/joule-access.tfplan,然后 infra/btp/scripts/check-plan.sh --chdir infra/btp /tmp/joule-access.tfplan,获批准后再 apply。成功后交还登录脚本一次获取新令牌,并验证 joule -w list 与重试原编译或部署命令。
停止条件:BTP 会话过期时请用户运行 btp login --sso;缺少 das-application 角色模板;未配置 IAS 信任来源或 Joule Studio App2App 流程;安全计划无法隔离目标角色分配。不得声称 Terraform 能完成 SAP provider 未暴露的 IAS 激活或租户级 App2App 管理步骤。