Lightwell Software Supply Chain Security Workshop
This page is the map for the workshop. Nothing here is graded. You are about to walk one trusted software supply chain on a dedicated OpenShift cluster and prove, for a single production container, where the base came from, which libraries you compiled in, which source pinned both, how the build stayed inside the trust boundary, who signed the image, which digest production is allowed to run, and how a known CVE shows up as remediated.
The walk has seven tracks. You verify a Hummingbird base, consume Lightwell dependencies, own the application source, build hermetically, sign and attest, promote a production container, then prove continuous compliance.
The application you build is Java, and Maven is the build you complete. settings.xml points Maven at the enterprise proxy on this cluster, an in-cluster Nexus. You then pin an exact .rhlw-* library version, which is Lightwell’s security backport on the upstream line you already run. That pin is the coordinate later pages sign, admit, and explain in the vulnerability report.
The same control exists in other ecosystems, and those pages say so in a short callout. You read the callout and continue the Java exercise.
-
Python uses
pip.confthe way this workshop usessettings.xml. The remediated version suffix looks like1.0.0+rhlw.00001on arequirements.txtline. -
JavaScript libraries follow the same pattern: an enterprise npm registry, and an exact package version. You can describe that pattern to a customer. This cluster has no npm exercise.
-
Artifactory is the repository manager customers often run in place of the Nexus proxy you configure here.
Hands-on work starts at 1.1 Verify Hummingbird. There you discover the published Hummingbird pin and run cosign verify against it.
What a trusted software supply chain proves
A trusted software supply chain (TSSC) is the set of controls that let you answer three questions for every production container. What went into the image? Who built it and signed it? Are known vulnerabilities remediated, without treating the public internet as a trusted input?
On OpenShift, Red Hat TSSC is those controls as products you will actually open in this workshop:
-
Signed and attested artifacts, in Red Hat Trusted Artifact Signer
-
A system of record for SBOMs and advisories, in Red Hat Trusted Profile Analyzer
-
Runtime and pipeline policy, in Red Hat Advanced Cluster Security and in Conforma, the Enterprise Contract CLI
ec -
Promotion by Git, in OpenShift GitOps
-
A golden path for the application repo, in Red Hat Developer Hub
The same stack is what Red Hat Trusted Application Pipeline describes. You will not install that pipeline as a product. You will use the pieces above, on this cluster, under the names the modules use.
TSSC does not start when a pipeline runs. It starts with inputs you can name: a signed runtime base, application libraries from a trusted repository, and source that records both pins. Hummingbird is the base. Lightwell is the library layer.
Lightwell Network and Lightwell Clearinghouse Premier
Lightwell is the Red Hat and IBM initiative that maintains third-party application dependencies: libraries, frameworks, build tools, and the transitive dependencies those pull in. A scanner can name a CVE that your team cannot upgrade away from, because of certification, compatibility, or a release window. Lightwell supplies a security-only fix on the version you already run.
Lightwell is an annual subscription with two models. This workshop scores the Network path. Clearinghouse Premier is limited availability. You still need both names in a customer conversation, because a Premier remediation lands in the same proxy, the same source pin, and the same evidence store you configure here.
| Model | What it is | How it shows up in this TSSC lab |
|---|---|---|
Lightwell Network (available) |
Consolidated access to Lightwell remediations for eligible open source vulnerabilities. Repositories are Validated (upstream-parity, signed, SBOM) and Remediated (security-only backports with a |
Tracks 2, 3, and 7. You point Maven at an enterprise Nexus proxy, pin an exact |
Lightwell Clearinghouse Premier (limited availability) |
Everything in Network, plus vulnerability reporting and remediation for member-specific package versions, verification of novel vulnerabilities, disclosure handling for secured patch embargoes, anonymized access to other member requests, and TAM services. It is aimed at pre-selected critical infrastructure, with a broader release planned. |
The same cluster. A Premier remediation is still a pinned GAV, or a wheel whose version contains |
An embargo is a coordinated-disclosure window. The vulnerability and its patch stay inside a closed member set until a public date. Clearinghouse Premier can deliver that member pin during the window. Lightwell Network’s documented lifecycle ends at public Disclosure, when VEX and OSV go to the broader ecosystem (Patch delivery lifecycle). This workshop scores the post-disclosure Network path. The controls are the same. What changes is when the public advisory exists. This cluster has no embargo exercise. The longer explanation is in Lightwell concepts.
Keep the layers separate when you talk to a customer. Lightwell covers application-layer dependencies. RHEL, OpenShift, and ACS cover the operating system and the platform. Hummingbird, part of Red Hat Hardened Images, is the runtime foundation the container starts from. Commercial SKUs, pricing, and associate-only sales guidance stay in Lightwell concepts.
How this workshop maps to TSSC
Each gated module exists so you can see the control, not only so you can fill in a ConfigMap. Use the table as a glossary while you work: the objective, the page where you will meet it, and what changes if the customer is on Network or on Clearinghouse Premier.
| TSSC objective | Where you observe it | Lightwell Network / Clearinghouse Premier |
|---|---|---|
Trusted runtime input (signed minimal base) |
1.1 published |
Complementary. Hummingbird is not a Lightwell GAV. Premier does not replace Hardened Images. |
Trusted library input (enterprise proxy, not the public index) |
2.1 Maven |
Network: this is how customers consume |
Exact-version remediation (not "upgrade to latest") |
2.2 OSV |
This Check is post-disclosure Network OSV. Under a Premier embargo you may already have the |
Source of truth binds those pins |
3.1 learner-owned Gitea; 3.2 dest |
Renovate, called MintMaker in a client engagement, is how a new Network or Premier pin arrives without a hand-edit. During an embargo, merge the pin. Leave the advisory text out of a public pull-request description. |
Hermetic production of the image (source, prefetch, network) |
Lightwell GAVs resolve from the internal proxy after egress is denied. Premier does not add a public fallback. |
|
Integrity of the app artifact (sign, policy, disconnected verify) |
You sign the application image. Lightwell already signed the library. Those are distinct layers. |
|
Only the signed digest may run, and prod is a separate promote |
Admission does not care which Lightwell model produced the GAV. It cares that the image is signed. |
|
Continuous compliance (system of record and blast radius) |
Network: GAV-bound VEX and OSV for the pin, public and post-disclosure. Premier: member advisories ingest into the same Trusted Profile Analyzer. During an embargo that metadata stays off public scanner feeds. |
Seven tracks
Work the tracks in order. On each numbered page, Your change is the edit you make. Check is the command sequence that should succeed afterward. Do both before you continue. Later pages assume the earlier work landed: the mirrored digest, the Maven pin, the signature.
You prove the runtime base before anything else. First you verify the published image. Then you mirror it into the registry this cluster trusts, and you record the digest you will later put on a FROM line.
-
1.1 Verify Hummingbird — published digest and Hardened Images key
-
1.2 Mirror into the trust boundary — learner-run oc-mirror into dest
You stop resolving application libraries from the public internet. Maven reads Lightwell through Nexus. Then you replace a vulnerable default version with the exact remediated pin a Lightwell advisory names.
-
2.1 Enterprise proxy — author
settings.xmlagainst in-cluster Nexus -
2.2 Remediated pin — exact
.rhlw-*from a Lightwell OSV fixed event
The pins have to live in source you own, or the next build can drift back to the public base and the public version. You take the Java repo on in-cluster Gitea, commit the mirrored Hummingbird digest and the Lightwell pins, and accept a Renovate pull request that updates those pins. A hand-edit of the same file fails the Check.
-
3.1 Golden-path source — learner-owned Gitea remotes
-
3.2 Bind base and deps — dest Hummingbird
FROMplus Lightwell pins -
3.3 Live Renovate — merge a real
renovate-botPR, not a hand-edit
A trusted pin still fails if the build can reach around it. You remove public FROM lines, Maven Central, and curl from the files the build actually uses, prefetch the declared dependencies, and close egress from the build namespace. The BuildConfig then produces the image and an SBOM from what was already inside the trust boundary.
-
4.1 Source forbid-list — no public
FROM/ Central /curlin active files -
4.2 Prefetch (Hermeto mapping) — Task
prefetch-dependencies -
4.3 Build NetworkPolicy —
build-egressonlw-poc-build -
4.4 Build and SBOM — OpenShift BuildConfig image plus SBOM
The image is an application artifact now, separate from the Lightwell library someone else already signed. You sign it keylessly with Trusted Artifact Signer, tighten Conforma until a known-bad image fails and yours passes, and repeat a key-based verify as you would on a disconnected network. This cluster stays on the network. The procedure is what you are practicing.
-
5.1 Sign (keyless) — RHTAS Fulcio / Rekor / TUF on the app digest
-
5.2 Attest + Conforma — tighten policy; fail then pass
-
5.3 Disconnected verify — second signature with
--key(cluster stays networked)
GitOps is allowed to deploy the signed digest, and admission refuses an unsigned one. Stage is the first remote. Production is a second Gitea remote. You commit the same signed digest there. The Check fails if the prod Application is still tracking stage.
-
6.1 GitOps + admission — stage promote; unsigned deny
-
6.2 Promote to prod repo — commit the signed digest to the prod remote
A signed image still needs a record of what is inside it, and a statement of whether the Lightwell pin closed the CVE. You ingest the promoted digest into Trusted Profile Analyzer, then report the blast radius from the GAV-bound VEX. ACS has to be on for that image. Skipping the ACS check fails the module.
-
7.1 SBOM system of record — ingest the promoted digest into TPA
-
7.2 VEX blast radius + ACS — Lightwell GAV-bound VEX; ACS not skipped
What this workshop does not include
You walk one Java (Maven) supply chain on this OpenShift environment. The table is here so you do not lose time looking in the console for a product this cluster deliberately left out. When a customer asks about that product, the right-hand column is the sentence you use, and the page where this workshop already practiced the underlying control.
| Not in this workshop | What you do instead |
|---|---|
Hosted Konflux |
Builds run as OpenShift Pipelines (the Task and BuildConfig names on the cluster). Names you may hear in a customer conversation are in Konflux mapping. Do not install Konflux. |
A physical air-gap or data diode |
This environment stays on the network. 5.3 is the key-based sign and verify procedure. Disconnected transfer is a simulated file drop, not USB or a diode. |
Building Project Hummingbird images |
You verify and consume published Red Hat Hardened Images. You do not rebuild the Fedora factory that produces them. |
FIPS certification in the lab |
FIPS is a product claim on the image you consume. This workshop does not rebuild an image to produce FIPS evidence. |
JFrog Artifactory, or a Python (FastAPI) application |
The lab application is Java. Nexus is the enterprise proxy you configure. Short callouts cover |
A live Clearinghouse Premier membership, member-specific GAV, or embargo window |
You practice the post-disclosure Network pin and the TSSC controls Premier would reuse (private proxy, exact pin, system of record). You do not request a member-only package or sit inside a real embargo on this cluster. Concept: Lightwell concepts. |
A customer proof-of-value or certification exam |
This is a guided workshop. You practice the flow here. Internal enablement is scored after the event. It is not a live PoV on this environment. |
A production virtual machine |
You promote a signed container digest through GitOps (6.1, 6.2). The same digest can later run on bootc or Satellite; there is no VM to boot here. |
Honor system
The nav does not lock. You can open 7.2 on the first morning and read ahead. The cluster still expects the earlier proof. Skip a Check and a later step fails for a concrete reason: the FROM digest is wrong, the image has no signature, or admission refuses the unsigned image.
Each gated module has an in-cluster Validate Job in the namespace lw-poc-validate. The Job grades the live object you changed and a report ConfigMap token that shows this module was completed. Do the Your change. Fill the token. Run the Job. If the Job already exists, delete it, create it again from ConfigMap validate-job-templates, and read the logs. There is no Solve. You can retry without a quota.
Here is that pattern on 1.1. Every later Check is the same three commands, with that module’s Job name.
The Job also grades ConfigMap report-01-hummingbird-verify key consume_published. Set it to consume-published. Empty or REPLACE_ME fails even if cluster state is correct. Do not copy validate-docs.
oc -n lw-poc-validate edit configmap report-01-hummingbird-verify
The scored Check is Job validate-01-hummingbird-verify in lw-poc-validate. Direct nav URLs still work (honor system). Unlimited retries. There is no Solve.
oc -n lw-poc-validate delete job validate-01-hummingbird-verify --ignore-not-found
TPL='job-01.yaml'
oc -n lw-poc-validate get configmap validate-job-templates \
-o go-template="{{ index .data \"${TPL}\" }}" | oc create -f -
oc -n lw-poc-validate logs -f job/validate-01-hummingbird-verify
Expect CHECK PASSED: before you continue. CHECK FAILED: names the object to fix. Delete the Job and create it again as often as you need.
Expect CHECK PASSED: before you leave a module. CHECK FAILED: names the object to fix.
Before you start
You read this guide in the RHDP Showroom, which is the lab nav plus an embedded terminal. oc, cosign, oc-mirror, and ec are already on PATH. Leave GitHub out of the lab: do not curl it for CLIs, and do not use it as the lab git remote. Gitea is in-cluster.
Discover URLs, digests, and passwords from the demo-userinfo-* ConfigMaps. Inventing a Route host will fail the command that consumes it. The Checks that grade you are the Validate Jobs in lw-poc-validate, and the example above is the one you copy. Never commit credentials: LW_USERNAME, LW_PASSWORD, student_password, or cosign.key.
Official documentation
Open the product docs when a customer asks where a claim is written. They do not replace a Check. The Check is what this cluster grades.
-
Lightwell (Network and Clearinghouse Premier models)
-
Lightwell Network: patch delivery lifecycle (ends at public Disclosure / OSV / VEX)
-
Technologies behind Trusted Application Pipeline (RHTAS, RHTPA, RHDH)
-
Trusted Artifact Signer deployment guide (includes Conforma /
ec)
Start here
Open 1.1 Verify Hummingbird when you are ready to make the first change.
If you are delivering the workshop rather than taking it, the maps sit beside this page. Consultants: delivery map, Konflux mapping, disconnected transfer. Instructors: two-day grouping, which is an envelope for the room, not a timer. After the event: internal enablement checklist. Concepts you may want open in another tab: Lightwell concepts, acronym glossary.



