docker/referrers-stagingreferrers-attestation-staging 镜像(示例名称,实际使用时需替换为官方镜像名称)是一款专为 staging 环境设计的工具镜像,主要用于实现和测试 OCI(开放容器倡议)Referrers Attestation(引用者证明)的管理、验证与集成流程。该镜像聚焦于软件供应链安全领域,帮助开发和测试团队在预发布阶段(staging 环境)验证、管理引用者证明(referrers attestation),确保软件构建产物的来源、构建过程及完整性符合预设安全策略。
referrers-cli),支持交互式操作和脚本化调用。docker run)通过命令行工具验证指定镜像的 referrers attestation:
bashdocker run -it --rm \ -e STAGING_REGISTRY_URL="[***]" \ -e REGISTRY_AUTH="username:password" \ # 或使用 REGISTRY_TOKEN -v /local/certs:/etc/referrers/certs:ro \ # 挂载 CA 证书(若仓库使用自签名证书) referrers-attestation-staging:latest \ referrers-cli verify --image "staging-registry.example.com/app:v1.0.0" --policy /etc/referrers/policy.json
启动 REST API 服务,提供 attestation 验证和 referrers 管理接口:
bashdocker run -d --name referrers-attestation-service \ -p 8080:8080 \ # API 端口映射 -e STAGING_REGISTRY_URL="[***]" \ -e API_PORT=8080 \ -e LOG_LEVEL=info \ # 日志级别:debug, info, warn, error -e TLS_ENABLED=true \ -v /local/policy:/etc/referrers/policy:ro \ # 挂载策略文件目录 -v /local/certs:/etc/referrers/certs:ro \ # 挂载 TLS 证书和 CA 证书 referrers-attestation-staging:latest \ server --config /etc/referrers/config.yaml
适用于多服务集成场景(如与 staging 环境的日志系统、密钥管理服务联动):
yamlversion: "3.8" services: referrers-attestation: image: referrers-attestation-staging:latest container_name: referrers-attestation-staging restart: unless-stopped ports: - "8080:8080" # API 端口 environment: - STAGING_REGISTRY_URL=[***] - REGISTRY_TOKEN=${REGISTRY_TOKEN} # 从环境变量注入认证 Token - API_PORT=8080 - LOG_LEVEL=info - POLICY_PATH=/etc/referrers/policy/default.json # 默认策略文件路径 - TLS_CERT_PATH=/etc/referrers/certs/server.crt - TLS_KEY_PATH=/etc/referrers/certs/server.key volumes: - ./local-policy:/etc/referrers/policy:ro # 本地策略文件目录 - ./local-certs:/etc/referrers/certs:ro # 本地证书目录 - ./logs:/var/log/referrers # 日志持久化 networks: - staging-network # 接入 staging 环境网络 networks: staging-network: external: true # 假设已存在 staging 环境网络
| 环境变量名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
STAGING_REGISTRY_URL | 字符串 | 无(必填) | staging 环境 OCI 镜像仓库的基础 URL(如 [***])。 |
REGISTRY_AUTH | 字符串 | 无 | 镜像仓库认证信息,格式为 username:password 或 token:<token>。 |
API_PORT | 整数 | 8080 | REST API 服务监听端口(仅在 server 模式下生效)。 |
LOG_LEVEL | 字符串 | "info" | 日志级别,可选值:debug、info、warn、error。 |
POLICY_PATH | 字符串 | "/policy/default.json" | 内置 attestation 验证策略文件路径,支持相对路径(基于容器内工作目录)或绝对路径。 |
TLS_ENABLED | 布尔值 | false | 是否启用 TLS 加密(API 通信),启用时需配置 TLS_CERT_PATH 和 TLS_KEY_PATH。 |
TLS_CERT_PATH | 字符串 | 无 | TLS 证书文件路径(容器内路径,需通过卷挂载提供)。 |
TLS_KEY_PATH | 字符串 | 无 | TLS 私钥文件路径(容器内路径,需通过卷挂载提供)。 |
TIMEOUT_SECONDS | 整数 | 30 | 外部服务(如镜像仓库)通信超时时间(秒)。 |
镜像内置 referrers-cli 工具,支持以下核心命令:
bash# 验证指定镜像的 referrers attestation 是否符合策略 referrers-cli verify \ --image "staging-registry.example.com/app:v1.0.0" \ # 目标镜像(含标签或 digest) --policy /etc/referrers/policy/staging-policy.json \ # 策略文件路径 --registry-url $STAGING_REGISTRY_URL \ # 镜像仓库 URL(可省略,默认使用环境变量) --auth $REGISTRY_AUTH # 认证信息(可省略,默认使用环境变量)
bash# 列出指定镜像的所有 referrers 元数据 referrers-cli list \ --image "staging-registry.example.com/app@sha256:abc123..." \ # 目标镜像(digest 格式) --output json # 输出格式:json 或 table
bash# 为镜像创建 referrers 记录(需仓库写入权限) referrers-cli create \ --image "staging-registry.example.com/app:v1.0.0" \ --attestation-file ./local-attestation.json \ # 本地 attestation 文件(需通过卷挂载到容器内) --media-type "application/vnd.in-toto+json" # attestation 媒体类型
-v ./local-policy:/etc/referrers/policy)持久化自定义策略,避免容器重启后配置丢失。LOG_FILE 环境变量),并挂载卷持久化(如 -v ./logs:/var/log/referrers)。-v ./certs:/etc/ssl/certs),并配置系统信任(或通过工具参数 --ca-cert /etc/ssl/certs/ca.crt 指定)。--user 参数指定),降低安全风险。--memory 和 --cpus 参数限制容器资源(如 --memory 512m --cpus 0.5)。

manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务