Verificare l'emissione e l'utilizzo delle identità


.

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 campo protoPayload.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.

I nuovi Trusted Cloud utenti potrebbero avere diritto a una prova gratuita.

Prima di iniziare

  1. Configura il control plane del cluster GKE con CA o chiavi autogestite.

  2. Abilita le seguenti API del servizio Cloud Audit Logging:

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:

  1. Nella Trusted Cloud console, vai alla pagina Esplora log:

    Vai a Esplora log

  2. 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="
    
  3. 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:

  1. Nella Trusted Cloud console, vai alla pagina Esplora log:

    Vai a Esplora log

  2. 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:

  3. 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:

  1. Nella Trusted Cloud console, vai alla pagina Esplora log:

    Vai a Esplora log

  2. 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 con CERTIFICATE_HASH dalla sezione Verifica l'utilizzo del certificato con i log dell'API Kubernetes. Assicurati di omettere il prefisso X509SHA256= dall'hash.

  3. 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:

  1. Nella Trusted Cloud console, vai alla pagina Esplora log:

    Vai a Esplora log

  2. 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.

  3. 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:

  1. Nella Trusted Cloud console, vai alla pagina Esplora log:

    Vai a Esplora log

  2. 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="
    
  3. 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:

  1. Nella Trusted Cloud console, vai alla pagina Esplora log:

    Vai a Esplora log

  2. 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:

  3. 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:

  1. Nella Trusted Cloud console, vai alla pagina Esplora log:

    Vai a Esplora log

  2. 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 campo toBeSignedDigest della sezione Verifica l'emissione del token con i log GKE.

  3. 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