Aggiorna una policy di Autorizzazione binaria
Questo documento descrive come escludere le immagini nei criteri di Autorizzazione binaria.
In questo documento, aggiorni il criterio per escludere le immagini container in Artifact Registry dall'applicazione di Autorizzazione binaria e imposti la regola predefinita per impedire il deployment di tutti gli altri container.
Prima di iniziare
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Artifact Registry, Binary Authorization APIs, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Install the Google Cloud CLI.
-
Configure the gcloud CLI to use your federated identity.
For more information, see Sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init - Se non utilizzi Cloud Shell,
installa
kubectl.
Crea un cluster con Autorizzazione binaria abilitata
Crea un cluster GKE con Autorizzazione binaria abilitata. Questo è il cluster in cui vuoi che vengano eseguite le immagini container di cui hai eseguito il deployment.
Console Google Cloud
Vai alla pagina Cluster di GKE nella consoleGoogle Cloud .
La console mostra un elenco di cluster GKE nel tuo progetto Google Cloud .
Fai clic su Crea cluster.
Inserisci
test-clusternel campo Nome.
Seleziona A livello di zona nelle opzioni Tipo di località.
Seleziona
us-central1-adall'elenco a discesa Zona.Nel riquadro di navigazione, nella sezione Cluster, fai clic su Impostazioni avanzate.
Nella riga Autorizzazione binaria, fai clic su edit Modifica configurazione.
Seleziona Attiva Autorizzazione binaria.
Seleziona Solo applicazione e poi fai clic su Salva.
Fai clic su Crea.
gcloud
Esegui gcloud container clusters create con il flag --binauthz-evaluation-mode=PROJECT_SINGLETON_POLICY_ENFORCE
abilitato.
gcloud container clusters create \
--binauthz-evaluation-mode=PROJECT_SINGLETON_POLICY_ENFORCE \
--zone us-central1-a \
test-cluster
Visualizzare la policy predefinita
Per impostazione predefinita, la policy di Autorizzazione binaria è configurata per consentire il deployment di tutte le immagini container.
Console Google Cloud
Per visualizzare la policy predefinita:
Vai alla pagina Autorizzazione binaria nella console Google Cloud .
La console mostra i dettagli della policy.
Fai clic su Modifica policy.
In Regola predefinita del progetto, l'opzione Consenti tutte le immagini è selezionata.
gcloud
Per visualizzare la policy predefinita, esporta il file YAML della policy:
gcloud container binauthz policy export
Per impostazione predefinita, il file contiene quanto segue:
globalPolicyEvaluationMode: ENABLE
defaultAdmissionRule:
evaluationMode: ALWAYS_ALLOW
enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG
name: projects/<var>PROJECT_ID</var>/policy
API REST
Per visualizzare la policy predefinita, recuperala in formato JSON nel seguente modo:
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 la policy per esentare le immagini e impedire la distribuzione di tutte le altre immagini.
Console Google Cloud
Per modificare la policy:
Torna alla pagina Autorizzazione binaria nella console Google Cloud .
Fai clic su Modifica policy.
Seleziona Non consentire tutte le immagini.
Nella sezione Immagini esenti dalle regole di deployment, espandi Percorsi delle immagini.
Fai clic su Aggiungi percorsi delle immagini.
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.0Fai 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 Artifact Registry:
Esporta il file YAML della policy:
gcloud container binauthz policy export > /tmp/policy.yaml
In un editor di testo, modifica
evaluationModedaALWAYS_ALLOWaALWAYS_DENYe aggiungi le immagini esenti aadmissionWhitelistPatterns.Per esentare le seguenti immagini di esempio da Artifact Registry, modifica il file YAML della policy come segue:
admissionWhitelistPatterns: - 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>/policyImporta di nuovo il file YAML della policy in Autorizzazione binaria:
gcloud container binauthz policy import /tmp/policy.yaml
API REST
Per modificare la policy:
Crea un file di testo con il criterio aggiornato in formato JSON:
cat > /tmp/policy.json << EOM { "name": "projects/${PROJECT_ID}/policy", "admissionWhitelistPatterns": [ { "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" } } EOMInvia 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 la policy
Per testare la policy eseguendo il deployment dell'immagine che hai aggiunto alla lista consentita Exempt image:
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 consoleGoogle Cloud .
Fai clic su Esegui il deployment.
La console ti chiede di inserire i dettagli sul deployment.
Seleziona Immagine container esistente.
Inserisci il percorso dell'immagine container.
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.0Fai clic su Continua.
Inserisci
hello-servernel campo Nome applicazione.Fai clic su Esegui il deployment.
kubectl
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 sia stato consentito il deployment dell'immagine:
Console Google Cloud
Per verificare che l'immagine sia stata eseguita il deployment:
- Vai alla pagina GKE.
- Vai alla pagina Workload.
Il workload
hello-serverviene visualizzato con un'icona verde, che indica che è in esecuzione.kubectl
Per verificare che il deployment dell'immagine sia stato consentito, inserisci questo comando:
kubectl get pods
Vedrai l'immagine in esecuzione.
Elimina il pod.
Console Google Cloud
Nella pagina Workload di GKE:
Seleziona il workload 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 relativi alle 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 consoleGoogle Cloud .
Seleziona il cluster
test-clustere fai clic su Elimina.
gcloud
Per eliminare il cluster, inserisci questo 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 Esenzione delle immagini.
- Per tutorial end-to-end che descrivono come configurare e applicare un criterio che richiede attestazioni, consulta quanto segue:
- Leggi le nostre risorse su DevOps ed esplora il programma di ricerca DevOps Research and Assessment (DORA).