Verifying signed artifacts
To verify the authenticity of BEL Docker images and Helm charts, use the following commands.
Prerequisites
Verify Docker images and SBOMs
tag=enterprise-2.18.2
for component in controller extension-init policy-controller proxy proxy-init; do
for suffix in "" -fips; do
image=ghcr.io/buoyantio/$component:$tag$suffix
digest=$(crane digest $image)
image_uri_digest=$image@$digest
# verify index image
cosign verify \
--certificate-identity=https://github.com/BuoyantIO/enterprise-linkerd/.github/workflows/actions.yml@refs/tags/$tag \
--certificate-oidc-issuer=https://token.actions.githubusercontent.com \
$image_uri_digest
# verify index sbom
cosign verify-attestation \
--type spdxjson \
--certificate-identity=https://github.com/BuoyantIO/enterprise-linkerd/.github/workflows/actions.yml@refs/tags/$tag \
--certificate-oidc-issuer=https://token.actions.githubusercontent.com \
$image_uri_digest
# view index sbom
cosign download attestation \
$image_uri_digest \
--predicate-type https://spdx.dev/Document |
jq -r '.payload' | base64 -d | jq .
# iterate through all platform-specific images referenced in the index sbom
cosign download attestation \
$image_uri_digest \
--predicate-type https://spdx.dev/Document |
jq -r '.payload' | base64 -d |
jq -r '.predicate.packages[1:][] .versionInfo' |
while read -r sha; do
# platform-specific image digest
image_uri_digest="$image@$sha"
# verify platform-specific image
cosign verify \
--certificate-identity=https://github.com/BuoyantIO/enterprise-linkerd/.github/workflows/actions.yml@refs/tags/$tag \
--certificate-oidc-issuer=https://token.actions.githubusercontent.com \
$image_uri_digest
# verify platform-specific image sbom
cosign verify-attestation \
--type spdxjson \
--certificate-identity=https://github.com/BuoyantIO/enterprise-linkerd/.github/workflows/actions.yml@refs/tags/$tag \
--certificate-oidc-issuer=https://token.actions.githubusercontent.com \
$image_uri_digest
done
done
done
Verify Helm charts
gpg --keyring ./bel.pubring.kbx --no-default-keyring \
--keyserver hkps://keys.openpgp.org \
--receive-keys '54A1FEAE3864F855F6724F03F09B21EC0428D8B8'
gpg --keyring ./bel.pubring.kbx --no-default-keyring \
--export --output ./bel.pubring.gpg \
'[email protected]'
helm repo add linkerd-buoyant https://helm.buoyant.cloud
helm repo update
helm pull --verify --keyring ./bel.pubring.gpg linkerd-buoyant/linkerd-enterprise-crds
helm pull --verify --keyring ./bel.pubring.gpg linkerd-buoyant/linkerd-enterprise-control-plane
helm pull --verify --keyring ./bel.pubring.gpg linkerd-buoyant/linkerd-enterprise-multicluster