Scénarios d'exportation Cloud Logging : exigences de conformité

Ce scénario montre comment exporter des journaux de Cloud Logging vers Cloud Storage de façon à répondre aux exigences de conformité de votre organisation. Les organisations doivent respecter de nombreuses exigences en matière de création et de conservation de fichiers de journalisation. Par exemple, lorsque la conformité avec la loi Sarbanes-Oxley (SOX) est importante, il peut être nécessaire de conserver des journaux d'activité pour les utilisateurs, les bases de données et la console. Pour en savoir plus sur les durées de conservation des journaux par défaut et configurables, consultez les quotas et limites de Cloud Logging.

Dans ce scénario, les journaux exportés sont transmis à un bucket Cloud Storage que vous configurez. Vous accordez des autorisations pour limiter l'accès aux journaux selon vos besoins. Afin de réduire les coûts de stockage à long terme, vous pouvez employer la fonctionnalité de gestion du cycle de vie des objets dans Cloud Storage pour déplacer des journaux vers les classes de stockage Nearline ou Coldline, puis les supprimer une fois la durée de conservation requise écoulée.

Ce scénario suppose l'emploi d'une architecture Web à n niveaux commune qui s'exécute sur Google Cloud avec des machines virtuelles (VM), des bases de données et un système de stockage associé. Pour cet environnement, les types de journaux suivants sont exportés : tous les journaux d'audit, les journaux associés aux machines virtuelles, les journaux de stockage et les journaux de base de données. Vous pouvez modifier les types de journaux exportés en ajustant les filtres de journalisation dans l'exemple.

Ce scénario fait partie de la série Modèles de conception pour les exportations Cloud Logging.

Configurer l'exportation de journaux

Le schéma suivant illustre les étapes à suivre pour activer l'exportation de journaux dans Cloud Storage.

Activer la compatibilité de la journalisation.

Configurer le bucket d'exportation de journaux dans Cloud Storage

Suivez les instructions pour configurer un bucket Cloud Storage qui hébergera les journaux exportés. Pour la classe de stockage par défaut, sélectionnez "Régional", sauf si vous avez besoin de la classe de stockage multirégional, Nearline ou Coldline.

Configurer la gestion du cycle de vie des objets pour le bucket Cloud Storage

Ce scénario suppose qu'une durée de conservation de sept ans est requise pour tous les journaux. Afin de réduire les coûts de stockage, vous pouvez ajouter des règles de cycle de vie des objets dans Cloud Storage pour déplacer les journaux vers un stockage Nearline ou Coldline après un nombre de jours donné, puis supprimer les journaux lorsque leur conservation n'est plus requise.

Bonne pratique : Pour optimiser la gestion du coût d'exploitation permanent lié à la conservation des journaux, vous pouvez déplacer ces derniers vers la classe de stockage Nearline ou Coldline, puis les supprimer.

Vous pouvez suivre les instructions pour créer des règles de cycle de vie. La capture d'écran suivante décrit un ensemble de règles en cascade qui définit la classe de stockage sur Nearline après 60 jours, puis sur Coldline après 120 jours, et enfin supprime les journaux après 2 555 jours, soit environ 7 ans.

Règles en cascade.

Activer les journaux d'audit pour tous les services

Les journaux d'audit d'accès aux données sont désactivés par défaut (sauf dans BigQuery). Pour activer tous les journaux d'audit, suivez les instructions pour mettre à jour la stratégie de gestion de l'authentification et des accès (IAM) avec la configuration répertoriée dans la documentation concernant la stratégie d'audit. Les étapes sont les suivantes :

  • Télécharger la stratégie IAM actuelle sous forme de fichier
  • Ajouter au fichier de stratégie actuel l'objet JSON ou YAML de stratégie des journaux d'audit
  • Mettre à jour le projet Google Cloud avec le fichier de stratégie modifié

Voici un exemple d'objet JSON qui active tous les journaux d'audit pour tous les services.

"auditConfigs": [
    {
        "service": "allServices",
        "auditLogConfigs": [
            { "logType": "ADMIN_READ" },
            { "logType": "DATA_READ"  },
            { "logType": "DATA_WRITE" },
        ]
    },
]

Configurer l'exportation de journaux

Une fois que vous avez configuré des exportations agrégées ou l'exportation de journaux, vous devez affiner les filtres de journalisation afin d'exporter les journaux d'audit, les journaux associés aux machines virtuelles, les journaux de stockage et les journaux de base de données. Le filtre de journalisation suivant inclut les journaux d'audit des activités d'administration et ceux de l'accès aux données, ainsi que les journaux correspondant à des types de ressources spécifiques.

logName:"/logs/cloudaudit.googleapis.com" OR
resource.type:gce OR
resource.type=gcs_bucket OR
resource.type=cloudsql_database OR
resource.type=bigquery_resource

À partir de l'outil de ligne de commande gcloud, utilisez la commande gcloud logging sinks create ou l'appel d'API organizations.sinks.create pour créer un récepteur doté des filtres appropriés. L'exemple de commande gcloud suivant crée un récepteur nommé gcp_logging_sink_gcs pour l'organisation. Le récepteur inclut tous les projets enfants et spécifie le filtrage permettant de sélectionner des journaux d'audit individuels.

gcloud logging sinks create gcp_logging_sink_gcs \
    storage.googleapis.com/gcp-logging-export-000100011000 \
    --log-filter='logName: "/logs/cloudaudit.googleapis.com" OR \
    resource.type:\"gce\" OR \
    resource.type=\"gcs_bucket\" OR   \
    resource.type=\"cloudsql_database\" OR  \
    resource.type=\"bigquery_resource\"' \
    --include-children   \
    --organization=324989855333

Le résultat ressemble à ce qui suit :

Created [https://logging.googleapis.com/v2/organizations/324989855333/sinks/gcp_logging_sink_gcs].
Please remember to grant `serviceAccount:gcp-logging-sink-gcs@logging-o324989855333.iam.gserviceaccount.com` full-control access to the bucket.
More information about sinks can be found at /logging/docs/export/configure_export

L'entrée serviceAccount renvoyée par l'appel d'API inclut l'identité gcp-logging-sink-gcs@logging-o324989855333.iam.gserviceaccount.com. Cette identité représente un compte de service Google Cloud créé pour l'exportation. Tant que vous n'accordez pas à cette identité un accès en écriture à l'ensemble de données de destination, les exportations d'entrées de journal issues de ce récepteur échoueront. Pour en savoir plus, consultez la section ci-après ou la documentation suivante : Accorder l'accès pour une ressource.

Définir des autorisations de stratégie IAM pour le bucket Cloud Storage

En ajoutant le compte de service gcp-logging-sink-gcs@logging-o324989855333.iam.gserviceaccount.com au bucket gcp-logging-export-000100011000 avec les autorisations du rôle "Créateur des objets de l'espace de stockage", vous autorisez le compte de service à écrire dans le bucket. Tant que vous n'ajoutez pas ces autorisations, les opérations d'exportation depuis le récepteur échouent.

Pour ajouter les autorisations au bucket gcp-logging-export, procédez comme suit :

  1. Dans Cloud Console, ouvrez le navigateur Cloud Storage :

    ACCÉDER AU NAVIGATEUR CLOUD STORAGE

  2. Sélectionnez le bucket gcp-logging-export.

  3. Cliquez sur Afficher le panneau d'informations, puis sélectionnez les autorisations Storage Object Creator.

    Autorisations de stratégie IAM – Storage Object Creator.

Une fois que vous avez créé l'exportation de journaux au moyen du filtre ci-dessus, les fichiers journaux commencent à remplir le bucket Cloud Storage du projet configuré.

Bonne pratique : Selon vos besoins, vous pouvez mettre en œuvre une stratégie de moindre autorisation. Vous configurez les autorisations sur le bucket en fonction de comptes utilisateur Google Cloud, de groupes Google ou de comptes de service Google Cloud spécifiques. Utilisez les autorisations IAM pour accorder l'accès au bucket Cloud Storage, ainsi qu'un accès groupé aux objets d'un bucket.

À titre d'exemple d'ensemble d'autorisations, vous pouvez :

  • Supprimez tous les utilisateurs non essentiels des autorisations relatives au bucket Cloud Storage.
  • Ajoutez un contrôle total pour l'administrateur Cloud Storage.
  • Accordez à l'utilisateur de la fonctionnalité d'exportation les autorisations nécessaires pour écrire les fichiers d'exportation de journaux.
  • Accordez à d'autres utilisateurs individuels un accès en lecture aux exportations de journaux Google Cloud.

Vous pouvez mettre à jour les autorisations IAM du bucket directement dans Cloud Console, via l'outil de ligne de commande gsutil ou via l'API IAM. L'exemple suivant montre un exemple d'ensemble d'autorisations et de captures d'écran associées à un bucket Cloud Storage dans Cloud Console.

Rôle : Storage Admin (Administrateur de l'espace de stockage)

  • Description IAM : contrôle total des ressources Cloud Storage
  • Utilisation : ce rôle permet d'accorder aux administrateurs l'accès aux ressources Cloud Storage sans qu'ils ne puissent modifier les contenus stockés dans Cloud Storage.
  • Exemple de compte :

    storage-admin@example.com

    Rôle : Storage Admin.

Rôle : Storage Object Admin (Administrateur des objets de l'espace de stockage)

  • Description IAM : contrôle total des objets Cloud Storage
  • Utilisation : ce rôle permet d'accorder aux administrateurs un accès complet aux objets de fichier Cloud Storage sans qu'ils ne puissent modifier la configuration des ressources Cloud Storage.
  • Exemple de compte :

    storage-object-admin@example.com: user1@example.com, user2@example.com

    Rôle : Storage Object Admin.

Rôle : Storage Object Viewer (Lecteur des objets de l'espace de stockage)

  • Description IAM : accès en lecture aux objets Cloud Storage
  • Utilisation : ce rôle permet d'accorder aux utilisateurs un accès en lecture seule aux journaux Google Cloud.
  • Exemple de compte :

    storage-viewer@example.com: user3@example.com

    Rôle : Storage Object Viewer.

Bonne pratique : Si vous utilisez Google Workspace ou le service Google Groupes grand public, vous pouvez ajouter un groupe Google, tel que gcp-logging-export-viewers@example.com, doté des autorisations du rôle "Storage Object Viewer" (Lecteur des objets de l'espace de stockage). Vous pouvez ensuite ajouter ou supprimer des utilisateurs dans le groupe gcp-logging-export-viewers@example.com sans avoir à modifier les autorisations sur le bucket Cloud Storage pour chaque modification des autorisations de lecture des utilisateurs.

Utiliser les journaux exportés

Une fois que vous avez créé l'exportation de journaux au moyen du filtre ci-dessus, les fichiers journaux commencent à remplir le bucket Cloud Storage du projet configuré. Chaque journal crée un dossier distinct dans le bucket, qui est divisé en une structure hiérarchique basée sur la date. Vous pouvez accéder aux journaux via Cloud Console, l'outil de ligne de commande gsutil ou l'API IAM. La capture d'écran suivante montre un exemple de structure de dossiers dans Cloud Console.

Exemple de structure de dossiers.

Chaque fichier journal est constitué de données JSON qui suivent les formats d'entrée de journal textPayload, protoPayload et jsonPayload. Au fil du temps, les fichiers journaux figurant dans le bucket Cloud Storage sont soumis au processus de cycle de vie Cloud Storage, qui déplace d'abord les journaux vers la classe de stockage Nearline, puis vers la classe de stockage Coldline, et enfin supprime les journaux en fonction de votre configuration.

Accorder un accès externe

Si vous le souhaitez, vous pouvez accorder l'accès aux journaux exportés à des utilisateurs spécifiques, par exemple des analystes de la sécurité, votre équipe DevOps ou encore des auditeurs.

Stratégies de localisation des journaux

Plusieurs options permettent d'accorder l'accès aux journaux dans Cloud Storage.

  • Créer des copies des journaux à partager

    Créez manuellement ou de manière automatisée une copie d'un fichier journal individuel ou d'un ensemble de fichiers journaux, puis placez les copies dans un bucket Cloud Storage distinct. Utilisez ensuite les autorisations relatives à ce bucket pour partager les journaux avec des utilisateurs spécifiques selon vos besoins.

    Avantages : Vous pouvez restreindre la quantité de données exposée aux données copiées uniquement.

    Inconvénients : Vous devez créer, partager et gérer des autorisations et des ensembles de données distincts, ce qui peut entraîner une augmentation des coûts.

  • Accorder un accès en lecture seule à tous les journaux

    Définissez manuellement ou de manière automatisée des autorisations en consultation sur le bucket d'exportation de journaux Cloud Storage, ce qui octroie l'accès à toutes les exportations de journaux.

    Avantages : L'accès est facile à accorder.

    Inconvénients : Vous devez accorder l'accès à tous les journaux au lieu de fichiers journaux spécifiques.

Stratégies de contrôle de l'accès utilisateur

Vous pouvez utiliser les autorisations relatives au bucket Cloud Storage pour partager le bucket d'exportation de journaux Cloud Storage avec des comptes ou des groupes Google spécifiques.

  • Utiliser un groupe Google

    Créez un groupe Google tel que auditors@example.com doté d'un accès en lecture seule au bucket Cloud Storage d'exportation de journaux. Vous gérez ensuite la liste des comptes Google en ajoutant ou en supprimant des auditeurs du groupe Google.

    Avantages : L'accès via un groupe est facile à gérer. L'objectif de l'accès des utilisateurs est clair.

    Inconvénients : Il n'est pas possible de déterminer qui a accès sans consulter l'abonnement au groupe.

  • Utiliser des comptes Google individuels

    Accordez à des comptes Google individuels, pour chaque utilisateur en ayant besoin, l'accès au bucket d'exportation de journaux Cloud Storage.

    Avantages : L'ajout d'utilisateurs individuels est simple, que ce soit manuellement ou de manière automatisée.

    Inconvénients : Il est impossible de distinguer les utilisateurs chargés d'un audit d'autres utilisateurs autorisés à consulter les journaux.

Étape suivante