Harbor Image Governance

Container image scanning, signing, proxy registries, Kyverno enforcement.

NIST controls:CM-7, SA-10, SI-7
Last updated:2026-03-22
Category:Technical

Container Image Governance Policy

Policy Statement

All container images deployed to KuiperDesk clusters MUST be pulled exclusively through the Harbor registry at registry.arivaran.ai. Direct pulls from external registries are blocked by Kyverno admission control.

Enforcement Mechanism

LayerControlEffect
AdmissionKyverno ClusterPolicy require-registryRejects any Pod with image not matching registry.arivaran.ai/*
RuntimeRKE2 registries.yaml mirror configIntercepts pulls to docker.io, quay.io, ghcr.io, etc. and routes through Harbor
ScanTrivy (Harbor built-in)Scans every cached image for CRITICAL/HIGH CVEs
Signcosign (Harbor built-in)Signs images with Sigstore; redirect.disable: true for external verification

Proxy-Cache Projects

Harbor ProjectUpstream RegistryPurpose
library(local)KuiperDesk product images (aa-hash-svc, aa-twin-svc, etc.)
arivaran(local)Company-built images (ci-runner, etc.)
proxy-dockerhubdocker.ioDocker Hub (nginx, postgres, redis, etc.)
proxy-quayquay.ioQuay.io (keycloak, jetstack/cert-manager, etc.)
proxy-ghcrghcr.ioGitHub Container Registry (cloudnative-pg, etc.)
proxy-k8sregistry.k8s.ioKubernetes project images (ingress-nginx, etc.)
proxy-gcrgcr.ioGoogle Container Registry
proxy-codebergcodeberg.orgCodeberg containers

Adding a New External Registry

  1. Create proxy-cache project in Harbor admin UI or API:
    • Project name: proxy-<shortname> (e.g., proxy-mcr for mcr.microsoft.com)
    • Type: Proxy Cache
    • Endpoint: upstream registry URL
  2. Update registries.yaml template: kuiperdesk/aainfra/ansible/templates/registries.yaml.j2
  3. Deploy to all cluster nodes (Ansible or manual)
  4. Rolling restart RKE2 on each node (maintain etcd quorum)
  5. Update this document with the new mapping

Compliance Mapping

SOC 2 Type II

Trust Service CriteriaControlHow This Policy Satisfies
CC6.1 Logical access controlsKyverno admission + Harbor RBACOnly authorized images from a controlled registry can run. No anonymous external pulls.
CC6.6 Restrict access to system componentsRKE2 registry mirrorsAll image traffic funneled through a single managed endpoint with TLS.
CC7.1 Monitor system componentsHarbor audit logs + Trivy scansEvery image pull is logged. Every cached image is scanned for vulnerabilities.
CC7.2 Monitor for anomaliesTrivy CRITICAL/HIGH alertsNew CVEs in cached images trigger alerts via Harbor webhook → AlertManager.
CC8.1 Change managementKyverno policy enforcementUnauthorized images are rejected at admission — cannot bypass via kubectl.

FedRAMP (Moderate/High)

NIST 800-53 ControlControl FamilyHow This Policy Satisfies
CM-2 Baseline configurationConfiguration MgmtAll images pinned to Harbor — reproducible, auditable baseline.
CM-7 Least functionalityConfiguration MgmtOnly approved images run. No arbitrary container execution.
SA-12 Supply chain protectionSystem AcquisitionSingle controlled source for all software components. No direct internet pulls in production.
SI-7 Software/firmware integritySystem & Info Integritycosign signatures verify image provenance. Trivy scans detect tampering/vulnerabilities.
AU-2 / AU-3 Audit events + contentAudit & AccountabilityHarbor logs: who pulled what, when, from where. Full provenance chain.
SC-7 Boundary protectionSystem & Comms ProtectionAll image traffic through Harbor (single egress). No direct container registry access from pods.
RA-5 Vulnerability scanningRisk AssessmentTrivy auto-scans every image on push/pull. CRITICAL/HIGH CVEs block deployment (optional gate).

HIPAA (where applicable)

SafeguardHow This Policy Satisfies
§164.312(a) Access controlOnly Harbor-hosted images can execute in the environment
§164.312(b) Audit controlsFull pull/push audit trail in Harbor
§164.312(c) Integritycosign signatures + Trivy scans ensure image integrity

ISO 27001:2022

ControlHow This Policy Satisfies
A.8.9 Configuration managementCentralized image registry with version control
A.8.25 Secure development lifecycleImages scanned before deployment
A.8.28 Secure codingNo untrusted code execution (admission control)

Air-Gap Readiness

This architecture is air-gap ready:

  1. Pre-warm: Pull all required images through Harbor while internet is connected
  2. Disconnect: Remove internet access from cluster nodes
  3. Operate: All pods pull from Harbor's local cache — no external connectivity needed
  4. Update: Reconnect briefly to sync new versions, then disconnect again

This is the deployment model for FedRAMP High satellites on AWS GovCloud and on-premises Tier-A customer deployments.

Incident Response

If an image with a critical CVE is discovered:

  1. Harbor's Trivy scan flags it automatically
  2. AlertManager webhook fires to #security Matrix room
  3. Use Harbor's "Prevent Vulnerable Images" policy to block future pulls
  4. Rebuild/update the affected image and push to Harbor
  5. Rolling restart affected deployments

Revision History

DateChangeAuthor
2026-03-22Initial policy. All registries proxied through Harbor. Kyverno enforced.Zara Okonkwo (QA), Navid Ahmadi (Security review)

This document is part of the Arivaran Twin compliance program. For questions or the latest version, contact compliance@arivaran.ai.

Release-ready. Saved on this browser.