import { ICheckReport, INormalizedDeployConfig } from '../types'; /** * 镜像仓库授权 Preflight(涉及 CAM,scope: cloud) * * 镜像部署涉及两个职责不同的服务角色: * - SCF_QcsRole:SCF 从个人版或企业版 TCR 拉取镜像; * - TCB_QcsRole:CloudApp 云端构建向企业版 TCR 推送镜像。 * * 本模块在部署前探测所需角色与策略;缺失且允许时,只自动绑定各场景明确列入 * 白名单的预置策略;当前身份无 CAM 权限时,则返回结构化指引和一键授权链接。 * 模块不会创建角色,也不会绑定白名单之外的策略。 */ /** SCF 拉取镜像使用的服务角色 */ export declare const SCF_PULL_IMAGE_ROLE = "SCF_QcsRole"; /** SCF 拉取个人版或企业版 TCR 镜像所需的预置策略 */ export declare const REQUIRED_IMAGE_PULL_POLICY = "QcloudAccessForSCFRoleInPullImage"; /** CloudApp 云端构建向企业版 TCR 推送镜像使用的服务角色 */ export declare const TCB_PUSH_ENTERPRISE_IMAGE_ROLE = "TCB_QcsRole"; /** CloudApp 云端构建向企业版 TCR 推送镜像所需的预置策略 */ export declare const REQUIRED_TCR_PUSH_POLICY = "QcloudAccessForTCBRoleInTCR"; /** SCF 拉取镜像的一键授权链接 */ export declare const IMAGE_PULL_GRANT_URL: string; /** 企业版 TCR 云端构建推送的一键授权链接 */ export declare const TCR_PUSH_GRANT_URL: string; /** 角色详情,仅取判断所需字段 */ interface IRoleDetail { RoleName?: string; /** 已绑定的策略名集合,具体来源由适配层填充 */ attachedPolicyNames?: string[]; } /** CAM 能力的最小依赖接口 */ export interface ICamPreflightService { /** 获取角色详情及其已绑定策略名;角色不存在应抛出可识别错误 */ getRoleWithPolicies: (roleName: string) => Promise; /** 为角色绑定指定预置策略(按策略名) */ attachPolicyByName: (roleName: string, policyName: string) => Promise; } /** 判断错误是否为 CAM 权限不足 */ export declare function isCamPermissionError(error: any): boolean; /** * 执行镜像仓库授权 Preflight。 * * 企业版 cloud 策略会同时检查 SCF 拉取权限和 TCB 云端构建推送权限; * 其他镜像策略只检查与自身相关的授权,不会额外要求 TCB 推送权限。 */ export declare function runImagePullAuthPreflight(service: ICamPreflightService | null, config: INormalizedDeployConfig, autoGrant?: boolean): Promise; export {};