Activer la journalisation d'audit

Ce document explique comment activer et utiliser Cloud Audit Logging pour les clusters Anthos sur Bare Metal. Les clusters Anthos sur Bare Metal utilisent la journalisation d'audit Kubernetes pour conserver un enregistrement chronologique des appels au serveur de l'API Kubernetes d'un cluster. Les journaux d'audit sont utiles pour analyser les requêtes API suspectes et collecter des statistiques.

Si Cloud Audit Logs est activé, les journaux d'audit sont écrits dans Cloud Audit Logs dans votre 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 Logging sont immuables.
  • Les entrées Cloud Audit Logging sont conservées pendant 400 jours.
  • Cloud Audit Logs est inclus dans le prix d'Anthos.
  • Vous pouvez configurer des clusters Anthos sur solution Bare Metal pour écrire des journaux sur disque ou dans Cloud Audit Logs.

Journaux d'audit sur disque

Par défaut, les journaux d'audit des clusters Anthos sur solution Bare Metal sont écrits sur un disque persistant, de sorte que les redémarrages et les mises à niveau du cluster n'entraînent pas leur disparition Les clusters Anthos sur solution Bare Metal conservent jusqu'à 1 Go d'entrées de journal d'audit.

Vous pouvez accéder aux journaux d'audit sur disque en vous connectant aux nœuds du plan de contrôle. Les journaux se trouvent dans le répertoire /var/log/apiserver/.

Cloud Audit Logs

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. Ces entrées de journal sont stockées sous le nom et l'emplacement du projet du cluster. Pour mettre en mémoire tampon et écrire des entrées de journal dans Cloud Audit Logging, Anthos clusters on Bare Metal déploie un pod audit-proxy sur le cluster d'administrateur. Ce pod est également disponible en tant que conteneur side-car sur les clusters d'utilisateur.

Limites

Cloud Audit Logs pour les clusters Anthos sur Bare Metal est une fonctionnalité bêta qui présente les limites suivantes :

  • Il n'est pas possible de journaliser les accès aux données.
  • Il n'est pas possible de modifier la règle d'audit Kubernetes.
  • Cloud Audit Logging n'est pas résilient aux pannes réseau étendues. Si les entrées de journal ne peuvent pas être exportées vers Google Cloud, elles sont mises en cache dans un tampon de disque de 10 Go. Si ce tampon est plein, les entrées suivantes sont ignorées.
  • Cloud Audit Logs ne peut être activé que lors de la création de clusters 1.8.0. L'activation de Cloud Audit Logs sur les clusters existants via la mise à niveau n'est pas disponible pour la fonctionnalité bêta.

Créer un compte de service pour Cloud Audit Logs

Avant de pouvoir activer Cloud Logging et Cloud Monitoring avec des clusters Anthos sur solution Bare Metal, vous devez d'abord configurer les éléments suivants :

  1. Créez un espace de travail Cloud Monitoring dans le projet Google Cloud, si vous n'en possédez pas déjà un.

    Vous pouvez le faire dans la console Google Cloud. Cliquez sur le bouton suivant et suivez le workflow.

    Accéder à Monitoring

  2. Cliquez sur les boutons suivants pour activer les API requises :

    Activer l'API Anthos Audit

    Activer l'API Stackdriver

    Activer l'API Monitoring

    Activer l'API Logging

  3. Attribuez les rôles IAM suivants au compte de service utilisé par les agents Stackdriver :

    • logging.logWriter
    • monitoring.metricWriter
    • stackdriver.resourceMetadata.writer
    • monitoring.dashboardEditor

Activer Cloud Audit Logs lors de la création d'un cluster

Pour utiliser Cloud Audit Logs avec des clusters Anthos sur Bare Metal, suivez les instructions standards de création de cluster, mais apportez les modifications suivantes au fichier de configuration du cluster avant d'exécuter la commande bmctl create cluster :

  1. Annulez la mise en commentaire du champ disableCloudAuditLogging dans le fichier de configuration du cluster et assurez-vous qu'il est défini sur false, comme indiqué dans l'exemple suivant :

    ...
    clusterOperations:
        # Cloud project for logs and metrics.
        projectID: `PROJECT_ID`
        # Cloud location for logs and metrics.
        location: us-central1
        # Enable Cloud Audit Logging if uncommented and set to false.
        disableCloudAuditLogging: false
    ...
    

    Le reste du processus de création du cluster est identique. Pour en savoir plus et obtenir des liens vers les instructions, consultez la page Créer des clusters : présentation.

Accéder à Cloud Audit Logs

Console

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

    Accéder à la page Journaux

  2. Dans la zone Filtrer par étiquette ou texte recherché, cliquez sur la flèche vers le bas pour afficher le menu déroulant. Dans le menu, sélectionnez Convertir en filtre avancé.

  3. Renseignez 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"
    

    Remplacez PROJECT_ID par l'ID du projet.

  4. Cliquez sur Envoyer le filtre pour afficher tous les journaux d'audit des clusters Anthos sur VMware qui ont été 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

Remplacez PROJECT_ID par l'ID du projet.

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

Règle d'audit

Le comportement de Cloud Audit Logging est déterminé par une règle de journalisation d'audit Kubernetes configurée de manière statique. La modification de cette règle n'est pas possible pour le moment, mais le sera dans une version ultérieure.