Questa pagina mostra come eseguire carichi di lavoro con privilegi dei partner di Google Kubernetes Engine (GKE) Autopilot. Scopri come configurare un carico di lavoro di sincronizzazione che installa una lista consentita nel cluster e la mantiene aggiornata.
Questa pagina è dedicata ai seguenti tipi di ruoli:
- Gli esperti di sicurezza che vogliono assicurarsi che i workload di terze parti debbano essere inclusi in una lista consentita per poter essere eseguiti sui cluster e provengano da origini approvate da GKE.
- Gli ingegneri della piattaforma che vogliono attivare i carichi di lavoro di terze parti sui cluster per sbloccare i team di applicazioni.
Per scoprire di più sui ruoli comuni e sugli esempi di attività a cui facciamo riferimento nella nostra documentazione, consulta Ruoli e attività comuni degli utenti di GKE Enterprise.
Prima di leggere questa pagina, assicurati di conoscere quanto segue:
- Risorse personalizzate Kubernetes
- Limitazioni di sicurezza di GKE Autopilot
- Partner di GKE Autopilot
Informazioni sui carichi di lavoro dei partner con privilegi in Autopilot
GKE consente a un sottoinsieme di partner approvati di eseguire carichi di lavoro privilegiati nei cluster Autopilot. Questi carichi di lavoro con privilegi possono aggirare alcuni dei vincoli di sicurezza applicati da Autopilot. Ad esempio, un partner potrebbe dover eseguire un carico di lavoro che utilizza funzionalità Linux specifiche o richiede un contenitore con privilegi.
I partner creano e gestiscono elenchi consentiti per i propri carichi di lavoro con privilegi. Ogni lista consentita è un file che corrisponde a un determinato carico di lavoro del partner con privilegi. I partner inviano questi file della lista consentita a GKE per l'approvazione. Dopo l'approvazione, GKE ospita il file della lista consentita in un repository gestito da Google.
Per eseguire un carico di lavoro del partner, installa il file della lista consentita corrispondente nel tuo cluster. GKE fornisce una risorsa personalizzata Kubernetes denominata
AllowlistSynchronizer
che installa le liste consentite e le mantiene aggiornate.
Dopo aver installato correttamente una lista consentita, puoi eseguire il deployment del corrispondente workload del partner con privilegi.
Bug e richieste di funzionalità per i carichi di lavoro con privilegi e le liste consentite
I partner sono responsabili della creazione, dello sviluppo e della gestione dei propri carichi di lavoro e delle liste consentite con privilegi. Se riscontri un bug o hai una richiesta di funzionalità per un carico di lavoro o una lista consentita con privilegi, contatta il partner corrispondente.
Informazioni sul controller AllowlistSynchronizer
AllowlistSynchronizer
è un controller in esecuzione nel control plane GKE. Esegui il deployment di un nuovo AllowlistSynchronizer
come manifest YAML,
in modo simile a come esegui il deployment di qualsiasi altro carico di lavoro Kubernetes. Nel file manifest, specifica il percorso del file della lista consentita che vuoi installare, che ottieni
dal partner di terze parti. Il sincronizzatore trova il file della lista consentita del partner in un repository gestito da Google e installa la lista consentita nel cluster.
Ogni 10 minuti, il programma di sincronizzazione verifica la presenza di aggiornamenti al file della lista consentita. Se esiste un aggiornamento, il sincronizzatore installa la lista consentita aggiornata nel cluster.
Per interrompere l'autorizzazione di workload specifici, aggiorna gli oggetti AllowlistSynchronizers esistenti per rimuovere i percorsi dei file della lista consentita corrispondenti, quindi elimina l'oggetto WorkloadAllowlist
dal cluster. Se elimini un oggetto WorkloadAllowlist
installato
senza rimuovere il percorso dal sincronizzatore della lista consentita, il sincronizzatore
reinstalla la lista consentita. I partner non possono eliminare i file della lista consentita dal
repository gestito da Google.
Prima di iniziare
Prima di iniziare, assicurati di aver eseguito le seguenti operazioni:
- Attiva l'API Google Kubernetes Engine. Attiva l'API Google Kubernetes Engine
- Se vuoi utilizzare Google Cloud CLI per questa attività,
installa e poi
inizializza gcloud CLI. Se hai già installato gcloud CLI, ottieni la versione più recente eseguendo
gcloud components update
.
Requisiti
- La risorsa personalizzata
AllowlistSynchronizer
richiede GKE versione 1.32.1-gke.1729000 o successive. - Devi sapere quale carico di lavoro del partner vuoi eseguire nel tuo cluster. Consulta la documentazione del tuo partner per istruzioni su come installare il workload con privilegi.
Crea un nuovo AllowlistSynchronizer
Per eseguire un carico di lavoro con privilegi da un partner, aggiungi il percorso del
file della lista consentita corrispondente a una risorsa personalizzata AllowlistSynchronizer
. Poi, esegui il deployment di AllowlistSynchronizer nel tuo cluster.
- In un editor di testo, crea un nuovo file YAML.
Aggiungi i seguenti contenuti al file YAML:
apiVersion: auto.gke.io/v1 kind: AllowlistSynchronizer metadata: name: ALLOWLIST_SYNCHRONIZER_NAME spec: allowlistPaths: - ALLOWLIST1_PATH - ALLOWLIST2_PATH
Sostituisci quanto segue:
ALLOWLIST_SYNCHRONIZER_NAME
: il nome del nuovo sincronizzatore. Scegli un nome descrittivo che identifichi il workload o il team supportato dalla lista consentita.ALLOWLIST1_PATH, ALLOWLIST2_PATH, ...
: uno o più percorsi dei file della lista consentita dei partner da installare. Consulta la documentazione relativa al workload del partner scelto per questo percorso. Puoi specificare intere directory o singoli file.
Esegui il deployment del file YAML nel tuo cluster:
kubectl apply -f PATH_TO_YAML_FILE
Sostituisci
PATH_TO_YAML_FILE
con il percorso del file YAML che hai creato nel passaggio precedente.Il controller
AllowlistSynchronizer
installa i file della lista consentita dai percorsi specificati nel cluster.Attendi che il sincronizzatore riporti uno stato
Ready
:kubectl wait --for=condition=Ready allowlistsynchronizer/ALLOWLIST_SYNCHRONIZER_NAME \ --timeout=60s
Puoi anche integrare il deployment dei carichi di lavoro dei partner nella tua pipeline di integrazione e distribuzione continua (CI/CD). Configura il tuo workflow in modo che attenda l'installazione della lista consentita prima di eseguire il deployment del workload corrispondente.
Aggiornare un AllowlistSynchronizer esistente
Puoi aggiornare un AllowlistSynchronizer esistente per aggiungere o rimuovere file della lista consentita. Potresti aggiornare i sincronizzatori esistenti in situazioni come le seguenti:
- Il partner aggiunge un nuovo file della lista consentita con un nome diverso.
- Vuoi aggiungere una nuova lista consentita dei carichi di lavoro a un sincronizzatore esistente che agrupa le liste consentite correlate.
- Vuoi rimuovere una lista consentita da un sincronizzatore perché non vuoi più utilizzare il workload corrispondente.
Per aggiornare un oggetto AllowlistSynchronizer
esistente:
Elenca i sincronizzatori esistenti nel cluster:
kubectl get allowlistsynchronizer
Apri la specifica del sincronizzatore che vuoi aggiornare in un editor di testo.
Aggiorna il campo
spec.allowlistPaths
per aggiungere, modificare o rimuovere i percorsi dei file della lista consentita.Salva e chiudi l'editor di testo.
Applica la configurazione aggiornata al cluster:
kubectl apply -f PATH_TO_YAML_FILE
Sostituisci
PATH_TO_YAML_FILE
con il percorso del file YAML aggiornato nel passaggio precedente.
Quando esegui il deployment di una configurazione del sincronizzatore aggiornata, il campo managedAllowlistStatus.generation
nello stato dell'oggetto AllowlistSynchronizer
aumenta di uno. Il AllowlistSynchronizer
controller applica quindi le modifiche.
Monitorare lo stato della sincronizzazione della lista consentita
Dopo aver installato un AllowlistSynchronizer
o aggiornato un sincronizzatore esistente,
puoi monitorare lo stato della sincronizzazione. Lo stato ti aiuta a monitorare l'installazione, la rimozione o le modifiche dei file della lista consentita, nonché eventuali errori che potrebbero verificarsi.
Per monitorare lo stato generale della sincronizzazione, esegui il seguente comando:
kubectl get allowlistsynchronizer ALLOWLIST_SYNCHRONIZER_NAME -o yaml
L'output è simile al seguente:
...
status:
conditions:
- type: Ready
status: "False"
reason: "SyncError"
message: "some allowlists failed to sync: example-allowlist-1.yaml"
lastTransitionTime: "2024-10-12T10:00:00Z"
observedGeneration: 2
managedAllowlistStatus:
- filePath: "gs://path/to/allowlist1.yaml"
generation: 1
phase: Installed
lastSuccessfulSync: "2024-10-10T10:00:00Z"
- filePath: "gs://path/to/allowlist2.yaml"
phase: Failed
lastError: "Initial install failed: invalid contents"
lastSuccessfulSync: "2024-10-08T10:00:00Z"
Per una descrizione di questi campi, consulta
Stato AllowlistSynchronizer
.
Verifica che nel cluster esista una lista consentita
Per verificare che nel cluster esista una lista consentita, esegui il seguente comando:
kubectl get workloadallowlist
L'output è un elenco delle liste consentite installate nel cluster. Verifica che l'output includa la lista consentita che vuoi utilizzare.
Esegui il deployment del carico di lavoro con privilegi
Dopo aver installato correttamente una lista consentita, puoi eseguire il deployment del corrispondente workload nel cluster. Il partner che fornisce il carico di lavoro dovrebbe anche fornire le istruzioni di installazione per il carico di lavoro. Per un elenco dei partner di Autopilot e i link alla loro documentazione, consulta Partner di Autopilot.
Eliminare un carico di lavoro con privilegi
Per interrompere l'esecuzione di un carico di lavoro privilegiato nei cluster, rimuovi il percorso della lista consentita corrispondente da AllowlistSynchronizer. Il sincronizzatore disinstalla la lista consentita.
Se elimini un oggetto WorkloadAllowlist
dal cluster anziché aggiornare il sincronizzatore, quest'ultimo reinstalla la lista consentita. Assicurati di rimuovere il percorso da AllowlistSynchronizer
.
Per disinstallare una lista consentita:
- Nel file manifest YAML per il
AllowlistSynchronizer
che gestisce la lista consentita, rimuovi il percorso della lista consentita che vuoi disinstallare. Per istruzioni, consulta la sezione Aggiornare un'istanza AllowlistSynchronizer esistente. Per verificare che la lista consentita sia stata disinstallata, ottieni un elenco di oggetti
WorkloadAllowlist
nel cluster:kubectl get workloadallowlist
Nell'output, assicurati che la lista consentita che volevi rimuovere non sia visualizzata.
Elimina il carico di lavoro dal cluster. Per le istruzioni, consulta la documentazione del fornitore del carico di lavoro.
Impedire l'installazione della lista consentita nei cluster
Per impedire l'installazione di liste consentite di carichi di lavoro privilegiati in cluster specifici, utilizza un ValidatingAdmissionPolicy. La convalida dei criteri di ammissione garantisce che le risorse Kubernetes soddisfino criteri specifici prima di poter essere eseguite nel cluster. Ad esempio, puoi verificare che un'etichetta abbia un valore specifico.
Per impedire l'installazione di liste consentite in un cluster:
Salva il seguente manifest ValidatingAdmissionPolicy come
disallow-allowlists.yaml
:apiVersion: admissionregistration.k8s.io/v1 kind: ValidatingAdmissionPolicy metadata: name: "disallow-allowlists" spec: failurePolicy: Fail matchConstraints: resourceRules: - apiGroups: ["auto.gke.io"] apiVersions: ["*"] operations: ["*"] resources: ["allowlistsynchronizers"] validations: - expression: "false" message: 'AllowlistSynchronizer creation is not allowed'
Salva il seguente manifest ValidatingAdmissionPolicyBinding come
disallow-allowlists-binding.yaml
:apiVersion: admissionregistration.k8s.io/v1 kind: ValidatingAdmissionPolicyBinding metadata: name: "disallow-allowlists-binding" spec: policyName: "disallow-allowlists" validationActions: [Deny]
Esegui il deployment di ValidatingAdmissionPolicy nel cluster:
kubectl apply -f disallow-allowlists.yaml kubectl apply -f disallow-allowlists-binding.yaml
Questo criterio impedisce la creazione di nuovi oggetti AllowlistSynchronizers nel cluster.
Risoluzione dei problemi
Se la sincronizzazione o il deployment del carico di lavoro non vanno a buon fine, consulta Risolvere i problemi di deployment dei carichi di lavoro Autopilot con privilegi.
Passaggi successivi
- Partner di GKE Autopilot
- Funzionalità di sicurezza di GKE Autopilot
- Definizione della risorsa personalizzata AllowlistSynchronizer