Security
This document outlines an overview of security considerations for micro-apps
services, components, artifacts, as well as configuration options for Kubernetes cluster.
Safeguarding artifact integrity across any software supply chain.
Supply Chain Security
Goals
Adopt SLSA Framework Level 4 guideline for DevSecOps
Signed container images with Sigstore Cosign
Software Bill of Materials (SBOM) with Anchore Syft
Static Code Analysis with CodeQL
Vulnerabilities scanning with Snyk
Software Composition Analysis (SCA) with OWASP Dependency-Check and Dependabot
Risk and compliance as code (RCaC) via Open Policy Agent with Gatekeeper Or Kyverno
Binary Authorization
Binary Authorization is a deploy-time security control that ensures only trusted container images are deployed on Google Kubernetes Engine (GKE). With Binary Authorization, you can require images to be signed by trusted authorities during the development process and then enforce signature validation when deploying. By enforcing validation, you can gain tighter control over your container environment by ensuring only verified images are integrated into the build-and-release process.
Cosign
All container images are signed using Sigstore Cosign and GitHub OIDC
To verify the authenticity of container images, install cosign and run:
Gitsign
Gitsign enable Keyless Git/commits signing with your own GitHub / OIDC identity.
Install
Configuration
Single Repository:
All Repositories:
Usage
Signing Commits
Signing Commits
Software Bill of Materials
For the micro-apps project we publish a Software Bill of Materials (SBOM) with each release. The SBOM is generated with Syft in the SPDX format.
The spdx.json
file is available for download on the GitHub release page e.g.:
Pod security standard
The deployments are configured in conformance with the Kubernetes restricted pod security standard:
all Linux capabilities are dropped
the root filesystem is set to read-only
the seccomp profile is set to the runtime default
run as non-root is enabled
the filesystem group is set to 1337
the user and group ID is set to 65534
Kubernetes' security standard
properly adheres to Kubernetes security model including RBAC
implement policy-as-code via OPA, Kyverno admission controllers
Last updated