Abbiamo già avuto modo di vedere in passato cosa siano le artifact attestation, ovvero un meccanismo per certificare la provenienza di determinati artefatti, siano essi degli file di testo, dei file zip, dei pacchetti di NuGet/npm o addirittura immagini da utilizzare in container, prodotti dalle nostre pipeline (https://www.dopsitalia.com/script/121/Garantire-Provenienza-Integrita-Artefatti-Prodotti-GitHub.aspx).
Nell'articolo non avevamo approfondito l'aspetto di verifica e controllo della provenienza, in quanto è banale ed è risolvibile con una sola chiamata tramite CLI per gli artefatti più semplici, ma cosa succede nel momento in cui vogliamo più governance delle immagini Docker per, ad esempio, evitare che queste vengano installate nel nostro cluster Kubernetes nel momento in cui la provenienza non è certificata?
Per farlo ci basta installare nel nostro cluster un policy controller (può essere Sigstore, Kyverno o qualsiasi altro):
helm upgrade policy-controller --install --atomic --create-namespace --namespace artifact-attestations oci://ghcr.io/github/artifact-attestations-helm-charts/policy-controller --version v0.10.0-github9
Questo è solo l'engine che validerà le nostre policy che, ancora una volta, saranno o scritte da noi, oppure "riciclate" da quelle già definite da Sigstore:
helm upgrade trust-policies --install --atomic --namespace artifact-attestations oci://ghcr.io/github/artifact-attestations-helm-charts/trust-policies --version v0.6.2 --set policy. Enabled=true --set policy. Organization=MY-ORGANIZATION
Poiché questa policy di default controlla gli oggetti contenuti in determinati namespace, per capire quali namespace deve monitorare, dobbiamo applicargli una label:
kubectl label namespace MY-NAMESPACE policy.sigstore.dev/include=true
Ogni qualvolta proveremo a far partire un nuovo pod all'interno del cluster, in un namespace monitorato, il policy engine validerà la policy e, se non è presente alcun attestato di provenienza da un workflow di GitHub per l'immagine o l'artefatto OCI, allora verrà rifiutato l'ingresso nel cluster, altrimenti l'installazione proseguirà come al solito.
Eventualmente è anche possibile escludere un determinato set di immagini nel momento in cui installiamo le policy:
helm upgrade trust-policies --install --atomic --namespace artifact-attestations oci://ghcr.io/github/artifact-attestations-helm-charts/trust-policies --version v0.6.2 --set policy. Enabled=true --set policy. Organization=MY-ORGANIZATION --set-json 'policy.exemptImages=["index.docker.io/library/busybox**"]' --set-json 'policy.images=["ghcr.io/MY-ORGANIZATION/**"]'
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Realizzare un accordion con gli elementi HTML details e summary
Ottimizzare gli indici con Automatic Index Compaction in Azure SQL Database
Centralizzare gli endpoint AI Foundry con Azure API Management
Testare le API di Azure Resource Manager con API Playground
Impostare la content-visibility in CSS per ottimizare il rendering iniziale di una pagina
Creare un agente A2Acon Azure Logic Apps
Effettuare un clone parziale di un repository di GitHub
Impostare automaticamente l'altezza del font tramite CSS
Raggruppamento degli aggiornamenti di dipendenze tra directory in un monorepo con Dependabot
Semplificare la gestione dei modelli con Azure AI Foundry Model Router
Utilizzare il top layer in HTML
Utilizzare zizmor per rendere più sicuri i workflow di GitHub


