Journaux d'audit

Cette page explique comment accéder aux journaux d'audit apiserver de Kubernetes.

Présentation

Chaque cluster GKE On-Prem dispose des journaux d'audit Kubernetes, qui conservent un enregistrement chronologique des appels passés au serveur d'API Kubernetes du cluster. Les journaux d'audit sont utiles pour analyser les requêtes API suspectes ou pour collecter des statistiques.

Journaux d'audit sur disque

Les journaux d'audit de chaque serveur d'API sont stockés par défaut sur un disque persistant, de sorte que les redémarrages et mises à niveau de VM n'entraînent pas leur disparition. GKE On-Prem conserve jusqu'à 10 Go de journaux d'audit.

Cloud Audit Logging

Si Cloud Audit Logging est activé, les journaux d'audit destinés aux activités d'administration de tous les serveurs d'API sont envoyés à Google Cloud, en utilisant le projet et l'emplacement définis lors de l'installation.

Accéder aux journaux d'audit Kubernetes

Journaux d'audit sur disque

Vous pouvez uniquement accéder aux journaux d'audit via le cluster d'administrateur :

  1. Affichez les serveurs d'API Kubernetes exécutés dans vos clusters :

    kubectl get pods --all-namespaces -l component=kube-apiserver
    
  2. Téléchargez les journaux d'audit du serveur d'API :

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

    Cette commande extrait le dernier fichier journal, qui peut contenir jusqu'à 1 Go de données pour le cluster d'administrateur et jusqu'à 850 Go pour les clusters d'utilisateur.

    Les anciens enregistrements d'audit sont conservés dans des fichiers distincts. Pour afficher ces fichiers, procédez comme suit :

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

    Le nom de fichier de chaque journal d'audit comporte un horodatage qui correspond à la rotation du fichier. Un fichier contient les journaux d'audit jusqu'à cette date et heure.

Cloud Audit Logging

Console

  1. Dans la console Google Cloud, accédez à la page Journaux du menu Journalisation.

    Accéder à la page Journaux

  2. Dans la zone de recherche Filtrer par libellé ou texte recherché, juste au-dessus des menus déroulants décrits ci-dessus, cliquez sur la flèche vers le bas pour ouvrir le menu déroulant. Dans le menu, sélectionnez Convertir en filtre avancé.

  3. Remplissez la zone de texte avec le filtre suivant :

    resource.type="k8s_cluster"
    logName="projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Factivity"
    protoPayload.serviceName="anthosaudit.googleapis.com"
    
  4. Cliquez sur Soumettre le filtre pour afficher tous les journaux d'audit des clusters GKE On-Prem configurés pour vous connecter à ce projet.

gcloud

Répertoriez les deux premières entrées du journal d'activité d'administration de votre projet qui s'appliquent au type de ressource k8s_cluster :

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

[PROJECT_ID] correspond à l'ID de votre projet.

La sortie affiche deux entrées de journal. Notez que pour chaque entrée de journal, le champ logName a la valeur projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Factivity et que protoPayload.serviceName est égal à anthosaudit.googleapis.com.

Règle d'audit

Le comportement des journaux d'audit est déterminé par une règle de journalisation d'audit Kubernetes configurée de manière statique. Il n'est actuellement pas possible de modifier cette règle.