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.
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.
Crea il tuo account di servizio Cloud Audit Logs:
gcloud iam service-accounts create audit-logging-service-account
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.
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
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.
Dopo aver eseguito
gkectl create-config
, compila il file di configurazione come di consueto, ma anche la nuova sezionecloudauditlogging
inusercluster
.Imposta
cloudauditlogging.projectid
sull'ID progetto del progetto Google Cloud in cui vuoi visualizzare gli audit log relativi al cluster utente.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.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
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.
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
Nella console Google Cloud, vai alla pagina Log nel menu Logging.
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.
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"
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.