Skip to content

Commit 2700850

Browse files
reyortiz3claude
andauthored
docs(verify-artifacts): fix stale image-signing table and rebrand Replicated SDK references (#1044)
* docs(verify-artifacts): fix stale image-signing table - Add `thv` to the _release-image.yml row — it's signed and vex-attested just like operator/proxyrunner, but was missing from the table. - Move Envoy Gateway, Envoy Ratelimit, and Presidio out of the "third-party, not re-signed" bucket into the _release-image-repackaged.yml row. Since stacklok/stacklok-enterprise-platform#2332 these are repackaged and Stacklok-signed (signature + SBOM + provenance + OpenVEX) like ai-gateway-controller/extproc, so the old guidance to check the upstream publishers' signatures instead was actively wrong. - Correct the Replicated SDK note: it isn't rewritten through image-proxy.stacklok.com at all (unlike every other image on this page) — it's pulled directly from proxy.replicated.com. It remains the only genuine third-party passthrough image. - Add thv/envoy-gateway/envoy-ratelimit/presidio-analyzer to the "verify across all images" loop. Verified live against v0.7.0 through the actual customer path (image-proxy.stacklok.com with a real license) for every image touched by this change: signature, SBOM, SLSA provenance, and OpenVEX attestations all present and valid. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> * docs(verify-artifacts): rebrand Replicated SDK references to Stacklok License Manager The umbrella chart set nameOverride: stacklok-license-manager on the Replicated SDK subchart (stacklok/stacklok-enterprise-platform#2167), renaming its Deployment/Service in-cluster. Update the display name here to match what customers actually see via `kubectl get pods`, and note that the underlying image name/pull path are unchanged (that's the vendor's own artifact, not ours to rename). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
1 parent b90e79a commit 2700850

1 file changed

Lines changed: 30 additions & 21 deletions

File tree

docs/platform/enterprise-platform/verify-artifacts.mdx

Lines changed: 30 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -248,32 +248,40 @@ oras discover "$IMAGE"
248248

249249
## Which images are signed
250250

251-
| Image (`<IMAGE>`) | Signing workflow | Verifiable |
252-
| ----------------------------------------------------------------------------------- | ---------------------------------- | :--------: |
253-
| `operator`, `proxyrunner`, `vmcp`, `registry-api`, `toolhive-enterprise` | `_release-image.yml` ||
254-
| `ai-gateway-operator`, `ai-gateway-main-processor`, `ai-gateway-api-key-service` | `_release-image.yml` ||
255-
| `cloud-ui` | `_release-toolhive-cloud-ui.yml` ||
256-
| `ai-gateway-controller`, `ai-gateway-extproc` | `_release-upstream-repackaged.yml` ||
257-
| Third-party dependencies (Envoy Gateway, Envoy Ratelimit, Presidio, Replicated SDK) | upstream, not re-signed | n/a |
251+
| Image (`<IMAGE>`) | Signing workflow | Verifiable |
252+
| ------------------------------------------------------------------------------------------------------ | ---------------------------------- | :--------: |
253+
| `thv`, `operator`, `proxyrunner`, `vmcp`, `registry-api`, `toolhive-enterprise` | `_release-image.yml` ||
254+
| `ai-gateway-operator`, `ai-gateway-main-processor`, `ai-gateway-api-key-service` | `_release-image.yml` ||
255+
| `cloud-ui` | `_release-toolhive-cloud-ui.yml` ||
256+
| `ai-gateway-controller`, `ai-gateway-extproc`, `envoy-gateway`, `envoy-ratelimit`, `presidio-analyzer` | `_release-upstream-repackaged.yml` ||
257+
| Third-party dependencies (Stacklok License Manager) | upstream, not re-signed | n/a |
258+
259+
Envoy Gateway, Envoy Ratelimit, and Presidio are repackaged (re-signed with a
260+
Stacklok signature, SBOM, and provenance) rather than shipped as upstream
261+
passthrough — verify them the same way as any other image in this table. Only
262+
the Stacklok License Manager image remains genuine third-party passthrough.
258263

259264
:::note[Third-party dependency images]
260265

261-
Third-party dependency images are served through the proxy for license-gated
262-
distribution but are not re-signed by Stacklok. Verify those against their
263-
original publishers' signatures if required. They are pulled by digest, so their
264-
content is pinned. Their proxy paths use the upstream host, for example
265-
`.../proxy/stacklok-enterprise/docker.io/<UPSTREAM>/<IMAGE>`.
266+
The Stacklok License Manager (the in-cluster component branded from the
267+
Replicated SDK — it appears as `stacklok-license-manager-*` in
268+
`kubectl get pods`) is not re-signed by Stacklok, and unlike every other image
269+
on this page, it is not rewritten through `image-proxy.stacklok.com` at all — it
270+
is pulled directly from Replicated's own registry at
271+
`proxy.replicated.com/library/replicated-sdk-image`. Verify it against its
272+
original publisher's signature if required. It is pulled by digest, so its
273+
content is pinned.
266274

267275
:::
268276

269-
Each third-party dependency plays a specific role in the platform:
277+
The repackaged third-party images each play a specific role in the platform:
270278

271-
| Dependency | Role in the stack |
272-
| --------------- | ---------------------------------------------------------------------------- |
273-
| Envoy Gateway | Kubernetes Gateway API data plane that fronts the AI gateway |
274-
| Envoy Ratelimit | Rate-limiting service backing the AI gateway's token budget enforcement |
275-
| Presidio | Microsoft Presidio engine for PII and PCI detection and redaction in prompts |
276-
| Replicated SDK | In-cluster SDK that reports install status and license state to Replicated |
279+
| Dependency | Role in the stack |
280+
| ------------------------ | ---------------------------------------------------------------------------------------------------------------------------- |
281+
| Envoy Gateway | Kubernetes Gateway API data plane that fronts the AI gateway |
282+
| Envoy Ratelimit | Rate-limiting service backing the AI gateway's token budget enforcement |
283+
| Presidio | Microsoft Presidio engine for PII and PCI detection and redaction in prompts |
284+
| Stacklok License Manager | In-cluster component (Replicated SDK, rebranded) that reports install status and license state to Replicated (not re-signed) |
277285

278286
## Verify across all images
279287

@@ -285,9 +293,10 @@ IDENTITY='^https://github\.com/stacklok/stacklok-enterprise-platform/\.github/wo
285293
ISSUER='https://token.actions.githubusercontent.com'
286294
VERSION='<VERSION>'
287295

288-
for IMAGE in operator proxyrunner vmcp registry-api toolhive-enterprise cloud-ui \
296+
for IMAGE in thv operator proxyrunner vmcp registry-api toolhive-enterprise cloud-ui \
289297
ai-gateway-operator ai-gateway-main-processor ai-gateway-api-key-service \
290-
ai-gateway-controller ai-gateway-extproc; do
298+
ai-gateway-controller ai-gateway-extproc \
299+
envoy-gateway envoy-ratelimit presidio-analyzer; do
291300
# Digest lookup via docker buildx (swap for `crane digest` or `oras resolve`).
292301
DIGEST=$(docker buildx imagetools inspect "$BASE/$IMAGE:$VERSION" \
293302
--format '{{json .Manifest.Digest}}' 2>/dev/null | tr -d '"')

0 commit comments

Comments
 (0)