The Constellation OS image build pipeline generates a set of images using a chosen commit of the Constellation monorepo and a desired release version number.
-`sbom.<format>.json` contains SBOM files for the given image version. The exact formats and file names are TBD.
-`GET /constellation/v1/ref/<REF>/stream/<STREAM>/<VERSION>/csp/<csp>/` contains files with measurements and signatures for the given image version and CSP.
-`list`: An array of image references for each CSP.
-`csp`: The cloud service provider. Required.
-`attestationVariant`: The attestation variant of the image. Required.
-`reference`: The CSP-specific image reference. Required.
-`region`: The (optional) CSP-specific region of the image.
If required, the fields in the `.list` array can be extended in the future to include additional information while maintaining backwards compatibility.
This document is not signed and can be extended in the future to include more image references.
The same document can be used to identify old images that are no longer used and can be deleted for cost optimization.
If required, the fields in the `.list` array can be extended in the future to include additional information while maintaining backwards compatibility.
This document has a detached signature that can be retrieved from `measurements.json.sig`.
The CLI needs to be able to discover the image references for a given image name.
By default, the CLI will prefill the `image` field of the `constellation-conf.yaml` when `constellation config generate <CSP>` is run with a hardcoded name (e.g. `v2.2.0`).
- otherwise, load the image lookup table from a well known URL (e.g. `https://cdn.confidential.cloud/constellation/v2/ref/<REF>/stream/<STREAM>/<VERSION>/image/info.json`) and use the lookup table in that file
- choose the CSP-specific image reference for the current region and attestation variant:
- On AWS, use the AMI ID for the current region (e.g. `us-east-1`) and attestation variant (e.g. `aws-nitro-tpm`)
- On Azure, use the image ID for the attestation variant (CVM or Trusted Launch) (e.g. `azure-sev-snp`)
- On GCP, use the image ID for the attestation variant (e.g. `gcp-sev-es`)
- On QEMU, use the image ID for the attestation variant (e.g. `qemu-vtpm`)
This allows customers to upload images to their own cloud subscription and use them with the CLI by providing the image lookup table as a local file.
## Future extensions
This is a list of possible future extensions that are not part of this RFC.
Their implementation is not guaranteed.
They are listed here to ensure that the design of this RFC is flexible enough to support them.
- The lookup table can be signed using a signing key that is only used for that purpose.
- User managed repositories can be added in the future. This would allow users to reupload Constellation OS images to their cloud subscription and host their own lookup tables that resolve the same image versions to image references pointing to self managed images. An optional `repository` field could be added to the configuration file to allow users to specify the repository to use for image discovery.