Skip to main content

Streaming de journaux d’audit pour votre entreprise

Apprenez à diffuser 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

Note

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

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. 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. Voir « É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 les événements d’audit et les événements Git pour 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.

Note

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 de santé pour les flux de journaux d'audit

Toutes les 24 heures, un contrôle de santé s’exécute 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 des journaux d’audit ».

Configuration du streaming de journaux d’audit

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

Note

Utilisez l’API REST pour obtenir la liste des plages d’adresses IP utilisées par GitHub pour les connexions au point de terminaison de diffusion. Le point de terminaison meta de GitHub Enterprise Cloud inclut une clé hooks avec une liste des adresses IP. Consultez « Points de terminaison d’API REST pour les métadonnées ».

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.

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

De GitHub :

  1. Dans le coin supérieur droit de GitHub, 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. Sur le côté gauche de la page, 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 Amazon S3.

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

  8. 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 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.
  9. 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.

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

À partir d’AWS :

  1. Et le fournisseur OIDC GitHub à 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 le fournisseur d’identité 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.

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

De GitHub:

  1. Dans le coin supérieur droit de GitHub, 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. Sur le côté gauche de la page, 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. 1. 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-1 ; une option pour la découverte automatique est également disponible.
    • 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.
  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 la diffusion en continu vers S3 avec OIDC, supprimez le GitHub OIDC que vous avez créé dans AWS lorsque vous avez configuré la diffusion en continu. 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. Voir « Configurer la diffusion en continu 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. Voir 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, créez d'abord un compte de stockage et un conteneur dans Microsoft Azure. Voir Introduction to Azure Blob Storage dans la documentation Microsoft.

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

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

De GitHub :

  1. Dans le coin supérieur droit de GitHub, 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. Sur le côté gauche de la page, 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, créez 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. Voir « Démarrage rapide : Créer un hub d’événements avec le portail Azure » dans la documentation Microsoft.

Vous aurez également besoin du nom de l'instance de votre hub d'événements et de la chaîne de connexion.

Du 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 à partir du champ Clé primaire de la chaîne de connexion.

De GitHub :

  1. Dans le coin supérieur droit de GitHub, 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. Sur le côté gauche de la page, 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 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, créez 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 ». 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é. Voir Clés API et clés d’application dans la documentation Datadog.

  3. Dans le coin supérieur droit de GitHub, 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. Sur le côté gauche de la page, 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 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 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.

  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. S’il n’apparait 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, créez 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 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 des objets de l’espace de stockage pour le compartiment. Voir Utiliser des autorisations IAM dans la documentation Google Cloud.

  5. Dans le coin supérieur droit de GitHub, 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. Sur le côté gauche de la page, 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 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 « identifiants JSON », collez tout le contenu du fichier 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, 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.

Note

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. Dans le coin supérieur droit de GitHub, 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. Sur le côté gauche de la page, 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 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, 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. La vérification est facultative, mais nous vous recommandons de laisser 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

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 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, 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. Sur le côté gauche de la page, 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.

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

Suppression du flux de journaux d’audit

  1. Dans le coin supérieur droit de GitHub, 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. Sur le côté gauche de la page, 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

Note

Cette fonctionnalité est actuellement en version bêta publique et sujette à modification.

  1. Dans le coin supérieur droit de GitHub, 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. Sur le côté gauche de la page, 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.