.
Questa pagina mostra come utilizzare i log per controllare l'emissione e l'utilizzo delle identità Kubernetes, sotto forma di certificati e token del account di servizio, da parte del control plane del cluster Google Kubernetes Engine (GKE). Questa verifica è del tutto facoltativa e non è necessaria per proteggere il control plane.
Questa guida è destinata agli amministratori della sicurezza e ai proprietari della piattaforma che hanno requisiti specifici di conformità o policy organizzativa per il controllo dell'emissione e della firma delle credenziali. Devi aver già configurato chiavi e CA autogestite con l'autorità del control plane GKE.
Dovresti già avere familiarità con i seguenti concetti:
Questa pagina descrive una parte di un insieme di funzionalità opzionali del control plane in GKE che ti consente di eseguire attività come la verifica del livello di sicurezza del control plane o la configurazione della crittografia e della firma delle credenziali nel control plane utilizzando chiavi che gestisci. Per maggiori dettagli, consulta l'articolo Informazioni sull'autorità del piano di controllo GKE.
Per impostazione predefinita, Trusted Cloud applica varie misure di sicurezza al piano di controllo gestito. Questa pagina descrive le funzionalità facoltative che offrono maggiore visibilità o controllo sul piano di controllo GKE.
Informazioni sui log di emissione dell'identità
I log di emissione delle identità GKE sono audit log del control plane che registrano quando il control plane emette le credenziali e quando queste vengono utilizzate nel cluster. Puoi utilizzare questi log per monitorare il ciclo di vita di una credenziale, inclusi l'emissione e l'utilizzo, correlando i log di emissione dell'identità con i log di Cloud KMS, Certificate Authority Service e dell'API Kubernetes. I log di emissione delle identità GKE vengono abilitati quando viene utilizzata l'autorità del control plane GKE. Questi log monitorano l'emissione e l'utilizzo dei seguenti tipi di credenziali:
- Certificati X.509
- Token web JSON (JWT) del cluster
Certificati X.509
Kubernetes utilizza i certificati X.509 per l'autenticazione dei certificati client. Per emettere certificati, il control plane di Kubernetes invia una CertificateSigningRequest approvata a un'autorità di certificazione (CA) nel servizio CA. La CA quindi emette un certificato utilizzando la chiave corrispondente in Cloud KMS per firmare il digest del certificato.
I log del server dell'API Kubernetes contengono i dettagli della firma del certificato per qualsiasi chiamata API Kubernetes autenticata con un certificato. La voce ID credenziale nel log ha il seguente formato:
"authentication.k8s.io/credential-id": "X509SHA256=CERTIFICATE_HASH"
Il valore CERTIFICATE_HASH
è l'hash SHA256 del certificato, che puoi utilizzare per tracciare il ciclo di vita del certificato.
Puoi utilizzare i log dei certificati del server API Kubernetes per tracciare il ciclo di vita del certificato correlando i log dei seguenti servizi:
- Log di emissione dell'identità GKE: utilizza la query
protoPayload.metadata.credentialId
per trovare log di emissione dell'identità GKE specifici in base all'ID credenziale dei log del server API Kubernetes. Poi utilizza il campoprotoPayload.metadata.certificateFingerprint
del log di emissione dell'identità GKE per correlare i log di emissione dell'identità con i log del servizio CA. - Log del servizio CA: trova la voce di log di emissione del certificato,
che contiene i seguenti ID:
cert_fingerprint.sha256_hash
: l'hash SHA256 del certificato firmato. Utilizza questo ID per abbinare i log agli eventi API GKE e Kubernetes.tbs_certificate_digest
: un hash dei contenuti del certificato che sono stati inviati per essere firmati da una chiave Cloud KMS. Utilizza questo ID per abbinare i log ai log di Cloud KMS.
- Log di firma di Cloud KMS: utilizza il valore
tbs_certificate_digest
del log del servizio CA per verificare che la chiave Cloud KMS prevista abbia firmato il certificato.
JSON Web Token (JWT)
I JWT (JSON Web Token) firmati vengono utilizzati come token di autenticazione per le entità nel cluster, come i service account Kubernetes, durante l'autenticazione delle richieste all'API Kubernetes. Quando viene creato un pod che utilizza un account di servizio specifico, Kubernetes crea un JWT e lo monta nel pod. Quando utilizzi l'autorità del piano di controllo GKE per eseguire le tue chiavi e CA, questo JWT viene firmato e successivamente verificato utilizzando la chiave di firma del account di servizio in Cloud KMS.
I log del server dell'API Kubernetes contengono i dettagli della firma del token per qualsiasi chiamata API Kubernetes autenticata con un JWT. La voce della firma del token nel log ha il seguente formato:
"authentication.kubernetes.io/credential-id":"JTI=JWT_ID"
Il valore JWT_ID
è una stringa che identifica il JWT utilizzato nella chiamata API Kubernetes.
Puoi utilizzare l'ID JWT dai log del server API Kubernetes per monitorare il ciclo di vita di un JWT mettendo in correlazione i seguenti log:
- Log di emissione dell'identità GKE: utilizza l'ID JWT dei log del server API Kubernetes per trovare voci di emissione JWT specifiche. Ogni voce
contiene anche il campo
toBeSignedDigest
, il cui valore può corrispondere ai log di Cloud KMS. - Log di firma di Cloud KMS: utilizza il valore del campo
toBeSignedDigest
dei log di emissione dell'identità GKE per verificare che la chiave Cloud KMS prevista abbia firmato il JWT.
Prezzi
In questo documento, utilizzi i seguenti componenti fatturabili di Trusted Cloud by S3NS:
Per generare una stima dei costi in base all'utilizzo previsto,
utilizza il calcolatore prezzi.
Prima di iniziare
Configura il control plane del cluster GKE con CA o chiavi autogestite.
Abilita le seguenti API del servizio Cloud Audit Logging:
- Per Cloud KMS, attiva gli audit log di accesso ai dati di tipo Lettura dati.
- Per CA Service, attiva i log di controllo di accesso ai dati dei tipi Lettura amministratore e Scrittura dati.
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per accedere ai log di emissione delle identità, chiedi all'amministratore di concederti i seguenti ruoli IAM nel progetto:
-
Eseguire tutte le azioni in Logging:
Amministratore Logging (
roles/logging.admin
). -
Visualizza i log:
Visualizzatore log privati (
roles/logging.privateLogViewer
).
Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.
Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
Requisiti e limitazioni
Si applicano i seguenti requisiti e limitazioni:
- Devi utilizzare GKE 1.31.1-gke.1846000 o versioni successive.
- I log di emissione delle identità vengono registrati come log di Cloud Audit Logs e hanno un periodo di conservazione di 400 giorni. Il periodo di conservazione non è configurabile, ma puoi indirizzare gli audit log degli eventi di sistema ad altre destinazioni per periodi di conservazione più lunghi.
Verifica dei certificati
Puoi utilizzare i log di emissione delle identità dell'autorità del control plane di GKE per confermare che un certificato è stato emesso o utilizzato correttamente. Puoi utilizzare uno qualsiasi dei seguenti log o una combinazione di log per confermare le informazioni sull'emissione e l'utilizzo dei certificati:
Log dei certificati |
|
---|---|
Log dell'API Kubernetes per l'utilizzo dei certificati |
Registra i dettagli della firma del certificato ogni volta che il certificato viene utilizzato con l'API Kubernetes. |
Log di GKE per le operazioni di emissione dei certificati |
Registra tutte le operazioni di emissione dei certificati come audit log Evento di sistema. Questi log sono attivati per impostazione predefinita su qualsiasi cluster che utilizza chiavi o CA gestite dall'utente dell'autorità del control plane GKE. |
Log di controllo del servizio CA |
Registra una voce ogni volta che viene emesso un certificato. |
Audit log di Cloud KMS |
Registra una voce ogni volta che viene firmato un digest, in risposta a una richiesta di firma del servizio CA. |
Verifica l'utilizzo dei certificati con i log dell'API Kubernetes
Per trovare le voci di log per le chiamate API autenticate utilizzando i certificati, completa i seguenti passaggi:
Nella Trusted Cloud console, vai alla pagina Esplora log:
Incolla la seguente espressione nel campo dell'editor di query:
log_id("cloudaudit.googleapis.com/activity") resource.type="k8s_cluster" labels."authentication.kubernetes.io/credential-id":"X509SHA256="
Fai clic su Esegui query.
Questa query restituisce tutti i log del server API Kubernetes che hanno un certificato X.509 associato. Trova voci di log specifiche da esaminare utilizzando gli strumenti di sicurezza o controllando manualmente i log.
Per correlare questi log con altri tipi di log, trova il seguente campo:
"authentication.k8s.io/credential-id":"CREDENTIAL_ID"
Il valore CREDENTIAL_ID
è l'identificatore che puoi utilizzare per correlare i log di GKE, CA Service e Cloud KMS. CREDENTIAL_ID
ha la forma "X509SHA256=CERTIFICATE_HASH"
.
Verifica l'emissione del certificato con i log GKE
Per trovare le voci di log GKE per gli eventi di emissione dei certificati, completa i seguenti passaggi:
Nella Trusted Cloud console, vai alla pagina Esplora log:
Incolla la seguente espressione nel campo dell'editor di query:
logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event" resource.type="gke_cluster" protoPayload.serviceName="container.googleapis.com" protoPayload.metadata.credentialId="CREDENTIAL_ID"
Sostituisci quanto segue:
PROJECT_ID
: il tuo ID progetto.CREDENTIAL_ID
: ilCREDENTIAL_ID
della sezione Verifica l'utilizzo del certificato con i log dell'API Kubernetes.
Fai clic su Esegui query.
Verificare l'emissione del certificato con i log del servizio CA
Per trovare i log del servizio CA che corrispondono agli eventi di emissione dei certificati GKE, completa i seguenti passaggi:
Nella Trusted Cloud console, vai alla pagina Esplora log:
Incolla la seguente espressione nel campo dell'editor di query:
resource.type="audited_resource" protoPayload.serviceName="privateca.googleapis.com" protoPayload.methodName="google.cloud.security.privateca.v1.CertificateAuthorityService.CreateCertificate" protoPayload.response.certificate_description.cert_fingerprint.sha256_hash="CERTIFICATE_HASH"
Sostituisci
CERTIFICATE_HASH
conCERTIFICATE_HASH
dalla sezione Verifica l'utilizzo del certificato con i log dell'API Kubernetes. Assicurati di omettere il prefissoX509SHA256=
dall'hash.Fai clic su Esegui query.
Questa query restituisce un log che contiene un campo
tbs_certificate_digest: DIGEST_VALUE
nella sezione della risposta della descrizione del certificato.
Puoi utilizzare DIGEST_VALUE
per
corrispondere ai log di firma di Cloud KMS per il certificato.
Verifica l'emissione del certificato con i log di firma di Cloud KMS
Per trovare gli eventi di firma di Cloud KMS per gli eventi di emissione dei certificati del servizio CA, completa i seguenti passaggi:
Nella Trusted Cloud console, vai alla pagina Esplora log:
Incolla la seguente espressione nel campo dell'editor di query:
protoPayload.request.digest.sha256="DIGEST_VALUE" protoPayload.@type="type.googleapis.com/google.cloud.audit.AuditLog" protoPayload.methodName="AsymmetricSign" protoPayload.serviceName="cloudkms.googleapis.com"
Sostituisci
DIGEST_VALUE
con il valore del digest della sezione Verifica dell'emissione del certificato con i log del servizio CA.Fai clic su Esegui query.
Questa query restituisce i log per gli eventi di emissione dei certificati. I log di Cloud KMS non distinguono tra certificati e JWT, pertanto le voci di log per entrambi sono identiche.
Verificare i token
Puoi utilizzare i log di emissione dell'identità dell'autorità del control plane GKE e i log di firma di Cloud KMS per confermare che un token web JSON (JWT) è stato emesso correttamente.
L'avvio della traccia dell'evento di emissione del token in genere inizia con il monitoraggio del log dell'API Kubernetes per l'attività dell'account di servizio. Dopo aver identificato un log attività che richiede ulteriori indagini, puoi utilizzare i seguenti log per confermare le informazioni sull'emissione e l'utilizzo delle credenziali:
Log JWT |
|
---|---|
Log dell'API Kubernetes per l'utilizzo di JWT |
Registra i dettagli della firma JWT ogni volta che viene utilizzata una JWT rispetto all'API Kubernetes. |
Log GKE per le operazioni di emissione di JWT |
Registra tutte le operazioni di emissione dei token come audit log degli eventi di sistema. Questi log sono attivati per impostazione predefinita su qualsiasi cluster che utilizza chiavi o CA gestite dall'utente dell'autorità del control plane GKE. |
Audit log di Cloud KMS |
Registra una voce ogni volta che un token viene firmato ed emesso. |
Verificare l'utilizzo dei token con i log del server dell'API Kubernetes
Per trovare le voci di log per gli eventi di utilizzo dei token:
Nella Trusted Cloud console, vai alla pagina Esplora log:
Incolla la seguente espressione nel campo dell'editor di query:
log_id("cloudaudit.googleapis.com/activity") resource.type="k8s_cluster" labels."authentication.kubernetes.io/credential-id":"JTI="
Fai clic su Esegui query.
Questa query restituisce tutti i log del server dell'API Kubernetes che hanno un JWT associato. Trova voci di log specifiche da esaminare utilizzando gli strumenti di sicurezza o controllando manualmente i log.
Per correlare questi log con altri tipi di log, trova il seguente campo:
"authentication.k8s.io/credential-id": "JTI=JWT_ID"
JWT_ID
è l'identificatore del token che puoi utilizzare per correlare i log di GKE e Cloud KMS.
Verifica l'emissione di token con i log GKE
Per trovare le voci di log per gli eventi di emissione dei token:
Nella Trusted Cloud console, vai alla pagina Esplora log:
Incolla la seguente espressione nel campo dell'editor di query:
resource.type="gke_cluster" logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event" protoPayload.methodName="google.cloud.gkeauth.v1.Auth.SignServiceAccountJWT" protoPayload.metadata.credentialId="JTI=JWT_ID"
Sostituisci quanto segue:
PROJECT_ID
: il tuo ID progetto.JWT_ID
: l'ID JWT della sezione Verifica l'utilizzo del token con i log del server dell'API Kubernetes.
Fai clic su Esegui query.
Questa query restituisce log che contengono un campo
toBeSignedDigest
.
Puoi utilizzare il valore toBeSignedDigest
per trovare gli eventi di firma Cloud KMS.
Verifica l'emissione di token con i log di firma di Cloud KMS
Per trovare le voci di log per i riepiloghi firmati:
Nella Trusted Cloud console, vai alla pagina Esplora log:
Incolla la seguente espressione nel campo dell'editor di query:
protoPayload.request.digest.sha256="DIGEST_VALUE" protoPayload.@type="type.googleapis.com/google.cloud.audit.AuditLog" protoPayload.methodName="AsymmetricSign" protoPayload.serviceName="cloudkms.googleapis.com"
Sostituisci
DIGEST_VALUE
con il valore nel campotoBeSignedDigest
della sezione Verifica l'emissione del token con i log GKE.Fai clic su Esegui query.
Questa query restituisce i log per gli eventi di emissione dei certificati. I log di Cloud KMS non distinguono tra certificati e JWT, pertanto le voci di log per entrambi sono identiche.
Passaggi successivi
- Scopri di più sulla sicurezza del control plane.
- Scopri di più sull'accesso amministrativo per i dipendenti Google.
- Scopri come configurare il logging e il monitoraggio per GKE.
- Scopri come configurare l'accesso a livello di campo ai log.
- Scopri di più sui limiti di utilizzo della registrazione.