Questa pagina descrive come verificare le connessioni effettuate dal personale Google al control plane del tuo cluster Google Kubernetes Engine (GKE) correlando i log GKE con i log di Access Transparency.
I log di Access Transparency registrano le azioni intraprese dal personale di Google quando accede ai tuoi contenuti. Questa guida è rivolta agli amministratori della sicurezza che vogliono verificare ulteriormente i contenuti dei log di Access Transparency e le approvazioni dell'accesso associate correlandoli con altre origini di registrazione di GKE. Questa verifica è del tutto facoltativa e non è obbligatoria per proteggere il tuo control plane.
Assicurati di conoscere i seguenti concetti:
- Access Transparency
- Log di Access Transparency
- Approvazione accesso
- Connessioni SSH in Compute Engine
Questa pagina descrive una parte di un insieme di funzionalità facoltative del piano di controllo in GKE che ti consente di eseguire attività come verificare la posizione di sicurezza del piano di controllo o configurare la crittografia e la firma delle credenziali nel piano di controllo utilizzando le chiavi che gestisci. Per maggiori dettagli, consulta Informazioni sull'autorità del piano di controllo GKE.
Per impostazione predefinita, Google Cloud applica varie misure di sicurezza al control plane gestito. Questa pagina descrive funzionalità facoltative che ti offrono maggiore visibilità o controllo sul piano di controllo di GKE.
Informazioni sull'accesso di Google alle istanze del control plane del cluster
Durante le sessioni di risoluzione dei problemi o per altri motivi commerciali giustificati, il personale di Google, come gli addetti all'affidabilità del sito e i dipendenti assistenza clienti Google Cloud, potrebbe avere bisogno di accesso amministrativo alle istanze Compute Engine che ospitano il tuo piano di controllo. A seconda del pacchetto di assistenza clienti e della configurazione, Access Transparency fornisce audit log dettagliati per questo accesso amministrativo. Access Approval ti consente di richiedere l'approvazione esplicita prima che il personale di Google possa accedere alle tue risorse. Per scoprire di più sull'accesso amministrativo e sugli strumenti che puoi utilizzare per autorizzare l'accesso e registrare le modifiche, consulta Accesso amministrativo per i dipendenti di Google.
Log di accesso al control plane
Quando attivi l'autorità del piano di controllo GKE, GKE genera log di accesso al piano di controllo che puoi utilizzare facoltativamente per eseguire il cross-reference dei log di controllo generati da Access Transparency e Access Approval. GKE aggiunge i log di accesso al piano di controllo al bucket _Default
in Logging per registrare le connessioni di rete in entrata ed eventi SSH specifici nelle istanze del piano di controllo. Per generare log di accesso al piano di controllo per i tuoi cluster, devi attivare l'autorità del piano di controllo GKE nel tuo progetto.
GKE genera i seguenti log di accesso per il piano di controllo:
Il volume dei log di connessione del piano di controllo dipende da fattori quali il numero di nodi nel cluster, il numero di istanze del piano di controllo (i cluster regionali hanno più istanze del piano di controllo rispetto ai cluster zonali) e la frequenza con cui i tuoi carichi di lavoro chiamano il server API Kubernetes. Il volume dei log SSH è ridotto e dipende dal numero di riavvii del nodo.
Per verificare le connessioni al piano di controllo, individua i log di accesso al piano di controllo per il tuo cluster e associali ai log di controllo di Access Transparency e Approvazione accesso. In questo modo puoi verificare che tutte le connessioni SSH alle istanze del piano di controllo sono state generate dall'accesso amministrativo autorizzato del personale di Google. Quando attivi l'autorità del control plane GKE per il tuo cluster, tutto l'accesso SSH da parte del personale di Google al tuo control plane è non interattivo, il che significa che ogni connessione SSH esegue un singolo comando che autorizzi.
Prezzi
Si applicano le seguenti considerazioni sui prezzi:
- I log di accesso al piano di controllo sono soggetti ai prezzi di Logging.
- Access Transparency è incluso in abbonamenti specifici per l'Assistenza clienti. Per maggiori dettagli, consulta Prezzi di Access Transparency.
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
.
Abilita l'API Cloud Logging.
Attiva Access Transparency per la tua organizzazione. Per le istruzioni, consulta Attivare Access Transparency.
Se vuoi, abilita Access Approval per il tuo progetto e seleziona il servizio GKE. Per istruzioni, consulta Esaminare e approvare le richieste di accesso utilizzando la chiave di firma gestita da Google.
Assicurati che il tuo ambiente sia idoneo all'utilizzo delle funzionalità dell'autorità del control plane GKE. Per attivare queste funzionalità, contatta il team di vendita di Google Cloud.
Requisiti
I log di accesso al piano di controllo richiedono GKE 1.31.1-gke.1846000 o versioni successive.
Ruoli e autorizzazioni richiesti
Per ottenere le autorizzazioni necessarie per attivare la generazione dei log e per accedere ed elaborare i log, chiedi all'amministratore di concederti i seguenti ruoli IAM:
-
Attiva il logging delle connessioni del control plane nel cluster:
Amministratore di cluster Kubernetes Engine (
roles/container.clusterAdmin
) nel progetto -
Accedi ai log e utilizza Esplora log e Analisi dei log:
Visualizzatore log (
roles/logging.viewer
) nel tuo progetto -
Attiva Access Transparency per l'organizzazione:
Amministratore Access Transparency (
roles/axt.admin
) nella tua organizzazione
Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.
Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
Abilita i log di accesso al control plane del cluster GKE
Puoi attivare la generazione di log di accesso al piano di controllo per i cluster in modalità Autopilot e in modalità standard attivando il componente di registrazione corrispondente. Per ulteriori informazioni sui tipi di log del control plane, consulta Visualizzare i log di GKE.
I nomi dei componenti di logging supportati per i log di accesso del piano di controllo sono i seguenti:
- Log SSH del piano di controllo:
KCP_SSHD
- Log delle connessioni del piano di controllo:
KCP_CONNECTION
Attivare i log di accesso al piano di controllo in un nuovo cluster
L'esempio seguente crea un cluster in modalità Autopilot con entrambi i tipi di log di accesso al piano di controllo abilitati. Per attivare un solo tipo di log di accesso al piano di controllo, ometti il nome del componente corrispondente dal comando.
gcloud container clusters create-auto CLUSTER_NAME \
--location=LOCATION \
--logging=SYSTEM,KCP_SSHD,KCP_CONNECTION
Sostituisci quanto segue:
CLUSTER_NAME
: il nome del nuovo cluster.LOCATION
: la posizione in cui creare il cluster.
Per specificare i componenti di logging quando crei un cluster utilizzando l'API GKE, nel metodo projects.locations.clusters.create
imposta i valori corrispondenti nell'oggetto LoggingConfig
della risorsa Cluster
.
Attivare i log di accesso al control plane su un cluster esistente
Per aggiornare la configurazione di logging di un cluster esistente in modo da attivare i log di accesso al piano di controllo, devi eseguire i seguenti passaggi:
- Individua i componenti di logging esistenti utilizzati dal tuo cluster.
- Identifica i valori corrispondenti da specificare nel flag
--logging
nell'gcloud CLI per mantenere attivi questi componenti di logging. - Aggiorna la configurazione del logging del cluster per attivare i log di accesso al control plane insieme alla configurazione di logging esistente.
I valori specificati per il flag --logging
nel comando gcloud container clusters update
sono diversi da quelli visualizzati quando descrivi il cluster.
Controlla la configurazione di logging esistente del cluster:
gcloud container clusters describe CLUSTER_NAME \ --location=LOCATION \ --flatten=loggingConfig \ --format='csv[delimiter=",",no-heading](componentConfig.enableComponents)'
L'output è simile al seguente:
SYSTEM_COMPONENTS,WORKLOADS,APISERVER,SCHEDULER,CONTROLLER_MANAGER
Identifica i valori gcloud CLI per il flag
--logging
che corrisponde alla configurazione del componente di logging dall'output del passaggio precedente. Per un elenco dei valori gcloud CLI che corrispondono a componenti di registrazione specifici, consulta la tabella Log disponibili.Aggiorna la configurazione di logging con i log di accesso al control plane:
gcloud container clusters update CLUSTER_NAME \ --location=LOCATION \ --logging=SYSTEM,EXISTING_LOGS,KCP_ACCESS_LOGS
Sostituisci quanto segue:
EXISTING_LOGS
: un elenco separato da virgole dei componenti di logging già utilizzati dal cluster. Assicurati di specificare i valori della CLI gcloud corrispondenti a questi componenti di registrazione, ricavati dalla tabella Log disponibili.KCP_ACCESS_LOGS
: un elenco separato da virgole dei tipi di log di accesso al piano di controllo da attivare per il cluster, come segue:- Per i log SSH del piano di controllo, specifica
KCP_SSHD
. - Per i log di connessione del piano di controllo, specifica
KCP_CONNECTION
.
- Per i log SSH del piano di controllo, specifica
Per specificare i componenti di logging quando aggiorni un cluster utilizzando l'API GKE, nel metodo projects.locations.clusters.update
imposta i valori esistenti e dei nuovi componenti di logging nell'oggetto LoggingConfig
della risorsa ClusterUpdate
.
Aggiornamento del cluster di esempio per abilitare i log di accesso al piano di controllo
Consideriamo un cluster per il quale il comando gcloud container clusters describe
ha la seguente configurazione di logging:
SYSTEM_COMPONENTS,WORKLOADS,APISERVER,SCHEDULER,CONTROLLER_MANAGER
Il seguente comando di aggiornamento del cluster attiva entrambi i tipi di log di accesso al piano di controllo mantenendo la configurazione dei log esistente per questo cluster di esempio:
gcloud container clusters update example-cluster \
--location=us-central1 \
--logging=SYSTEM,WORKLOAD,API_SERVER,SCHEDULER,CONTROLLER_MANAGER,KCP_SSHD,KCP_CONNECTION
Eseguire il confronto incrociato dei log di accesso al piano di controllo con i log di Access Transparency
Per verificare l'accesso al control plane per un cluster, recupera i log di connessione del control plane, i log SSH del control plane e i log di Access Transparency per quel cluster:
Nella console Google Cloud, apri la pagina Esplora log.
Per recuperare tutti i log di un cluster specifico, inclusi i log di accesso al piano di controllo e i log di Access Transparency, esegui la seguente query:
(logName="projects/PROJECT_ID/logs/container.googleapis.com%2Fkcp-connection" resource.labels.cluster_name="CLUSTER_NAME" jsonPayload.connection.dest_port="22") OR (logName="projects/PROJECT_ID/logs/container.googleapis.com%2Fkcp-sshd" resource.labels.cluster_name="CLUSTER_NAME") OR (logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Faccess_transparency" json_payload.accesses.methodName="GoogleInternal.SSH.Master" json_payload.accesses.resourceName="//container.googleapis.com/projects/PROJECT_NUMBER/locations/LOCATION/clusters/CLUSTER_NAME")
L'output dovrebbe mostrare tutti i seguenti tipi di log per il cluster:
- Log di Access Transparency
- Log delle connessioni del control plane
- Log SSH per ogni sessione SSH
Eseguire i controlli di verifica
Il controllo di verifica principale consiste nel verificare se vengono visualizzati tutti i tipi di log per eventuali connessioni SSH quando esegui la query di logging della sezione precedente. Ogni log di Access Transparency deve avere un log di connessione del control plane corrispondente e uno o più log SSH. Questi log riguardano le azioni eseguite dagli utenti nelle istanze del piano di controllo, pertanto il volume dei log dovrebbe essere ridotto.
Se vuoi, puoi eseguire i seguenti controlli aggiuntivi dei contenuti dei log:
- Per ogni log SSH del piano di controllo, controlla se esiste un log di Access Transparency in un intervallo di 15 minuti prima del timestamp del log SSH. Questo intervallo di tempo tiene conto della chiusura della sessione SSH finale che si verifica diversi minuti dopo la registrazione della connessione iniziale da parte di Access Transparency.
- Per ogni log di connessione del control plane, controlla se esiste un log di Access Transparency in un intervallo di 5 minuti prima del timestamp del log di connessione del control plane.
Se utilizzi Access Approval per il tuo cluster, controlla se ogni log di Access Transparency ha un campo
accessApprovals
corrispondente. Esegui il confronto tra questo campo e le richieste di approvazione dell'accesso per il tuo cluster.Per ricevere richieste di approvazione di accesso per il tuo progetto, consulta Visualizzare le richieste di approvazione di accesso storiche. L'approvazione dell'accesso potrebbe essere soggetta a esclusioni.
Se vuoi, convalida la firma dell'approvazione dell'accesso firmata associata al log di Access Transparency.
Dettagli del log di accesso al control plane
Questa sezione fornisce dettagli ed esempi dei log di accesso al piano di controllo che GKE genera quando il personale di Google si connette alle tue istanze del piano di controllo.
Log delle connessioni del piano di controllo
GKE aggiunge un log delle connessioni del piano di controllo per ogni nuova connessione di rete in entrata a un'istanza del piano di controllo. Questi log includono dettagli specifici come:
- Indirizzi IP e porte di origine e di destinazione
- Direzione e protocollo di connessione
Di seguito è riportato un esempio di log di connessione del piano di controllo:
{
insertId: "z1eq8wonio335a5h",
jsonPayload: {
instance: {
vm_name: "gke-dee49f0d6fa34ce3a2ac-f513-d195-vm",
zone: "us-central1-c"
},
cluster: {
cluster_id: "CLUSTER_ID",
cluster_urn: "//container.googleapis.com/projects/PROJECT_NUMBER/locations/us-central1-c/clusters/CLUSTER_NAME"
},
connection: {
state: "NEW",
src_ip: "192.0.2.100",
src_port: 32774,
dest_ip: "203.0.113.12",
dest_port: 22,
direction: "INGRESS"
protocol: "TCP"
},
}
logName: "projects/PROJECT_ID/logs/container.googleapis.com%2Fkcp-connection",
receiveTimestamp: "2024-04-11T04:08:01.883070399Z",
resource: {
labels: {
cluster_name: "CLUSTER_NAME",
location: "us-central1-c",
project_id: "PROJECT_ID"
}
type: "gke_cluster",
}
severity: "NOTICE",
timestamp: "2024-04-11T04:07:59.019330Z"
}
I seguenti campi della voce di log sono pertinenti per verificare le azioni di Google:
cluster.cluster_urn
: l'identificatore risorsa completo del cluster. Questo identificatore ha il formato//container.googleapis.com/projects/PROJECT_NUMBER/locations/LOCATION/clusters/CLUSTER_NAME
, con le seguenti variabili:PROJECT_NUMBER
: il numero numerico del progetto cluster.LOCATION
: la località Google Cloud del tuo cluster.CLUSTER_NAME
: il nome del tuo cluster.
connection
: dettagli sul tentativo di connessione. Questo campo contiene le seguenti informazioni:state
: lo stato della connessione. Per le nuove connessioni, il valore èNEW
.src_ip
: l'indirizzo IP dell'origine della connessione.src_port
: il numero di porta dell'origine della connessione.dest_ip
: l'indirizzo IP interno della VM del control plane.dest_port
: il numero della porta di destinazione.direction
: la direzione di connessione. Il valore è sempreINGRESS
.protocol
: il protocollo IP, ad esempioTCP
.
Log SSH del piano di controllo
GKE aggiunge i log SSH del piano di controllo per gli eventi correlati alle connessioni SSH alle istanze del piano di controllo. GKE registra i seguenti eventi:
- Chiave SSH accettata per un utente
- Lo stato della sessione è passato da 0 a 1, a indicare che l'utente ha eseguito l'accesso
- Sessione SSH aperta
- Sessione SSH chiusa
- Lo stato della sessione è passato da 1 a 0, a indicare che l'utente ha eseguito la disconnessione
- Sessione SSH non riuscita
Ad esempio, il seguente log SSH del piano di controllo riguarda l'apertura di una sessione SSH:
{
insertId: "8llczemdulwbbwpa",
jsonPayload: {
instance: {
vm_name: "gke-06cb920c609941c0a5ce-6840-40e9-vm",
zone: "us-central1-c"
},
cluster: {
cluster_id: "891e6d12889747748c1ac16ffcc6cb7c0a96450b36864eb680917c119fd801d0",
cluster_urn: "//container.googleapis.com/projects/PROJECT_NUMBER/locations/us-central1/clusters/CLUSTER_NAME",
},
message: "pam_unix(sshd:session): session opened for user REDACTED by (uid=0)",
},
logName: "projects/PROJECT_ID/logs/container.googleapis.com%2Fkcp-ssh",
receiveTimestamp: "2024-04-09T13:21:55.231436462Z"
resource: {
type: "gke_cluster",
labels: {
cluster_name: "CLUSTER_NAME",
location: "us-central1",
project_id: "PROJECT_ID"
}
},
severity: "NOTICE",
timestamp: "2024-04-09T13:21:50.742246Z"
}
I seguenti campi della voce di log sono pertinenti per verificare le azioni di Google:
cluster.cluster_urn
: l'identificatore risorsa completo del cluster. Questo identificatore ha il formato//container.googleapis.com/projects/PROJECT_NUMBER/locations/LOCATION/clusters/CLUSTER_NAME
, con le seguenti variabili:PROJECT_NUMBER
: il numero numerico del progetto del cluster.LOCATION
: la località Google Cloud del tuo cluster.CLUSTER_NAME
: il nome del tuo cluster.
message
: dettagli sulla connessione SSH.
Disattivare i log di accesso del control plane
Per visualizzare i tipi di log specifici utilizzati dal cluster, esegui il seguente comando:
gcloud container clusters describe CLUSTER_NAME \ --location=LOCATION \ --flatten=loggingConfig \ --format='csv[delimiter=",",no-heading](componentConfig.enableComponents)'
L'output è simile al seguente:
SYSTEM_COMPONENTS,WORKLOADS,API_SERVER,SCHEDULER,CONTROLLER_MANAGER,KCP_SSHD,KCP_CONNECTION
Per disattivare i log di accesso al piano di controllo per un cluster, esegui il seguente comando:
gcloud container clusters update CLUSTER_NAME \ --location=LOCATION \ --logging=SYSTEM,WORKLOAD,API_SERVER,SCHEDULER,CONTROLLER_MANAGER
Nel flag --logging
, specifica i componenti di registrazione dall'output del
comando precedente. Questo comando di esempio disattiva i log di accesso al piano di controllo, ma mantiene attivi gli altri log dei componenti del piano di controllo.
Per disattivare i componenti di logging utilizzando l'API GKE, imposta i valori corrispondenti nell'oggetto LoggingConfig
della risorsa ClusterUpdate
nel metodo projects.locations.clusters.update
.
Passaggi successivi
- Scopri di più sulla sicurezza del piano di controllo.
- Scopri di più sull'accesso amministrativo per i dipendenti di Google.
- Scopri come configurare il logging e il monitoraggio per GKE.
- Scopri come configurare l'accesso ai log a livello di campo.
- Scopri di più sui limiti di utilizzo della registrazione.