实现示例type Sig = { alg: 'RS256'; kid: string; b64: string }
type Image = { project: string; repo: string; tag: string; digest: string }
type Policy = { allowProjects: Set<string>; allowKids: Set<string> }
function hex64(h: string): boolean { return /^[A-Fa-f0-9]{64}$/.test(h) }
function b64(s: string): boolean { return /^[A-Za-z0-9+/=]+$/.test(s) }
function validImage(i: Image, p: Policy): boolean { return p.allowProjects.has(i.project) && !!i.repo && !!i.tag && hex64(i.digest) }
function validSig(s: Sig, p: Policy): boolean { return s.alg === 'RS256' && p.allowKids.has(s.kid) && b64(s.b64) }
function allowPull(i: Image, s: Sig, p: Policy): boolean { return validImage(i, p) && validSig(s, p) }
审计与运行治理审计签名密钥与项目、摘要;不合规阻断并回退。策略变更需审批与归档。

发表评论 取消回复