add uds-core as a conformant stack
Compare changes
conformant-stacks/uds-core/uds-core.md
0 → 100644
+ 141
− 0
Explanation/Evidence: UDS Core runs on any non-EOL conformant cluster ([see documentation](https://uds.defenseunicorns.com/reference/uds-core/prerequisites/)). In addition CI testing is done against production distros like [EKS, AKS, and RKE2](https://github.com/defenseunicorns/uds-core/tree/main/.github/test-infra), as well as developer friendly k3d.
Explanation/Evidence: UDS Core deploys with Zarf and primarily leverages upstream helm charts which are all configured declaratively via create-time values set in [`zarf.yaml`](https://docs.zarf.dev/ref/components/#helm-charts) files and deploy-time values set via a [`zarf-config.yaml`](https://docs.zarf.dev/ref/config-files/).
Explanation/Evidence: Any exceptions to this are documented in code with explicit `PeerAuthentication` resources that are limited to single ports where possible. For example metrics-server deploys a [PERMISSIVE exception](https://github.com/defenseunicorns/uds-core/blob/v0.35.0/src/metrics-server/chart/templates/peerauthentication/metrics-api.yaml) to allow proper API Service communication.
Explanation/Evidence: All exceptions to policies are tracked via an [`Exemption` custom resource](https://uds.defenseunicorns.com/reference/configuration/uds-operator/exemption/). Exemptions in UDS Core provide descriptions to justify why they are necessary (see [example here](https://github.com/defenseunicorns/uds-core/blob/v0.35.0/src/neuvector/chart/templates/uds-exemption.yaml)).
Explanation/Evidence: Exceptions to policies are easily aggregated by pulling the custom resources from the cluster (`kubectl get exemptions -A`). Pepr also includes the command [`pepr monitor`](https://docs.pepr.dev/v0.45.0/user-guide/pepr-cli/#npx-pepr-monitor) which can be used to easily identify all actions from policies (approvals and denials). This data is also logged out by Pepr and would be accessible in logging tooling/Grafana dashboarding.
Explanation/Evidence: UDS Core includes NeuVector which provides [automated reporting and notifications](https://open-docs.neuvector.com/reporting/reporting) on security events. UDS Core configures NeuVector to automatically place workloads into a monitoring mode (producing alerts on anomalies) after [36 hours of workload discovery](https://github.com/defenseunicorns/uds-core/blob/v0.35.0/src/neuvector/values/values.yaml#L27-L28).
Explanation/Evidence: UDS Core partially satisfies this requirement. NeuVector provides prevention of threats when workloads are moved into its [Protect mode](https://open-docs.neuvector.com/policy/modes). By default in UDS Core workloads are only auto-promoted to Monitor mode and the end user must configure NeuVector to move workloads into Protect mode.
Explanation/Evidence: UDS Core automatically generates a [set of default network policies](https://github.com/defenseunicorns/uds-core/blob/v0.35.0/src/pepr/operator/controllers/network/policies.ts#L30-L41) that explicitly includes a [deny all policy](https://github.com/defenseunicorns/uds-core/blob/v0.35.0/src/pepr/operator/controllers/network/defaults/default-deny-all.ts).
Explanation/Evidence: Deployed services within UDS Core add only the necessary ingress/egress policies beyond the default deny. Policies are defined and generated based on a [`Package` custom resource](https://uds.defenseunicorns.com/reference/configuration/custom-resources/packages-v1alpha1-cr/#allow), with minimal ingress/egress allowed using selectors and ports as applicable (see [example here](https://github.com/defenseunicorns/uds-core/blob/v0.35.0/src/grafana/chart/templates/uds-package.yaml#L37)).
Explanation/Evidence: UDS Core protects all admin endpoints by default using a deployment of Keycloak. This is configured via the [`Package` custom resource `sso` spec](https://uds.defenseunicorns.com/reference/configuration/custom-resources/packages-v1alpha1-cr/#sso) and individual application configuration where necessary. For example, Grafana generates a SSO client [here](https://github.com/defenseunicorns/uds-core/blob/v0.35.0/src/grafana/chart/templates/uds-package.yaml#L10-L18) and is configured to use that SSO client with the [upstream values](https://github.com/defenseunicorns/uds-core/blob/v0.35.0/src/grafana/values/values.yaml#L35-L53).
Explanation/Evidence: UDS Core does not deploy any regular/tenant endpoints by default, but does provide the same mechanism via the [`Package` custom resource `sso` spec](https://uds.defenseunicorns.com/reference/configuration/custom-resources/packages-v1alpha1-cr/#sso) to generate and configure Keycloak clients. This also provides options to automatically protect applications with AuthService if the application does not natively support OIDC/SAML configuration.
Explanation/Evidence: UDS Core provides 2 gateways by default, admin and tenant. Endpoints are exposed via the [`Package` custom resource `expose` spec](https://uds.defenseunicorns.com/reference/configuration/custom-resources/packages-v1alpha1-cr/#expose) with a requirement to choose a gateway for the endpoint. [Documentation](https://uds.defenseunicorns.com/reference/uds-core/dns/#bundle-configuration) is also included noting how to keep the admin gateway private (depending on the cloud/other load balancer configuration).
Explanation/Evidence: UDS Core's artifacts are published as Zarf packages which include a [full SBOM by default](https://docs.zarf.dev/ref/sboms/). SBOMs for a specific version of UDS Core can be viewed by following the [upstream Zarf documentation](https://docs.zarf.dev/ref/sboms/#viewing-a-packages-sbom).
Explanation/Evidence: UDS Core publishes several versions of each release, utilizing different image sources. The hardened `registry1` releases source all images from Ironbank. Images in these release versions are signed by Ironbank and can be verified by following [their documentation](https://docs-ironbank.dso.mil/tutorials/cosign/).
Explanation/Evidence: For the `registry1` releases of UDS Core, CVE data is publicly accessible via the [VAT tool](https://vat.dso.mil/vat) as well as the VAT [image attestations](https://docs-ironbank.dso.mil/tutorials/cosign/#attestations) able to be pulled from the Registry1 registry. Other image sources can easily be scanned using the SBOM with tooling like [`grype`](https://github.com/anchore/grype).
Explanation/Evidence: UDS Core includes [Vector](https://vector.dev/) and [Loki](https://grafana.com/oss/loki/) to handle log collection and storage as well as [Prometheus](https://prometheus.io/) and [Grafana](https://grafana.com/oss/grafana/) to provide metrics collection and visualization (see full capability list [here](https://uds.defenseunicorns.com/overview/uds-structure/#uds-core-capabilities)). Logs from all workloads are automatically collected (to include host logs). Metrics for all applications within UDS Core are also collected, with options to monitor additional applications using the [`monitor` spec in the `Package` custom resource](https://uds.defenseunicorns.com/reference/configuration/custom-resources/packages-v1alpha1-cr/#monitor).