Audit logging

Panoramica

GKE On-Prem utilizza Kubernetes Audit Logging, che conserva un record cronologico delle chiamate effettuate a un server API Kubernetes del cluster. Gli audit log sono utili per analizzare le richieste API sospette e per raccogliere statistiche.

Prima di Anthos 1.2, GKE On-Prem scriveva gli audit log solo su disco. Anthos 1.2 introduce una funzionalità alpha che consente di scrivere gli audit log in Cloud Audit Logs in un progetto Google Cloud. La scrittura in audit log di Cloud offre diversi vantaggi rispetto alla scrittura su disco o persino all'acquisizione di log in un sistema di logging on-premise:

  • Gli audit log per tutti i cluster Anthos possono essere centralizzati.
  • Le voci di log scritte in Cloud Audit Logs sono immutabili.
  • Le voci degli audit log di Cloud vengono conservate per 400 giorni.
  • Gli audit log di Cloud sono inclusi nel prezzo di Anthos.

Puoi configurare GKE On-Prem per scrivere log su disco o su Cloud Audit Logs.

Audit logging basato su disco

Per impostazione predefinita, gli audit log in GKE On-Prem sono scritti su un disco permanente in modo che le VM vengano riavviate e gli upgrade non scompaiano i log. GKE On-Prem conserva fino a 10 GB di voci di log di controllo.

Cloud Audit Logs

Se sono abilitati gli audit log di Cloud, le voci degli audit log per le attività di amministrazione di tutti i server API Kubernetes vengono inviate a Google Cloud utilizzando il progetto e la località specificati quando crei un cluster utente.

GKE On-Prem esegue il deployment di un pod audit-proxy nei cluster di amministrazione e utente. Questo pod esegue il buffer e scrive le voci del log in Cloud Audit Logs.

Limitazioni

Audit log di Cloud per GKE On-Prem è una funzionalità alpha. Questa release alpha presenta diverse limitazioni:

  • Puoi configurare gli audit log di Cloud solo durante la creazione del cluster utente. Ciò significa che devi creare un nuovo cluster utente.

  • Il logging degli accessi ai dati non è supportato.

  • La modifica del criterio di controllo di Kubernetes non è supportata.

Tali limitazioni verranno affrontate nelle release future.

Abilitazione dell'API Anthos GKE in corso...

Per utilizzare gli audit log di Cloud con GKE On-Prem, devi abilitare l'API Anthos GKE.

Abilita l'API Anthos GKE

Creazione di un account di servizio per l'audit logging

Hai già diversi account di servizio che hai creato per l'uso con GKE On-Prem. Per questa funzionalità alpha è necessario creare un account di servizio aggiuntivo e aggiungerlo alla lista consentita.

  1. Crea il tuo account di servizio Cloud Audit Logs:

    gcloud iam service-accounts create audit-logging-service-account
  2. Crea un file della chiave JSON per il tuo account di servizio Cloud Audit Logs:

    gcloud iam service-accounts keys create audit-logging-key.json \
       --iam-account [Cloud Audit Logs_SERVICE_ACCOUNT_EMAIL]
    

    dove [Cloud Audit Logs_SERVICE_ACCOUNT_EMAIL] è l'indirizzo email del tuo account di servizio Cloud Audit Logs.

  3. Risparmia audit-logging-key.json sulla workstation di amministrazione nella stessa posizione delle altre chiavi dell'account di servizio.

Aggiunta alla lista consentita del tuo account di servizio

Per richiedere che il tuo account di servizio Cloud Audit Logs sia inserito nella lista consentita, compila il modulo Cloud Audit Logging per GKE On-Prem alpha. Il tuo account di servizio deve essere inserito nella lista consentita prima di poter creare un cluster utente che abilita Cloud Audit Logs.

Creazione di un cluster utente con Cloud Audit Logs abilitati

  1. Se non hai ancora creato un cluster di amministrazione, crea nuovi cluster di amministrazione e utente seguendo le istruzioni sull'installazione con indirizzi IP statici o sull'installazione tramite DHCP.

    Se hai già un cluster di amministrazione, crea un nuovo cluster utente seguendo le istruzioni in Creare cluster utente aggiuntivi.

  2. Dopo aver eseguito gkectl create-config, compila il file di configurazione come di consueto, ma anche la nuova sezione cloudauditlogging in usercluster.

  3. Imposta cloudauditlogging.projectid sull'ID progetto del progetto Google Cloud in cui vuoi visualizzare gli audit log relativi al cluster utente.

  4. Imposta cloudauditloggijg.clusterlocation su un'area geografica di Google Cloud in cui vuoi archiviare gli audit log. È consigliabile scegliere un'area geografica vicino al data center on-premise.

  5. Imposta cloudauditlogging.serviceaccountkeypath sul percorso del file della chiave JSON dell'account di servizio Cloud Audit Logs.

Ad esempio:

cloudauditlogging:
  projectid: "my-project"
  clusterlocation: "us-west1"
  serviceaccountkeypath: "/my-key-folder/audit-logging-key.json"

Continua la creazione del cluster come di consueto.

Accesso agli audit log GKE on-prem

Audit logging basato su disco

  1. Visualizza i server API di Kubernetes in esecuzione nel cluster di amministrazione e tutti i cluster utente associati:

    kubectl --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] get pods --all-namespaces -l component=kube-apiserver
    

    dove [ADMIN_CLUSTER_KUBECONFIG] è il file kubeconfig del cluster di amministrazione.

  2. Scarica gli audit log del server API:

    kubectl cp -n [NAMESPACE] [APISERVER_POD_NAME]:/var/log/kube-audit/kube-apiserver-audit.log /tmp/kubeaudit.log
    

    Questo comando recupera l'ultimo file di log, che può contenere fino a 1 GB di dati per il cluster di amministrazione e fino a 850 GB per i cluster utente.

    I record di controllo meno recenti vengono conservati in file separati. Per visualizzare questi file:

    kubectl exec -n [NAMESPACE] [APISERVER_POD_NAME] -- ls /var/log/kube-audit -la
    

    Ogni nome file del log di controllo ha un timestamp che indica quando il file è stato ruotato. Un file contiene i log di controllo fino a quel momento e a quella data.

Cloud Audit Logs

console

  1. Nella console Google Cloud, vai alla pagina Log nel menu Logging.

    Vai a Esplora log

  2. Nella casella Filtra per etichetta o testo, sopra i menu a discesa visualizzati sopra, fai clic sulla freccia giù per aprire il menu a discesa. Dal menu, scegli Converti in filtro avanzato.

  3. Compila la casella di testo con il seguente filtro:

    resource.type="k8s_cluster"
    logName="projects/[PROJECT_ID]/logs/externalaudit.googleapis.com%2Factivity"
    protoPayload.serviceName="anthosgke.googleapis.com"
    
  4. Fai clic su Invia filtro per visualizzare tutti gli audit log dei cluster GKE on-prem che sono stati configurati per accedere a questo progetto.

gcloud

Elenca le prime due voci di log nel log Attività dell'amministratore del tuo progetto che si applicano al tipo di risorsa k8s_cluster:

gcloud logging read \
    'logName="projects/[PROJECT_ID]/logs/externalaudit.googleapis.com%2Factivity" \
    AND resource.type="k8s_cluster" \
    AND protoPayload.serviceName="anthosgke.googleapis.com" ' \
    --limit 2 \
    --freshness 300d

dove [PROJECT_ID] è l'ID progetto.

L'output mostra due voci di log. Tieni presente che per ogni voce di log, il valore del campo logName ha il valore projects/[PROJECT_ID]/logs/externalaudit.googleapis.com%2Factivity e protoPayload.serviceName è uguale a anthosgke.googleapis.com.

Criteri di audit

Il comportamento dell'audit logging è determinato da un criterio di audit logging di Kubernetes staticamente configurato. La modifica di questo criterio non è attualmente supportata, ma sarà disponibile in una release futura.