Panoramica
Google Distributed Cloud (solo software) per VMware supporta la registrazione degli audit sia a livello di API Google Cloud sia a livello di cluster Kubernetes. Questo documento fornisce informazioni sull'audit logging del cluster Kubernetes. Per informazioni sul logging degli audit delle API Google Cloud, consulta Informazioni sugli audit log delle API Cloud.
Google Distributed Cloud utilizza Kubernetes Audit Logging, che mantiene un record cronologico delle chiamate effettuate al server dell'API Kubernetes di un cluster. I log di controllo sono utili per esaminare le richieste API sospette e per raccogliere statistiche.
Puoi configurare un cluster in modo che scriva gli audit log su disco o in Cloud Audit Logs in un progetto Google Cloud. La scrittura in Cloud Audit Logs offre diversi vantaggi rispetto alla scrittura su disco o anche alla cattura dei log in un sistema di logging on-premise:
- I log di controllo per tutti i cluster GKE possono essere centralizzati.
- Le voci di log scritte in Cloud Audit Logs sono immutabili.
- Le voci di Cloud Audit Logs vengono conservate per 400 giorni.
- Cloud Audit Logs sono inclusi nel prezzo di Anthos.
Audit logging basato su disco
Per impostazione predefinita, i log di controllo vengono scritti su un disco permanente in modo che i riavvii e gli upgrade della VM non causino la scomparsa dei log. Google Distributed Cloud conserva fino a 12 GB di voci di audit log.
Cloud Audit Logs
Se attivi Cloud Audit Logs per un cluster, le voci degli audit log delle attività di amministrazione del server API Kubernetes del cluster vengono inviate a Google Cloud utilizzando il progetto Google Cloud specificato nel campo cloudAuditLogging.projectID
del file di configurazione del cluster.
Questo progetto Google Cloud è chiamato
progetto di log di controllo.
Il progetto di log di controllo deve essere lo stesso del progetto host del parco veicoli.
Per mettere in memoria e scrivere le voci di log in Cloud Audit Logs,
Google Distributed Cloud esegue il deployment di un pod audit-proxy
nel cluster di amministrazione.
Questo componente è disponibile anche come contenitore secondario nei cluster di utenti.
Limitazioni
La versione corrente di Cloud Audit Logs per Google Distributed Cloud presenta diversi limiti:
La registrazione dell'accesso ai dati (richieste get, list, watch) non è supportata.
La modifica del criterio di controllo di Kubernetes non è supportata.
Cloud Audit Logs non è resiliente alle interruzioni della rete prolungate. Se le voci di log non possono essere esportate in Google Cloud, vengono memorizzate nella cache in un buffer di disco da 10 GB. Se il buffer si riempie, le voci successive vengono eliminate.
Abilita l'API Anthos Audit
Abilita l'API Anthos Audit nel progetto di log di controllo.
Creare un account di servizio per Cloud Audit Logs
Hai già uno o più account di servizio che hai creato per l'utilizzo con Google Distributed Cloud. Per questa funzionalità, devi creare un account di servizio aggiuntivo chiamato account di servizio per i log di controllo.
Crea l'account di servizio per i log di controllo:
gcloud iam service-accounts create audit-logging-service-account
Crea un file della chiave JSON per l'account di servizio Cloud Audit Logs:
gcloud iam service-accounts keys create audit-logging-key.json \ --iam-account AUDIT_LOGGING_SERVICE_ACCOUNT_EMAIL
dove AUDIT_LOGGING_SERVICE_ACCOUNT_EMAIL è l'indirizzo email del tuo account di servizio.
Salva
audit-logging-key.json
sulla workstation di amministrazione nella stessa posizione delle altre chiavi dell'account di servizio.
Crea un cluster di amministrazione con Cloud Audit Logs abilitato
Puoi attivare Cloud Audit Logs per un cluster di amministrazione solo la prima volta che lo crei. Non puoi modificare un cluster amministrativo esistente per attivare Cloud Audit Logs.
Consulta la sezione Creare un cluster di amministrazione.
Nel file di configurazione del cluster di amministrazione, compila la sezione
cloudAuditLogging
.Imposta
cloudAuditLogging.projectID
sull'ID del progetto di log di controllo.Imposta
cloudAuditLogging.clusterLocation
su una regione Google Cloud in cui vuoi archiviare gli audit log. Per ridurre la latenza, scegli una regione vicina al tuo data center on-premise.Imposta
cloudAuditLogging.serviceAccountKeyPath
sul percorso del file della chiave JSON per l'account di servizio di registrazione degli audit.
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.
Creare un cluster utente con Cloud Audit Logs abilitati
Consulta Creazione di un cluster utente.
Nel file di configurazione del cluster utente, compila la sezione
cloudAuditLogging
.Imposta
cloudAuditLogging.projectID
sull'ID del progetto di log di controllo.Imposta
cloudAuditLogging.clusterLocation
su una regione Google Cloud in cui vuoi archiviare gli audit log. Per ridurre la latenza, scegli una regione vicina al tuo data center on-premise.Imposta
cloudAuditLogging.serviceAccounKeyPath
sul percorso del file della chiave JSON per l'account di servizio Cloud Audit Logs.Assicurati che la sezione
gkeConnect
sia compilata e chegkeConnect.projectID
corrisponda acloudAuditLogging.projectID
.
Ad esempio:
gkeConnect: projectID: "my-project" registerServiceAccountKeyPath: "/my-key-fokder/connect-register-key.json" cloudAuditLogging: projectID: "my-project" clusterLocation: "us-west1" serviceAccountKeyPath: "/my-key-folder/audit-logging-key.json"
Continua la creazione del cluster come di consueto.
Attivare Cloud Audit Logs per un cluster utente esistente
Cloud Audit Logs può essere attivato solo nel progetto Google Cloud in cui è registrato il cluster utente.
Se un cluster di utenti esistente non è registrato, registralo seguendo questi passaggi prima di attivare Cloud Audit Logs:
Aggiungi una sezione
gkeConnect
al file di configurazione del cluster utente. Ad esempio:gkeConnect: projectID: "my-project" registerServiceAccountKeyPath: "/my-key-fokder/connect-register-key.json"
Aggiorna il cluster:
gkectl update cluster --config USER_CLUSTER_CONFIG --kubeconfig ADMIN_CLUSTER_KUBECONFIG
Dopo aver registrato il cluster di utenti, segui questi passaggi per attivare Cloud Audit Logs:
Compila la sezione
cloudAuditLogging
del file di configurazione del cluster utente. Per informazioni dettagliate sui singoli campi, consulta Creare un cluster di utenti con Cloud Audit Logs abilitati. Il valoreprojectID
nella sezionecloudAuditLogging
deve essere uguale a quello nella sezionegkeConnect
.Aggiorna il cluster:
gkectl update cluster --config USER_CLUSTER_CONFIG --kubeconfig ADMIN_CLUSTER_KUBECONFIG
Disattivare Cloud Audit Logs per un cluster utente esistente
Nel file di configurazione del cluster utente, elimina la sezione
cloudAuditLogging
.Aggiorna il cluster utente:
gkectl update cluster --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] --config [USER_CLUSTER_CONFIG]
Accedere ai log di controllo
Audit logging basato su disco
Puoi trovare i log di controllo per il cluster di amministrazione nei nodi del piano di controllo in /var/log/kube-audit/kube-apiserver-audit.log
. I log di controllo per il cluster di utenti si trovano nel file PersistentVolumeClaim
denominato kube-audit-kube-apiserver-0
. Puoi accedere a questi dati all'interno dei tuoi
pod tramite le voci volumes
:
Aggiungi questa voce per il cluster di amministrazione:
volumes: - name: kube-audit hostPath: path: /var/log/kube-audit type: ""
Aggiungi questa voce per il cluster utente:
volumes: - name: kube-audit persistentVolumeClaim: claimName: kube-audit-kube-apiserver-0
Per pianificare il pod sul nodo del cluster amministrativo appropriato (e solo su questo
nodo), dovrai aggiungere le sezioni nodeSelector
e tolerations
alle specifiche del pod, come segue:
spec: nodeSelector: node-role.kubernetes.io/master: '' tolerations: - key: node-role.kubernetes.io/master value: "" effect: NoSchedule
Per il cluster utente, imposta namespace
come nome del cluster utente, quindi imposta nodeName
come kube-apiserver-0
:
spec: nodeName: NODE_NAME
Per evidenziare il nodeName
di kube-apiserver-0
, esegui il seguente comando:
kubectl get pod kube-apiserver-0 -n USER_CLUSTER_NAME --kubeconfig kubeconfig -o jsonpath='{.spec.nodeName}'
Il nome di ogni log di controllo contiene un timestamp che indica quando il file è stato girato. Un file contiene i log di controllo fino a quella data e ora.
Cloud Audit Logs
Console
Nella console Google Cloud, vai alla pagina Log nel menu Logging.
Nella casella Filtra per etichetta o ricerca di testo, appena sopra i menu a discesa discussi sopra, fai clic sulla Freccia giù per aprire il menu a discesa. Nel menu, scegli Converti in filtro avanzato.
Compila il campo 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 configurati per accedere a questo progetto.
gcloud
Elenca le prime due voci del log dell'Log delle attività di amministrazione del 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 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 di Cloud Audit Logs è determinato da un criterio di audit logging di Kubernetes configurato in modo statico. La modifica di questo criterio non è attualmente supportata, ma sarà disponibile in una release futura.