Aggiornare un criterio di Autorizzazione binaria
Questo documento descrive come escludere le immagini in Criteri di Autorizzazione binaria.
In questo documento, aggiorni il criterio per esentare le immagini container in Container Registry e Artifact Registry dall'applicazione dell'Autorizzazione binaria e imposta la regola predefinita per non consentire il deployment di tutti gli altri container.
Prima di iniziare
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Binary Authorization APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Artifact Registry, Binary Authorization APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
- Se non utilizzi Cloud Shell,
installare
kubectl
.
Creare un cluster con Autorizzazione binaria abilitata
Crea un cluster GKE con Autorizzazione binaria in un bucket in cui è abilitato il controllo delle versioni. Si tratta del cluster in cui vuoi eseguire le immagini container di cui è stato eseguito il deployment.
Console Google Cloud
Vai alla pagina Cluster di GKE nella console Google Cloud.
La console mostra un elenco di cluster GKE nel tuo progetto Google Cloud.
Fai clic su Crea cluster.
Inserisci
test-cluster
nel campo Nome.Seleziona A livello di zona nelle opzioni Tipo di località.
Seleziona
us-central1-a
dall'elenco a discesa Zona.Fai clic sul link Sicurezza per visualizzare il riquadro Sicurezza.
Nel riquadro Sicurezza, seleziona Attiva Autorizzazione binaria.
Seleziona Solo applicazione forzata.
Fai clic su Crea.
gcloud
Esegui gcloud container clusters create
con il flag --binauthz-evaluation-mode=PROJECT_SINGLETON_POLICY_ENFORCE
attivo.
gcloud container clusters create \ --binauthz-evaluation-mode=PROJECT_SINGLETON_POLICY_ENFORCE \ --zone us-central1-a \ test-cluster
Visualizza il criterio predefinito
Per impostazione predefinita, il criterio di Autorizzazione binaria è configurato in modo da consentire delle immagini container di cui eseguire il deployment.
Console Google Cloud
Per visualizzare il criterio predefinito:
Vai alla pagina Autorizzazione binaria nella console Google Cloud.
Nella console vengono visualizzati i dettagli del criterio.
Fai clic su Modifica criterio.
In Regola predefinita del progetto, l'opzione Consenti tutte le immagini è selezionato.
gcloud
Per visualizzare il criterio predefinito, esporta il file YAML del criterio:
gcloud container binauthz policy export
Per impostazione predefinita, il file ha i seguenti contenuti:
globalPolicyEvaluationMode: ENABLE
defaultAdmissionRule:
evaluationMode: ALWAYS_ALLOW
enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG
name: projects/<var>PROJECT_ID</var>/policy
API REST
Per visualizzare il criterio predefinito, recuperalo in formato JSON come segue:
curl \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "x-goog-user-project: ${PROJECT_ID}" \ "https://binaryauthorization.googleapis.com/v1/projects/${PROJECT_ID}/policy"
L'API REST restituisce quanto segue:
{ "name": "projects/PROJECT_ID/policy", "globalPolicyEvaluationMode": "ENABLE", "defaultAdmissionRule": { "evaluationMode": "ALWAYS_ALLOW", "enforcementMode": "ENFORCED_BLOCK_AND_AUDIT_LOG" } }
Consenti solo immagini esenti
Questa sezione descrive come modificare il criterio per esentare le immagini e non consentire il deployment di tutte le altre immagini.
Console Google Cloud
Per modificare il criterio:
Torna alla pagina Autorizzazione binaria nella console Google Cloud.
Fai clic su Modifica criterio.
Seleziona Non consentire tutte le immagini.
In Immagini esenti da regole di deployment, espandi Percorsi immagine.
Fai clic su Aggiungi percorsi immagine.
Container Registry
In Nuovo percorso immagine, incolla il seguente percorso da un Repository di Container Registry:
gcr.io/google-samples/hello-app:1.0
Artifact Registry
In Nuovo percorso immagine, incolla il seguente percorso da un Repository Artifact Registry:
us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
Fai clic su Fine per salvare il percorso dell'immagine.
Fai clic su Save Policy (Salva criterio).
gcloud
Per modificare il criterio in modo da consentire le immagini di esempio da Container Registry e Artifact Registry, procedi nel seguente modo:
Esporta il file YAML del criterio:
gcloud container binauthz policy export > /tmp/policy.yaml
In un editor di testo, modifica
evaluationMode
daALWAYS_ALLOW
aALWAYS_DENY
e aggiungi le immagini esenti aadmissionWhitelistPatterns
.Per esentare le seguenti immagini di esempio da Container Registry e Artifact Registry, modifica il file YAML delle norme come segue:
admissionWhitelistPatterns: - namePattern: gcr.io/google-samples/hello-app:1.0 - namePattern: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0 globalPolicyEvaluationMode: ENABLE defaultAdmissionRule: evaluationMode: ALWAYS_DENY enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG name: projects/<var>PROJECT_ID</var>/policy
Importa di nuovo il file YAML del criterio in Autorizzazione binaria:
gcloud container binauthz policy import /tmp/policy.yaml
API REST
Per modificare il criterio:
Crea un file di testo con i criteri aggiornati in formato JSON:
cat > /tmp/policy.json << EOM { "name": "projects/${PROJECT_ID}/policy", "admissionWhitelistPatterns": [ { "namePattern": "gcr.io/google-samples/hello-app:1.0" }, { "namePattern": "us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0" } ], "globalPolicyEvaluationMode": "ENABLE", "defaultAdmissionRule": { "evaluationMode": "ALWAYS_DENY", "enforcementMode": "ENFORCED_BLOCK_AND_AUDIT_LOG" } } EOM
Invia il criterio aggiornato all'API REST:
curl -X PUT \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "x-goog-user-project: ${PROJECT_ID}" \ --data-binary @/tmp/policy.json \ "https://binaryauthorization.googleapis.com/v1/projects/${PROJECT_ID}/policy"
Testa il criterio
Per testare il criterio disadoperando l'immagine che hai aggiunto alla lista consentita Exempt image
,
segui questi passaggi:
Esegui il deployment di un'immagine esente nel cluster.
Console Google Cloud
Esegui il deployment di un'immagine esente:
Vai alla pagina Cluster di GKE nella console Google Cloud.
Fai clic su Esegui il deployment.
La console ti chiede di inserire i dettagli del deployment.
Seleziona Immagine container esistente.
Inserisci il percorso dell'immagine container.
Container Registry
Per eseguire il deployment di un'immagine da Container Registry, inserisci quanto segue:
gcr.io/google-samples/hello-app:1.0
Artifact Registry
Per eseguire il deployment di un'immagine da Artifact Registry, inserisci quanto segue:
us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
Fai clic su Continua.
Inserisci
hello-server
nel campo Nome applicazione.Fai clic su Esegui il deployment.
kubectl
Container Registry
Esegui il deployment dell'immagine da Container Registry:
kubectl run hello-server --image gcr.io/google-samples/hello-app:1.0 --port 8080
Artifact Registry
Esegui il deployment dell'immagine da Artifact Registry:
kubectl run hello-server --image us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0 --port 8080
Verifica che il deployment dell'immagine sia stato consentito:
Console Google Cloud
Per verificare che sia stato eseguito il deployment dell'immagine, segui questi passaggi:
- Vai alla pagina GKE.
- Vai alla pagina Carichi di lavoro.
Il carico di lavoro
hello-server
viene visualizzato con un'icona verde, che indica che è in esecuzione.kubectl
Per verificare che il deployment dell'immagine sia stato consentito, inserisci il seguente comando:
kubectl get pods
Vedrai l'immagine in esecuzione.
Elimina il pod.
Console Google Cloud
Nella pagina Carichi di lavoro di GKE:
Seleziona il carico di lavoro hello-server.
Fai clic su Elimina.
Quando ti viene chiesto di eliminare le risorse, fai clic su Elimina.
kubectl
kubectl delete pod hello-server
Esegui la pulizia
Per evitare che al tuo account Google Cloud vengano addebitati costi per le risorse utilizzate in questa pagina, segui questi passaggi.
Elimina il cluster che hai creato in GKE:
Console
Per eliminare il cluster:
Vai alla pagina Cluster di GKE nella console Google Cloud.
Seleziona il cluster
test-cluster
e fai clic su Elimina.
gcloud
Per eliminare il cluster, inserisci il seguente comando:
gcloud container clusters delete \ --zone=us-central1-a \ test-cluster
Passaggi successivi
- Per scoprire di più sull'esenzione delle immagini, incluso l'utilizzo di caratteri jolly per esentare più immagini, consulta Esentare le immagini.
- Per tutorial end-to-end che descrivono come configurare e applicare un criterio che e richiede attestazioni, consulta quanto segue:
- Leggi le nostre risorse su DevOps ed esplora il programma di ricerca DevOps Research and Assessment (DORA).