Skip to main content

Streaming de journaux d’audit pour votre entreprise

Vous pouvez envoyer en streaming les données d’événements d’audit et Git à partir de GitHub vers un système de gestion des données externe.

Qui peut utiliser cette fonctionnalité ?

Enterprise owners can configure audit log streaming.

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. Pour plus d’informations, consultez « Documentation sur les webhooks ».

À propos du streaming de journaux d’audit

Pour protéger votre propriété intellectuelle et assurer la conformité de votre entreprise, vous pouvez utiliser le streaming pour conserver des copies des données de vos données de journaux d’audit. Les événements de journal d’audit, tels que les modifications apportées aux paramètres et à l’accès, à l’abonnement des utilisateurs, aux autorisations d’application, etc. Si vous activez le streaming pour les données des journaux d’audit, vous pouvez bénéficier des avantages suivants.

  • Exploration des données. Vous pouvez examiner 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 les événements d’audit et les événements Git pour l’ensemble du compte d’entreprise.
  • Continuité des données. Vous pouvez suspendre le flux jusqu’à sept jours sans perdre de données d’audit.
  • Conservation des données. Vous pouvez conserver les données exportées des journaux d’audit et des événements Git tant que vous en avez besoin.

Les propriétaires d’entreprise peuvent 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.

Événements qui apparaissent dans les flux de journaux d’audit

Vous pouvez consulter les événements spécifiques qui apparaissent dans les journaux d’audit diffusés en continu. Pour plus d'informations, consultez les articles suivants.

Configuration du streaming de journaux d’audit

Vous configurez le flux de journaux d’audit sur GitHub Enterprise Cloud en suivant les instructions de votre fournisseur.

Configuration du streaming vers Amazon S3

Vous pouvez configurer le streaming vers S3 avec des clés d’accès ou, pour éviter de stocker des secrets à longue durée de vie dans GitHub Enterprise Cloud, avec OpenID Connect (OIDC).

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

Pour configurer l’envoi en streaming de journaux d’audit à partir de GitHub vous aurez besoin des éléments suivants :

  • 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.

  1. Dans AWS, créez un compartiment et bloquez l’accès public au compartiment. Pour plus d’informations, consultez Création, configuration et utilisation des compartiments Amazon S3 dans la documentation AWS.

  2. Dans AWS, créez une stratégie qui permet à GitHub d’écrire dans le compartiment en copiant le code JSON suivant et en remplaçant EXAMPLE-BUCKET par le nom de votre compartiment. 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/*"
         }
       ]
    }
    

    Pour plus d’informations, consultez Création de stratégies de gestion des identités et des accès dans la documentation AWS.

  3. Dans le coin supérieur droit de GitHub.com, cliquez sur votre photo de profil, puis sur Vos entreprises.

  4. Dans la liste des entreprises, cliquez sur l’entreprise que vous souhaitez afficher.

  5. Dans la barre latérale du compte d’entreprise, cliquez sur Paramètres.

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

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

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

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

  10. Configurez les paramètres de flux.

    • Sous « Compartiment », entrez le nom du compartiment destinataire du streaming. 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.
  11. 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.

  12. 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

  1. Dans AWS, ajoutez le fournisseur OIDC GitHub à IAM. Pour plus d’informations, consultez 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. Dans AWS, créez un compartiment et bloquez l’accès public au compartiment. Pour plus d’informations, consultez Création, configuration et utilisation des compartiments Amazon S3 dans la documentation AWS.

  3. Dans AWS, créez une stratégie qui permet à GitHub d’écrire dans le compartiment en copiant le code JSON suivant et en remplaçant EXAMPLE-BUCKET par le nom de votre compartiment. 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/*"
         }
       ]
    }
    

    Pour plus d’informations, consultez 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 le fournisseur d’identité GitHub. Pour plus d’informations, consultez 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 ci-dessus 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.

      "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éé.

  5. Dans le coin supérieur droit de GitHub.com, cliquez sur votre photo de profil, puis sur Vos entreprises.

  6. Dans la liste des entreprises, cliquez sur l’entreprise que vous souhaitez afficher.

  7. Dans la barre latérale du compte d’entreprise, cliquez sur Paramètres.

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

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

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

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

  12. Configurez les paramètres de flux.

    • Sous « Compartiment », entrez le nom du compartiment destinataire du streaming. 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.
  13. 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.

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

Désactivation du streaming vers S3 avec OpenID Connect

Si vous souhaitez désactiver le streaming vers S3 avec OIDC pour une raison ou une autre, comme la découverte d’une vulnérabilité de sécurité dans OIDC, supprimez le fournisseur OIDC GitHub que vous avez créé dans AWS lors de la configuration du streaming. Pour plus d’informations, consultez Création de fournisseurs d’identité OpenID Connect (OIDC) dans la documentation AWS.

Ensuite, configurez le streaming avec des clés d’accès jusqu’à ce que la vulnérabilité soit résolue. Pour plus d’informations, consultez « Configuration du streaming vers S3 avec des clés d’accès ».

Intégration à AWS CloudTrail Lake

Vous pouvez consolider vos journaux d’audit de GitHub Enterprise Cloud avec les journaux d’activité AWS en intégrant le streaming de journaux d’audit vers S3 à AWS CloudTrail Lake. Pour plus d’informations, consultez la documentation AWS CloudTrail ou la procédure d’intégration des journaux d’audit GitHub à CloudTrail dans le dépôt aws-samples/aws-cloudtrail-lake-github-audit-log.

Configuration du streaming vers le Stockage Blob Azure

Avant de configurer un flux dans GitHub, vous devez créer un compte de stockage et un conteneur dans Microsoft Azure. Pour plus d’informations, consultez la documentation Microsoft « Présentation du Stockage Blob Azure ».

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

Dans le 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 secret.
  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.

Dans GitHub  :

  1. Dans le coin supérieur droit de GitHub.com, cliquez sur votre photo de profil, puis sur Vos entreprises.

  2. Dans la liste des entreprises, cliquez sur l’entreprise que vous souhaitez afficher.

  3. Dans la barre latérale du compte d’entreprise, cliquez sur Paramètres.

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

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

  6. Sélectionnez le menu déroulant Configurer le flux, puis cliquez sur Stockage Blob Azure.

  7. Dans la page de configuration, entrez l’URL SAS d’objet blob que vous avez copiée dans Azure. Le champ Conteneur est rempli automatiquement en fonction de l’URL.

  8. Cliquez sur Vérifier le point de terminaison pour vérifier que GitHub peut se connecter au point de terminaison Stockage Blob Azure et écrire dessus.

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

Configuration du streaming vers Azure Event Hubs

Avant de configurer un flux dans GitHub, vous devez disposer d’un espace de noms de hub d’événements dans Microsoft Azure. Ensuite, vous devez créer une instance de hub d’événements dans l’espace de noms. Vous aurez besoin des détails de cette instance de hub d’événements quand vous configurerez le flux. Pour plus d’informations, consultez la documentation Microsoft « Démarrage rapide : Créer un hub d’événements avec le portail Azure ».

Vous avez besoin de deux informations sur votre hub d’événements : son nom d’instance et la chaîne de connexion.

Dans le portail Microsoft Azure :

  1. En haut de la page, en regard de « Microsoft Azure », 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 à partir du champ Clé primaire de la chaîne de connexion.

Dans GitHub  :

  1. Dans le coin supérieur droit de GitHub.com, cliquez sur votre photo de profil, puis sur Vos entreprises.

  2. Dans la liste des entreprises, cliquez sur l’entreprise que vous souhaitez afficher.

  3. Dans la barre latérale du compte d’entreprise, cliquez sur Paramètres.

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

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

  6. Sélectionnez le menu déroulant Configurer le flux, puis cliquez sur Azure Event Hubs.

  7. Sur la page de configuration, entrez :

    • Le nom de l’instance Azure Event Hubs
    • Chaîne de connexion
  8. Cliquez sur Vérifier le point de terminaison pour vérifier que GitHub peut se connecter au point de terminaison Azure Events Hubs et écrire dessus.

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

Configuration du streaming vers Datadog

Pour configurer le streaming vers Datadog, vous devez créer un jeton client ou une clé API dans Datadog, puis configurer le streaming de journaux d’audit dans GitHub Enterprise Cloud à 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 ». Pour plus d’informations, consultez « Gestion des journaux ».

  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é. Pour plus d’informations, consultez Clés API et clés d’application dans la documentation Datadog.

  3. Dans le coin supérieur droit de GitHub.com, cliquez sur votre photo de profil, puis sur Vos entreprises.

  4. Dans la liste des entreprises, cliquez sur l’entreprise que vous souhaitez afficher.

  5. Dans la barre latérale du compte d’entreprise, cliquez sur Paramètres.

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

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

  8. Sélectionnez le menu déroulant Configurer le flux, puis cliquez sur Datadog.

  9. Dans le champ Jeton, collez le jeton que vous avez copié précédemment.

  10. Sélectionnez le menu déroulant Site, puis cliquez sur votre site Datadog. Pour déterminer votre site Datadog, comparez votre URL Datadog avec la table dans la documentation Datadog Sites Datadog.

  11. Pour vérifier que GitHub peut se connecter au point de terminaison Datadog et écrire dessus, cliquez sur Vérifier le point de terminaison.

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

  13. Après quelques minutes, vérifiez que les données du journal d’audit apparaissent sous l’onglet Journaux dans Datadog. Si les données du journal d’audit n’apparaissent pas, vérifiez que votre jeton et votre site sont corrects dans GitHub.

Configuration du streaming vers Google Cloud Storage

Pour configurer le streaming vers Google Cloud Storage, vous devez créer un compte de service dans Google Cloud avec les informations d’identification et les autorisations appropriées, puis configurer le streaming de journaux d’audit dans GitHub Enterprise Cloud à 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 le compte de service. Pour plus d’informations, consultez 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. Pour plus d’informations, consultez Créer et gérer les clés de comptes de service dans la documentation Google Cloud.

  3. Créez le compartiment si ce n’est déjà fait. Pour plus d’informations, consultez Créer des buckets de stockage dans la documentation Google Cloud.

  4. Attribuez au compte de service le rôle Créateur des objets de l’espace de stockage pour le compartiment. Pour plus d’informations, consultez Utiliser des autorisations IAM dans la documentation Google Cloud.

  5. Dans le coin supérieur droit de GitHub.com, cliquez sur votre photo de profil, puis sur Vos entreprises.

  6. Dans la liste des entreprises, cliquez sur l’entreprise que vous souhaitez afficher.

  7. Dans la barre latérale du compte d’entreprise, cliquez sur Paramètres.

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

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

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

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

  12. Sous « Informations d’identification JSON », collez tout le contenu du fichier pour la clé JSON de votre compte de service.

  13. Pour vérifier que GitHub peut se connecter au compartiment Google Cloud Storage et écrire dessus, cliquez sur Vérifier le point de terminaison.

  14. 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, vous devez vérifier que le point de terminaison est configuré pour accepter les connexions HTTPS. Pour plus d’informations, consultez 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 HEC (par exemple, avec Splunk HEC Receiver via OpenTelemetry), assurez-vous que le point de terminaison est accessible à cette destination.

Vous pouvez utiliser l’API REST pour obtenir la liste des plages d’adresses IP utilisées par GitHub pour les connexions au point de terminaison HEC. Le point de terminaison meta de GitHub Enterprise Cloud inclut une clé hooks avec une liste des adresses IP. Pour plus d’informations, consultez « Points de terminaison d’API REST pour les métadonnées ».

  1. Dans le coin supérieur droit de GitHub.com, cliquez sur votre photo de profil, puis sur Vos entreprises.

  2. Dans la liste des entreprises, cliquez sur l’entreprise que vous souhaitez afficher.

  3. Dans la barre latérale du compte d’entreprise, cliquez sur Paramètres.

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

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

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

  7. 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 et que vous n’avez pas modifié la configuration de port, 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 tierce.

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

    Les journaux d’audit sont toujours envoyés en streaming sous forme de données chiffrées. Cependant, quand cette option est sélectionnée, GitHub vérifie le certificat SSL de votre instance Splunk au moment de la remise des événements. 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. Vous pouvez désactiver cette case, mais nous recommandons de garder la vérification SSL activée.

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

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

Suspension du streaming de journaux d’audit

La suspension du flux vous permet d’effectuer une maintenance sur l’application de réception sans perdre les données d’audit. Les journaux d’audit sont stockés jusqu’à sept jours sur GitHub.com, puis sont exportés quand vous annulez la suspension.

Datadog accepte uniquement les journaux ayant une ancienneté maximale de 18 heures. 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. Dans le coin supérieur droit de GitHub.com, cliquez sur votre photo de profil, puis sur Vos entreprises.

  2. Dans la liste des entreprises, cliquez sur l’entreprise que vous souhaitez afficher.

  3. Dans la barre latérale du compte d’entreprise, cliquez sur Paramètres.

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

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

  6. À droite de votre flux configuré, cliquez sur Suspendre le flux.

  7. Un message de confirmation s’affiche. Cliquez sur Suspendre le flux pour confirmer.

Quand l’application est prête à recevoir de nouveau les journaux d’audit, cliquez sur Reprendre le flux pour redémarrer le streaming des journaux d’audit.

Suppression du flux de journaux d’audit

  1. Dans le coin supérieur droit de GitHub.com, cliquez sur votre photo de profil, puis sur Vos entreprises.

  2. Dans la liste des entreprises, cliquez sur l’entreprise que vous souhaitez afficher.

  3. Dans la barre latérale du compte d’entreprise, cliquez sur Paramètres.

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

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

  6. Sous « Zone de danger », cliquez sur Supprimer le flux.

  7. 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 : Cette fonctionnalité est actuellement en version bêta publique et sujette à modification.

  1. Dans le coin supérieur droit de GitHub.com, cliquez sur votre photo de profil, puis sur Vos entreprises.

  2. Dans la liste des entreprises, cliquez sur l’entreprise que vous souhaitez afficher.

  3. Dans la barre latérale du compte d’entreprise, cliquez sur Paramètres.

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

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

  6. Sous « Demandes d’API », sélectionnez Activer les événements de demande d’API.

  7. Cliquez sur Enregistrer.