用途
该技能用于创建 JFrog 项目生命周期策略,在应用晋升(promotion)或发布(release)事件时检查证据(evidence)是否存在,并可将策略限定到带有特定标签的应用。
主要能力
- 校验证据:针对指定的证据 predicate_type 检查证据是否存在,并支持额外的谓词检查(如校验特定字段值、要求多种证据类型等)。
- 复用现有资源:先检索现有模板(Rego 策略)与规则,若已有匹配则直接复用,避免重复创建。
- 创建资源:在无匹配时,按模板 → 规则 → 策略的顺序创建,策略可配置为阻止(block)或警告(warn)。
- 范围限定:策略可作用于项目(project)或应用(application),并可按应用标签或应用键进行限定。
- 校验结果:创建后通过 Unified Policy API 获取策略及其规则/模板,确认范围、谓词类型与执行动作符合用户请求。
使用方式
- 认证:按 jfrog-apptrust-auth.md 完成 JFrog 平台认证与 AppTrust 权限检查。
- 检索模板与规则:调用
/unifiedpolicy/api/v1/templates与/unifiedpolicy/api/v1/rules获取现有资源。 - 收集需求:逐一询问用户所需的证据 predicate_type(如 build-signature、integration-test、approval、security-scan、cyclonedx/sbom、sonarqube、slsa provenance 等,或自定义类型),以及是否需要额外的证据谓词检查。
- 查找匹配:在模板的 rego 字段中查找对目标 predicate_type 的引用;若无模板匹配,则在规则的 parameters 中查找;若找到匹配规则,则获取其模板并检查是否支持额外检查。
- 呈现结果:若存在匹配资源,建议用户直接创建策略;若无匹配,则说明需要新建模板、规则与策略。
- 收集策略配置:逐一询问项目键、策略范围(project 或 application)、应用标签或应用键、资源名称、以及策略门控的阶段键与触发位置(entry、exit 或 release)。
- 创建资源:按模板 → 规则 → 策略的顺序创建,仅创建缺失的部分。
- 校验:通过 API 获取创建的策略及其规则/模板,确认范围、谓词类型与执行动作符合请求。
API 传输优先使用 jf api(JFrog CLI 2.100.0+),路径仅用 URL;当 CLI 缺失或低于 2.100.0 时,回退使用 curl 配合 $JFROG_URL 与 bearer token。
适用场景
- 在应用晋升或发布前强制校验构建签名、集成测试、审批、安全扫描、SBOM、SonarQube、SLSA 溯源等证据。
- 需要按应用标签或应用键限定策略范围的项目。
- 需要复用已有模板与规则,或需要新建自定义证据校验策略的场景。
限制
- 需要 JFrog 平台认证与 AppTrust 权限;若返回 "access denied: required entitlement not available",需重试调用 3 次。
- 策略必须位于 JFrog 项目中,除非用户明确选择退出。
- 创建模板时,rego 策略需将换行替换为 \n、制表符替换为 \t、双引号转义为 "。
- 修补模板时若新增参数,需确保所有使用该 template_id 的规则都发送新参数。
- 名称需 1-255 字符且以字母开头;描述需 2048 字符以内且以字母开头。
- 具体收费、价格、平台支持范围等事实暂未提供。