ShopifyJonathan [email protected]Explainer
How Shopify Governs Containers at Scale with Grafeas and Kritis
Summary
Shopify describes using Grafeas and Kritis to govern container software across a platform handling more than 6,000 container builds per day and 330,000 images in its primary registry. Grafeas serves as a central store for metadata about container origins, builds, base images, layers, registry pulls, installed packages, vulnerabilities, and deployment status, supporting auditing and lifecycle strategies. During CI, audits produce attestations, which Shopify signs with PGP; Kritis uses named attestation authorities and Kubernetes policies to require specific attestations before deployment. Policies can require containers to be built by Shopify, sourced from a trusted repository, free of newly introduced vulnerabilities, tested, non-root, and deployed with the appropriate security context. Shopify also generates attestations from kubeaudit results for workload manifests, helping catch runtime-security regressions before deployment.
Context
Shopify’s security team needed an auditing strategy for more than 6,000 daily container builds and 330,000 images in its primary container registry. The stated questions included deployment status, registry pulls, installed packages, vulnerabilities, and compliance with security controls.
Approach / What changed
Grafeas stores container metadata as a central source of truth. CI audits generate PGP-signed attestations, and Kritis applies Kubernetes policies that name required attestation authorities before permitting deployment. Shopify also uses kubeaudit results to attest to workload-manifest security controls during CI.
Takeaways
Grafeas centralizes metadata about container builds, origins, base images, layers, packages, vulnerabilities, pulls, and deployment status for auditing and lifecycle management.
Kritis policies can require signed attestations from multiple named authorities, such as authorities confirming that a container was built by Shopify and passed testing.
Shopify applies the same attestation model to kubeaudit results for Kubernetes workload manifests, checking runtime-security controls before deployment rather than after.
FAQ
How does Kritis decide whether a container can be deployed?
A Kritis policy names one or more attestation authorities whose attestations are required for a particular cluster. A container lacking the required signed attestations is precluded from deployment.
Why does Shopify sign its attestations with PGP?
Shopify uses PGP to digitally sign attestations. This ensures the identity of the builder and other attestation authorities that issue them.
Can the controls cover Kubernetes workload manifests as well as images?
Yes. Shopify generates Kritis attestations from kubeaudit results for workload manifests during CI, helping ensure runtime-security controls do not regress before deployment.
Source and freshness
- Source
- shopify.engineering
- Published
- Added to Yomu
Summaries are generated from the original by a language model. Check the original before relying on it.
Keep reading
Related reading
The Good Stuff
Paid picks we use ourselves. Links carry a referral code — a subscription through one earns us a commission at no extra cost to you.
The best engineering reads, once a week
One useful email. Unsubscribe anytime.