Skip to main content

Streaming de journaux d’audit pour votre entreprise

Découvrez comment diffuser les données des événements d’audit et Git depuis GitHub vers un système externe de gestion des données.

Qui peut utiliser cette fonctionnalité ?

Enterprise owners

Remarque

Les webhooks peuvent être une bonne alternative au journal d’audit ou à l’interrogation d’API pour certains cas d'utilisation. Les webhooks sont un moyen pour GitHub de notifier votre serveur lorsque des événements spécifiques se produisent pour un référentiel, une organisation ou une entreprise. Par rapport à l’API ou à la recherche dans le journal d’audit, les webhooks peuvent être plus efficaces si vous souhaitez simplement apprendre et éventuellement journaliser quand certains événements se produisent sur votre entreprise, organisation ou référentiel. Consultez Documentation sur les webhooks.

À propos du streaming de journaux d’audit

Vous pouvez contribuer à la protection de la propriété intellectuelle et au maintien de la conformité de votre entreprise en utilisant la diffusion en continu pour conserver des copies de vos données de journal d'audit. Le journal d’audit détaille des événements tels que les modifications apportées aux paramètres et à l’accès, l’appartenance des utilisateurs, les autorisations d’application, et bien plus encore. Consultez Événements du journal d’audit pour votre entreprise, Événements du journal d’audit pour votre organisation et Événements du journal de sécurité.

La diffusion en continu des données du journal d'audit présente les avantages suivants :

  • Exploration des données. Examinez les événements envoyés en streaming à l’aide de votre outil préféré pour interroger de grandes quantités de données. Le flux contient à la fois des événements d’audit et des événements Git sur l’ensemble du compte d’entreprise.
  • Continuité des données. Si vous suspendez un flux, il conserve une mémoire tampon pendant sept jours ; il n’y a donc aucune perte de données pour la première semaine. Si le flux reste suspendu pendant plus de sept jours, il reprend à partir d’une semaine avant l’heure actuelle. S’il est suspendu pendant trois semaines ou plus, le flux ne conserve aucune donnée et démarre à nouveau à partir de l’horodatage actuel.
  • Conservation des données. Conservez les données exportées des journaux d’audit et des événements Git tant que vous en avez besoin.

Vous pouvez configurer, suspendre ou supprimer un flux à tout moment. Le flux exporte les données des événements d’audit et Git de toutes les organisations de votre entreprise pour les activités se produisant à compter de l’activation du flux.

Tous les journaux d’audit diffusés en continu sont envoyés sous forme de fichiers JSON compressés. Le format de nom de fichier est en YYYY/MM/HH/MM/<uuid>.json.gz.

Remarque

GitHub utilise une méthode de livraison « au moins une fois  ». En raison de certains problèmes réseau ou système, certains événements peuvent être dupliqués.

Contrôles d’intégrité pour les flux de journaux d’audit

Toutes les 24 heures, une vérification de l'état de santé est effectuée pour chaque flux. Si un flux est configuré de manière incorrecte, un e-mail est envoyé aux propriétaires de l’entreprise. Pour éviter que les événements du journal d’audit soient supprimés du flux, un flux mal configuré doit être résolu dans les six jours.

Pour corriger votre configuration de streaming, suivez les étapes dans Configuration du streaming de journaux d’audit.

Configuration du streaming de journaux d’audit

Pour configurer le streaming de journaux d'audit, suivez les instructions de votre fournisseur :

Remarque

Pour obtenir la liste des plages d’adresses IP utilisées GitHub pour les connexions au point de terminaison de streaming, utilisez l’API REST. Le meta point de terminaison pour GitHub.com inclut une clé hooks avec une liste des adresses IP. Consultez « Points de terminaison d’API REST pour les métadonnées ».

Diffusion en continu vers plusieurs points de terminaison

Remarque

Cette fonctionnalité est actuellement en cours préversion publique et susceptible de changer.

Vous pouvez transmettre les journaux d'audit à plusieurs points de terminaison. Par exemple, vous pouvez diffuser en continu votre journal d’audit vers deux points de terminaison du même type, ou vous pouvez diffuser en continu vers deux fournisseurs différents. Pour configurer plusieurs flux, suivez les instructions de chaque fournisseur.

Configuration du streaming vers Amazon S3

Vous pouvez configurer la diffusion en continu sur S3 avec des clés d’accès ou, pour éviter de stocker des secrets de longue durée sur GitHub, avec OpenID Connect (OIDC).

Configuration de la diffusion en continu sur S3 avec des clés d’accès

Pour configurer la diffusion en continu du journal d’audit à partir de GitHub vous devez :

  • Votre ID de clé d’accès AWS
  • Votre clé secrète AWS

Pour obtenir des informations sur la création de votre ID de clé d’accès et de votre clé secrète et sur la manière d’y accéder, consultez Understanding and getting your AWS credentials (Compréhension et obtention de vos informations d’identification AWS) dans la documentation AWS.

À partir d’AWS :

  1. Créez un compartiment et bloquez l’accès public au compartiment. Voir Création, configuration et utilisation des compartiments Amazon S3 dans la documentation AWS.

  2. Créez une stratégie qui autorise GitHub à écrire dans le compartiment. Copiez le JSON suivant et remplacez EXAMPLE-BUCKET par le nom de votre seau. GitHub ne requiert que les autorisations indiquées dans ce code JSON.

    {
       "Version": "2012-10-17",
       "Statement": [
          {
             "Sid": "VisualEditor0",
             "Effect": "Allow",
             "Action": [
                "s3:PutObject"
             ],
             "Resource": "arn:aws:s3:::EXAMPLE-BUCKET/*"
         }
       ]
    }
    

    Voir Création de stratégies de gestion des identités et des accès dans la documentation AWS.

À partir de GitHub:

  1. Accédez à votre entreprise. Par exemple, depuis la page Entreprises sur GitHub.com.

  2. En haut de la page, cliquez sur Paramètres.

  3. Sous « Paramètres », cliquez sur Journal d’audit.

  4. Sous « Journal d’audit », cliquez sur Streaming de journaux.

  5. Sélectionnez le menu déroulant Configurer le flux, puis cliquez sur Amazon S3.

  6. Sous « Authentification », cliquez sur Clés d’accès.

  7. Configurez les paramètres de flux.

    • Sous « Région », sélectionnez la région du compartiment. Par exemple : us-east-1.
    • Sous « Compartiment », entrez le nom du compartiment vers lequel vous souhaitez envoyer le flux de données. Par exemple : auditlog-streaming-test.
    • Sous « ID de clé d’accès », tapez votre ID de clé d’accès. Par exemple : ABCAIOSFODNN7EXAMPLE1.
    • Sous « Clé secrète », tapez votre clé secrète. Par exemple : aBcJalrXUtnWXYZ/A1MDENG/zPxRfiCYEXAMPLEKEY.
  8. Pour vérifier que GitHub peut se connecter au point de terminaison Amazon S3 et écrire dessus, cliquez sur Vérifier le point de terminaison.

  9. Une fois que vous avez vérifié le point de terminaison, cliquez sur Enregistrer.

Configuration de la diffusion en continu sur S3 avec OpenID Connect

Remarque

Le streaming des journaux d’audit vers S3 avec OpenID Connect pour GitHub Enterprise Cloud avec résidence des données est actuellement indisponible. Consultez « Vue d’ensemble des fonctionnalités pour GitHub Enterprise Cloud avec résidence des données ».

À partir d’AWS :

  1. Ajoutez le fournisseur OIDC GitHub à l'IAM. Voir Création de fournisseurs d’identité OpenID Connect (OIDC) dans la documentation AWS.

    • Pour l’URL du fournisseur : utilisez https://oidc-configuration.audit-log.githubusercontent.com.
    • Pour « Public », utilisez sts.amazonaws.com.
  2. Créez un compartiment et bloquez l’accès public au compartiment. Voir Création, configuration et utilisation des compartiments Amazon S3 dans la documentation AWS.

  3. Créez une stratégie qui autorise GitHub à écrire dans le compartiment. Copiez le JSON suivant et remplacez EXAMPLE-BUCKET par le nom de votre seau. GitHub ne requiert que les autorisations indiquées dans ce code JSON.

    {
       "Version": "2012-10-17",
       "Statement": [
          {
             "Sid": "VisualEditor0",
             "Effect": "Allow",
             "Action": [
                "s3:PutObject"
             ],
             "Resource": "arn:aws:s3:::EXAMPLE-BUCKET/*"
         }
       ]
    }
    

    Voir Création de stratégies de gestion des identités et des accès dans la documentation AWS.

  4. Configurez le rôle et la stratégie d’approbation pour l’IdP GitHub. Voir Création d’un rôle pour l’identité web ou la fédération OpenID Connect (console) dans la documentation AWS.

    • Ajoutez la stratégie d’autorisations que vous avez créée précédemment pour autoriser les écritures dans le compartiment.

    • Modifiez la relation d’approbation pour ajouter le champ sub aux conditions de validation, en remplaçant ENTERPRISE par le nom de votre entreprise.

      Remarque

      La ENTERPRISEvaleur est sensible à la casse. Si le nom de votre entreprise contient des lettres majuscules, utilisez la même casse dans la stratégie de confiance.

      "Condition": {
         "StringEquals": {
            "oidc-configuration.audit-log.githubusercontent.com:aud": "sts.amazonaws.com",
            "oidc-configuration.audit-log.githubusercontent.com:sub": "https://github.com/ENTERPRISE"
          }
       }
      
    • Notez le nom de ressource Amazon (ARN) du rôle créé.

À partir de GitHub:

  1. Accédez à votre entreprise. Par exemple, depuis la page Entreprises sur GitHub.com.

  2. En haut de la page, cliquez sur Paramètres.

  3. Sous « Paramètres », cliquez sur Journal d’audit.

  4. Sous « Journal d’audit », cliquez sur Streaming de journaux.

  5. Sélectionnez le menu déroulant Configurer le flux, puis cliquez sur Amazon S3.

  6. Sous « Authentification », cliquez sur OpenID Connect.

  7. Configurez les paramètres de flux.

    • Sous « Région », sélectionnez la région du compartiment. Par exemple, us-east-1une option pour la découverte automatique est également disponible.
    • Sous « Compartiment », entrez le nom du compartiment vers lequel vous souhaitez envoyer le flux de données. Par exemple : auditlog-streaming-test.
    • Sous « Rôle ARN », tapez le rôle ARN que vous avez noté précédemment. Par exemple : arn:aws::iam::1234567890:role/github-audit-log-streaming-role.
  8. Pour vérifier que GitHub peut se connecter au point de terminaison Amazon S3 et écrire dessus, cliquez sur Vérifier le point de terminaison.

  9. Une fois que vous avez vérifié le point de terminaison, cliquez sur Enregistrer.

Désactivation du streaming vers S3 avec OpenID Connect

Pour désactiver le streaming vers S3 avec OIDC, supprimez le fournisseur OIDC que vous avez créé dans AWS lors de la configuration GitHub du streaming. Voir Création de fournisseurs d’identité OpenID Connect (OIDC) dans la documentation AWS.

Si vous désactivez la diffusion en continu en raison d'une faille de sécurité dans l'OIDC, après avoir supprimé le fournisseur, configurez la diffusion en continu avec des clés d'accès jusqu'à ce que la faille soit résolue. Consultez Configurer le streaming vers S3 avec des clés d'accès.

Intégration à AWS CloudTrail Lake

Vous pouvez consolider vos journaux d'audit en intégrant le streaming vers S3 avec AWS CloudTrail Lake. Consultez la documentation AWS CloudTrail ou le GitHub Audit Log to CloudTrail Open Audit dans le référentiel aws-samples/aws-cloudtrail-lake-github-audit-log.

Configuration de la diffusion en continu sur Stockage Blob Azure

Remarque

La diffusion des journaux d’audit vers le stockage blob dans Azure Government n’est pas prise en charge.

Avant de configurer un flux dans GitHub, commencez par créer un compte de stockage et un conteneur dans Microsoft Azure. Consultez Introduction pour Stockage Blob Azure dans la documentation Microsoft.

Pour configurer le flux, vous avez besoin de l'URL d'un jeton SAS.

À partir de la Portail Microsoft Azure :

  1. Sur la page d’accueil, cliquez sur Comptes de stockage.
  2. Sous « Nom », cliquez sur le nom du compte de stockage que vous souhaitez utiliser.
  3. Sous « Stockage de données », cliquez sur Conteneurs.
  4. Cliquez sur le nom du conteneur à utiliser.
  5. Dans la barre latérale gauche, sous « Paramètres », cliquez sur Jetons d’accès partagé.
  6. Sélectionnez le menu déroulant Autorisations, puis sélectionnez Create et Write et désélectionnez toutes les autres options.
  7. Définissez une date d’expiration conforme à votre stratégie de rotation de secrets.
  8. Cliquez sur Générer une URL et un jeton SAS.
  9. Copiez la valeur du champ URL SAP d’objet blob. Vous utiliserez cette URL dans GitHub.

À partir de GitHub:

  1. Accédez à votre entreprise. Par exemple, depuis la page Entreprises sur GitHub.com.
  2. En haut de la page, cliquez sur Paramètres.
  3. Sous « Paramètres », cliquez sur Journal d’audit.
  4. Sous « Journal d’audit », cliquez sur Streaming de journaux.
  5. Sélectionnez le menu déroulant Configure, puis cliquez sur Stockage Blob Azure.
  6. Dans la page de configuration, entrez l’URL SAS de blob que vous avez copiée dans Azure. Le champ Conteneur est rempli automatiquement en fonction de l’URL.
  7. Cliquez sur Check endpoint pour vérifier que GitHub peut se connecter et écrire dans le point de terminaison Stockage Blob Azure.
  8. Une fois que vous avez vérifié le point de terminaison, cliquez sur Enregistrer.

Configuration de la diffusion en continu sur Azure Event Hubs

Remarque

Les instances Event Hubs dans Azure Government ne sont pas prises en charge.

Avant de configurer un flux dans GitHub, vous avez besoin des éléments suivants :

À partir de la Portail Microsoft Azure :

  1. En haut de la page, utilisez le champ de recherche pour rechercher « Event Hubs ».
  2. Sélectionnez Event Hubs. Les noms de vos hubs d’événements sont listés.
  3. Notez le nom du hub d’événements auquel le streaming est destiné. Cliquez sur le hub d’événements.
  4. Dans le menu de gauche, cliquez sur Stratégies d’accès partagé.
  5. Sélectionnez une stratégie d’accès partagé dans la liste des stratégies ou créez-en une.
  6. Copiez la chaîne de connexion depuis le champ Chaîne de connexion-clé primaire.

À partir de GitHub:

  1. Accédez à votre entreprise. Par exemple, depuis la page Entreprises sur GitHub.com.
  2. En haut de la page, cliquez sur Paramètres.
  3. Sous « Paramètres », cliquez sur Journal d’audit.
  4. Sous « Journal d’audit », cliquez sur Streaming de journaux.
  5. Sélectionnez la liste déroulante Configurer le flux et cliquez sur Azure Event Hubs.
  6. Sur la page de configuration, entrez :
    • Nom de l’instance Azure Event Hubs.
    • La chaîne de connexion.
  7. Cliquez sur Check endpoint pour vérifier que GitHub peut se connecter et écrire dans le point de terminaison Azure Event Hub.
  8. Une fois que vous avez vérifié le point de terminaison, cliquez sur Enregistrer.

Configuration du streaming vers Datadog

Pour configurer la diffusion en continu avec Datadog, créez un jeton client ou une clé API dans Datadog, puis configurez la diffusion des journaux d’audit dans GitHub à l’aide du jeton pour l’authentification. Vous n’avez pas besoin de créer un compartiment ou un autre conteneur de stockage dans Datadog.

Après avoir configuré le streaming vers Datadog, vous pouvez voir vos données de journal d’audit en filtrant sur « github.audit.streaming ». Consultez Gestion des journaux d’activité.

  1. Si vous ne disposez pas encore d’un compte Datadog, créez-en un.
  2. Dans Datadog, générez un jeton client ou une clé API, puis cliquez sur Copier la clé. Consultez l’API et les clés d’application dans Datadog Docs.
  3. Accédez à votre entreprise. Par exemple, depuis la page Entreprises sur GitHub.com.
  4. En haut de la page, cliquez sur Paramètres.
  5. Sous « Paramètres », cliquez sur Journal d’audit.
  6. Sous « Journal d’audit », cliquez sur Streaming de journaux.
  7. Sélectionnez le déroulant Configurer le flux, puis cliquez sur Datadog.
  8. Dans le champ Jeton, collez le jeton que vous avez copié précédemment.
  9. Sélectionnez le déroulant Site, puis cliquez sur votre site Datadog. Pour déterminer votre site, comparez votre URL Datadog avec la table dans la documentation Datadog Sites Datadog.
  10. Pour vérifier que GitHub peut se connecter et écrire à l'endpoint Datadog, cliquez sur Vérifier l'endpoint.
  11. Une fois que vous avez vérifié le point de terminaison, cliquez sur Enregistrer.
  12. Après quelques minutes, vérifiez que les données du journal d’audit apparaissent sous l’onglet Journaux dans Datadog. S’il n’apparaît pas, vérifiez que votre jeton et votre site sont corrects dans GitHub.

Configuration du streaming vers Google Cloud Storage

Pour configurer la diffusion en continu vers Google Cloud Storage, créez un compte de service dans Google Cloud avec les informations d’identification et les autorisations appropriées, puis configurez la diffusion en continu du journal d’audit à GitHub l’aide des informations d’identification du compte de service pour l’authentification.

  1. Créez un compte de service pour Google Cloud. Vous n’avez pas besoin de définir des contrôles d’accès ou des rôles IAM pour ce compte. Voir Créer et gérer des comptes de service dans la documentation Google Cloud.

  2. Créez une clé JSON pour le compte de service et stockez-la clé de manière sécurisée. Voir Créer et gérer les clés de comptes de service dans la documentation Google Cloud.

  3. Si vous ne l'avez pas encore fait, créez un seau. Voir Créer des buckets de stockage dans la documentation Google Cloud.

  4. Attribuez au compte de service le rôle Créateur d'objets de stockage pour le bucket. Voir Utilisation des autorisations Cloud IAM dans la documentation Google Cloud.

  5. Accédez à votre entreprise. Par exemple, depuis la page Entreprises sur GitHub.com.

  6. En haut de la page, cliquez sur Paramètres.

  7. Sous « Paramètres », cliquez sur Journal d’audit.

  8. Sous « Journal d’audit », cliquez sur Streaming de journaux.

  9. Sélectionnez le déroulant Configurer le flux, puis cliquez sur Google Cloud Storage.

  10. Sous « Compartiment », tapez le nom de votre compartiment Google Cloud Storage.

  11. Sous « identifiants JSON », collez tout le contenu du fichier clé JSON de votre compte de service.

  12. Pour vérifier que GitHub peut se connecter et écrire dans le bucket Google Cloud Storage, cliquez sur Vérifier le point de terminaison.

  13. Une fois que vous avez vérifié le point de terminaison, cliquez sur Enregistrer.

Configuration du streaming vers Splunk

Pour envoyer des journaux d’audit en streaming vers le point de terminaison du collecteur d’événements HTTP (HEC, HTTP Event Collector) de Splunk, vérifiez que le point de terminaison est configuré pour accepter les connexions HTTPS. Voir Set up and use HTTP Event Collector in Splunk Web (Configurer et utiliser le collecteur d’événements HTTP) dans la documentation Splunk.

Remarque

GitHub valide le point de terminaison HEC via <Domain>:port/services/collector. Si vous hébergez vous-même le point de terminaison (comme avec Splunk HEC Receiver via OpenTelemetry), assurez-vous qu'il est accessible à cette destination.

  1. Accédez à votre entreprise. Par exemple, depuis la page Entreprises sur GitHub.com.

  2. En haut de la page, cliquez sur Paramètres.

  3. Sous « Paramètres », cliquez sur Journal d’audit.

  4. Sous « Journal d’audit », cliquez sur Streaming de journaux.

  5. Sélectionnez le déroulant Configurer le flux, puis cliquez sur Splunk.

  6. Sur la page de configuration, entrez :

    • Le domaine sur lequel l’application destinataire du streaming est hébergée.

      Si vous utilisez Splunk Cloud, Domain doit être http-inputs-<host>, où host est le domaine que vous utilisez dans Splunk Cloud. Par exemple : http-inputs-mycompany.splunkcloud.com.

      Si vous utilisez la version d’essai gratuite de Splunk Cloud, Domain doit être inputs.<host>, où host est le domaine que vous utilisez dans Splunk Cloud. Par exemple : inputs.mycompany.splunkcloud.com.

    • Le port sur lequel l’application accepte les données.

      Si vous utilisez Splunk Cloud, Port doit être 443.

      Si vous utilisez la version d’essai gratuite de Splunk Cloud, Port doit être 8088.

    • Un jeton que GitHub peut utiliser pour s'authentifier auprès de l'application externe.

  7. Laissez la case Activer la vérification SSL cochée.

    Les journaux d’audit sont toujours diffusés en continu sous forme de données chiffrées; cependant, si cette option est sélectionnée, GitHub vérifie le certificat SSL de votre instance Splunk lorsque des événements sont transmis. La vérification SSL permet de s’assurer que les événements sont remis à votre point de terminaison d’URL de manière sécurisée. La vérification est facultative, mais nous vous recommandons de laisser la vérification SSL activée.

  8. Cliquez sur Vérifier le point de terminaison pour vérifier que GitHub peut se connecter et écrire vers le point de terminaison Splunk.

  9. Une fois que vous avez vérifié le point de terminaison, cliquez sur Enregistrer.

Suspension du streaming de journaux d’audit

Interrompre le flux pour effectuer des opérations de maintenance sur l'application réceptrice sans perdre les données d'audit. Les journaux d’audit sont stockés pendant jusqu’à sept jours GitHub et sont ensuite exportés lorsque vous supprimez le flux.

Datadog n'accepte que les logs remontant jusqu'à 18 heures dans le passé. Si vous suspendez un flux vers un point de terminaison Datadog pendant plus de 18 heures, vous risquez de perdre les journaux que Datadog n’acceptera pas après avoir repris le streaming.

  1. Accédez à votre entreprise. Par exemple, depuis la page Entreprises sur GitHub.com.
  2. En haut de la page, cliquez sur Paramètres.
  3. Sous « Paramètres », cliquez sur Journal d’audit.
  4. Sous « Journal d’audit », cliquez sur Streaming de journaux.
  5. À droite de votre flux configuré, cliquez sur Suspendre le flux.
  6. Un message de confirmation s’affiche. Cliquez sur Suspendre le flux pour confirmer.

Pour redémarrer la diffusion en continu, cliquez sur Reprendre le flux.

Suppression du flux de journaux d’audit

  1. Accédez à votre entreprise. Par exemple, depuis la page Entreprises sur GitHub.com.
  2. En haut de la page, cliquez sur Paramètres.
  3. Sous « Paramètres », cliquez sur Journal d’audit.
  4. Sous « Journal d’audit », cliquez sur Streaming de journaux.
  5. Sous « Zone de danger », cliquez sur Supprimer le flux.
  6. Un message de confirmation s’affiche. Cliquez sur Supprimer le flux pour confirmer.

Activation du streaming de journaux d’audit des demandes d’API

Remarque

Toutes les requêtes API ne sont pas incluses dans le flux du journal d’audit après l’activation de cette fonctionnalité. Le flux des requêtes API est limité aux points de terminaison pertinents pour la sécurité.

  1. Accédez à votre entreprise. Par exemple, depuis la page Entreprises sur GitHub.com.
  2. En haut de la page, cliquez sur Paramètres.
  3. Sous « Paramètres », cliquez sur Journal d’audit.
  4. Sous « Journal d’audit », cliquez sur Paramètres.
  5. Sous « Demandes d’API », sélectionnez Activer les événements de demande d’API.
  6. Cliquez sur Enregistrer.