课题研究 云安全与容器安全 子课题03 · 第06页 / 共8页
03子课题 · 云原生软件供应链与镜像安全

云原生软件供应链与镜像安全第06页:私有镜像仓库安全与准入控制

仓库是供应链的“咽喉要道”:内容在此汇聚、停留并被分发。本页以CNCF毕业项目Harbor为蓝本拆解私有镜像仓库五层安全能力(访问控制、内容信任、漏洞扫描、不可变制品、审计复制),对比Trivy/Grype/Clair扫描引擎与OPA Gatekeeper/Kyverno/policy-controller三大准入控制器,给出digest固定、基础镜像治理等来源管控基线,并对照国内ACR/SWR与海外ECR/Artifact Registry的托管能力。核心原则:仓库不作信任源,进出双向验证。

Harbor镜像扫描准入控制KyvernoGatekeeperdigest固定不可变制品研究状态:研究中
本页定位分发枢纽层:仓库治理、扫描门禁与准入强制
选型范围Harbor/Trivy/Grype/Clair;Gatekeeper/Kyverno/policy-controller;ACR/SWR/ECR/GAR
输出物仓库五层能力清单、准入对比表、来源管控基线

01 · 私有镜像仓库安全架构(以Harbor为基准)

Harbor是CNCF毕业的容器镜像仓库项目(2019年11月毕业),其安全设计是私有仓库治理的通用蓝本。核心安全能力可归纳为五层:

能力层机制治理要点
访问控制项目级RBAC(项目管理员/维护者/开发者/访客)、机器人账户(Robot Account)按CI流水线最小授权禁止共享管理员凭证;机器人账户权限限定到项目+操作类型
内容信任Cosign/Notation签名验证集成;支持“仅拉取已签名制品”项目级策略签名验证失败即阻断拉取(配合第5页策略)
漏洞扫描内置Trivy扫描器(可替换为Clair等),推送即扫描+定时重扫严重度门禁与例外流程结合;扫描结果随制品生命周期归档
不可变制品支持制品不可变(immutable)与保留策略(retention policy)、Tag保留规则生产tag(如release)设为不可变,防止历史版本被覆盖投毒
审计与复制全量操作审计日志;跨仓复制(含带宽/一致性校验)用于多集群分发审计日志集中留存满足取证要求;复制链路TLS双向认证

“私有≠可信”的再强调:私有仓库解决的是“谁能推送”,但SolarWinds事件证明内部构建系统同样可能被长期驻留。私有仓库必须与第4页构建完整性、第5页签名验证形成闭环:内容进仓前已签名,出仓(被拉取)时验证签名——仓库本身不作为信任源。

02 · 镜像扫描引擎对比与误报治理

引擎出品方数据源特点
TrivyAqua(开源)OS包库+语言依赖库+GitHub Advisory/OSV等覆盖全(含IaC与密钥扫描)、速度优;Harbor默认扫描器
GrypeAnchore(开源)以Syft成分为基础与SBOM管线天然衔接,支持VEX过滤
ClairRed Hat/Quay生态(开源)各发行版安全公告源经典引擎,Quay内置;语言依赖覆盖相对有限

2.1 误报治理三原则

  • 分层门禁:CRITICAL/HIGH按CISA KEV与EPSS(Exploit Prediction Scoring System)排序修复,中低危纳入常规迭代——避免“报告疲劳”导致全线失守;
  • VEX消噪:对“组件存在但不可利用”的CVE以VEX声明过滤(第3页),将扫描输出收敛为行动清单;
  • 基线豁免:豁免必须绑定digest(而非tag)、附理由与到期日、定期复审——杜绝“永久豁免池”成为事实上的后门。

2.2 已知局限

漏洞扫描只能识别已知CVE;XZ式恶意代码(CWE-506)、供应链投毒与0day不在其覆盖范围——再次印证“扫描+签名+行为检测”三层叠加的必要性。对distroless镜像的OS包识别、对静态二进制的成分推断均存在覆盖率边界,应在基线文档中明示。

03 · Kubernetes准入控制器选型对比

方案归属策略模型供应链场景优势注意事项
sigstore policy-controllerSigstoreClusterImagePolicy CRD,面向签名/来源验证原生keyless身份匹配、Rekor条目校验,最贴合第5页签名体系策略类型集中于镜像来源与签名
OPA GatekeeperCNCF(OPA生态)Rego策略语言,ConstraintTemplate/Constraint通用策略引擎:镜像来源白名单、禁止:latest、资源限制一揽子Rego学习曲线;需自行编写供应链规则库
KyvernoCNCF(Nirmata等社区)YAML声明式策略(validate/mutate/generate/verifyImages)verifyImages原生支持cosign验签;可读性最佳,适合跨团队协作复杂逻辑表达力弱于Rego
# Kyverno示例:验证镜像cosign签名(摘自Kyverno官方verifyImages模式)
apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
  name: verify-image-signature
spec:
  validationFailureAction: Enforce
  rules:
  - name: verify-cosign-signature
    match:
      any:
      - resources:
          kinds: ["Pod"]
    verifyImages:
    - imageReferences:
      - "registry.example.com/dm/*"
      attestors:
      - entries:
        - keys:
            publicKeys: |-
              -----BEGIN PUBLIC KEY-----
              MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE...
              -----END PUBLIC KEY-----

注:示例为Kyverno官方文档模式的简化教学示例,生产环境建议使用keyless attestors或KMS公钥;字段以所用版本官方文档为准。

04 · 镜像来源管控与解析安全

  • 禁止公共仓库直通生产:K8s集群容器运行时配置只允许私有仓库地址(如containerd的registry mirror/allowlist),杜绝“打地鼠”式误拉公共仿冒镜像;
  • digest固定:K8s manifests与Helm values一律使用@sha256:digest引用;禁止:latest——tag可被重指(tj-actions标签重指事件在镜像域的同构风险);
  • 基础镜像治理:发布“认证基础镜像”清单(经扫描+签名+SBOM齐备),业务镜像仅允许FROM清单内digest;
  • 拉取凭证最小化:镜像拉取Secret按命名空间隔离,只读权限;CI推送与生产拉取凭证分离。

05 · 云厂商托管镜像服务对照(国内环境)

服务供应链安全能力与本课题衔接
阿里云容器镜像服务ACR镜像扫描、云原生应用交付链、ACR EE版支持签名(Notation生态支持以官方文档为准)、同步复制存量上云首选落点;扫描结果对接其安全中心形成统一视图
华为云SWR私有镜像仓库、镜像扫描、仓库级权限;与CCE联动国内政企环境常见;权限模型对齐子课题01的IAM基线
AWS ECR推送扫描(Clair/Enhanced scanning)、ECR-based cosign签名支持、Image Tag Immutability海外业务;Tag不可变功能直接落实“不可变制品”要求
Google Artifact Registry漏洞扫描(持续重扫)、Binary Authorization准入策略、Voucher签名集成Binary Authorization是Google BAB的云端产品化(第4页溯源)

注:各云厂商功能迭代较快,具体能力以官方文档当前版本为准;本表仅作能力维度对照,不构成选型结论。

本节参考来源(第6页)

[1]

Harbor官方文档(CNCF毕业项目,2019年11月):goharbor.io/docs;CNCF项目档案:cncf.io/projects/harbor。

[2]

Trivy、Grype、Clair官方文档:trivy.dev、github.com/anchore/grype、github.com/quay/clair。

[3]

Kyverno verifyImages文档:kyverno.io;OPA Gatekeeper:open-policy-agent.github.io/gatekeeper。

[4]

CISA KEV目录:cisa.gov/kev;EPSS(FIRST):first.org/epss。

[5]

AWS ECR文档(扫描与Tag Immutability):docs.aws.amazon.com/ecr;Google Artifact Registry与Binary Authorization:cloud.google.com/binary-authorization。

[6]

阿里云ACR、华为云SWR官方文档:alibabacloud.com/help/acr、support.huaweicloud.com/swr。

[7]

OWASP Dependency-Track文档(VEX过滤实践):docs.dependencytrack.org。