Vous consultez la documentation d'une version précédente de GKE On-Prem. Consultez la documentation la plus récente.

Journaux d'audit

Aperçu

Anthos GKE On-Prem utilise la Journalisation d'audit Kubernetes, qui conserve un enregistrement chronologique des appels passés vers le serveur de l'API Kubernetes d'un cluster. Les journaux d'audit sont utiles pour analyser les requêtes API suspectes et pour collecter des statistiques.

Avant Anthos 1.2, GKE On-Prem écrivait les journaux d'audit uniquement sur le disque. Anthos 1.2 introduit une fonctionnalité alpha qui permet d'écrire des journaux d'audit dans le Cloud Audit Logs d'un projet Google Cloud. Écrire dans Cloud Audit Logs présente plusieurs avantages par rapport à l'écriture sur disque, voire à la capture de journaux dans un système de journalisation sur site :

  • Les journaux d'audit de tous les clusters Anthos GKE peuvent être centralisés.
  • Les entrées de journal écrites dans Cloud Audit Logs sont immuables.
  • Les entrées Cloud Audit Logs sont conservées pendant 400 jours.
  • Cloud Audit Logs est inclus dans le prix d'Anthos.

Vous pouvez configurer GKE On-Prem pour écrire des journaux sur disque ou dans Cloud Audit Logs.

Journal d'audit sur disque

Par défaut, les journaux d'audit de GKE On-Prem sont écrits sur un disque persistant, de sorte que les redémarrages et les mises à niveau de la VM n'entraînent pas leur disparition. GKE On-Prem conserve jusqu'à 10 Go d'entrées de journal d'audit.

Cloud Audit Logging

Si Cloud Audit Logs est activé, les entrées de journal d'audit pour les activités d'administration de tous les serveurs d'API Kubernetes sont envoyées à Google Cloud, en utilisant le projet et l'emplacement que vous spécifiez lorsque vous créez un cluster d'utilisateur.

GKE On-Prem déploie un pod audit-proxy sur les clusters d'administrateur et d'utilisateur. Ce pod met en mémoire tampon et écrit les entrées de journal dans Cloud Audit Logs.

Limites

Cloud Audit Logs pour GKE On-Prem est une fonctionnalité alpha. Cette version alpha présente plusieurs limites :

  • Vous ne pouvez configurer Cloud Audit Logs que lors de la création d'un cluster d'utilisateur. Autrement dit, vous devez créer un nouveau cluster d'utilisateur.

  • La journalisation des accès aux données n'est pas prise en charge.

  • La modification de la stratégie d'audit Kubernetes n'est pas prise en charge.

Ces limitations seront traitées dans les prochaines versions.

Activer l'API Anthos GKE

Pour utiliser Cloud Audit Logs avec GKE On-Prem, vous devez activer l'API Anthos GKE.

Activer l'API Anthos GKE

Créer un compte de service pour la journalisation d'audit

Vous disposez déjà de plusieurs comptes de service que vous avez créés pour une utilisation avec GKE On-Prem. Pour cette fonctionnalité alpha, vous devez créer un compte de service supplémentaire et l'ajouter à la liste blanche.

  1. Créez votre compte de service Cloud Audit Logs :

    gcloud iam service-accounts create audit-logging-service-account
  2. Créez un fichier de clé JSON pour votre compte de service Cloud Audit Logs :

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

    [Cloud Audit Logs_SERVICE_ACCOUNT_EMAIL] correspond à l'adresse e-mail de votre compte de service Cloud Audit Logging.

  3. Enregistrez audit-logging-key.json sur le poste de travail administrateur au même emplacement que les autres clés de votre compte de service.

Ajouter le compte de service à la liste blanche

Pour demander l'ajout de votre compte de service Cloud Audit Logs à la liste blanche, remplissez le formulaire Cloud Audit Logging pour GKE On-Prem Alpha. Votre compte de service doit être ajouté à la liste blanche avant de créer un cluster d'utilisateur qui active Cloud Audit Logs.

Créer un cluster d'utilisateur avec Cloud Audit Logs activé

  1. Si vous n'avez pas encore créé de cluster d'administrateur, créez de nouveaux clusters d'administrateur et d'utilisateur en suivant les instructions de la section Installer à l'aide d'adresses IP statiques ou Installer à l'aide du protocole DNS.

    Si vous disposez déjà d'un cluster d'administrateur, créez un nouveau cluster d'utilisateur en suivant les instructions de la section Créer des clusters d'utilisateur supplémentaires.

  2. Après avoir exécuté gkectl create-config, remplissez votre fichier de configuration comme d'habitude, mais aussi la nouvelle section cloudauditlogging sous usercluster.

  3. Définissez cloudauditlogging.projectid sur l'ID du projet Google Cloud dans lequel vous souhaitez afficher les journaux d'audit relatifs à votre cluster d'utilisateur.

  4. Définissez cloudauditloggijg.clusterlocation sur la région Google Cloud où vous souhaitez stocker les journaux d'audit. Il est judicieux de choisir une région à proximité de votre centre de données sur site.

  5. Définissez cloudauditlogging.serviceaccountkeypath sur le chemin d'accès du fichier de clé JSON de votre compte de service Cloud Audit Logging.

Exemple :

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

Continuez de créer le cluster comme d'habitude.

Accéder aux journaux d'audit GKE On-Prem

Journal d'audit sur disque

  1. Affichez les serveurs d'API Kubernetes exécutés dans votre cluster d'administrateur et tous les clusters d'utilisateur associés :

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

    [ADMIN_CLUSTER_KUBECONFIG] est le fichier kubeconfig de votre cluster d'administrateur.

  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 indique la rotation du fichier. Un fichier contient les journaux d'audit jusqu'à cette date et heure.

Cloud Audit Logging

Console

  1. Dans Cloud  Console, 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/externalaudit.googleapis.com%2Factivity"
    protoPayload.serviceName="anthosgke.googleapis.com"
    
  4. Cliquez sur Soumettre le filtre pour afficher tous les journaux d'audit des clusters GKE On-Prem configurés pour se 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/externalaudit.googleapis.com%2Factivity" \
    AND resource.type="k8s_cluster" \
    AND protoPayload.serviceName="anthosgke.googleapis.com" ' \
    --limit 2 \
    --freshness 300d

[PROJECT_ID] correspond à votre ID de 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/externalaudit.googleapis.com%2Factivity et que protoPayload.serviceName est égal à anthosgke.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. La modification de cette stratégie n'est pas prise en charge pour le moment, mais elle sera disponible dans une version ultérieure.