> ## Documentation Index
> Fetch the complete documentation index at: https://wb-21fd5541-workspaces-notebooks.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Suivre l’activité des utilisateurs avec les journaux d’audit

> Accédez aux journaux d’audit W&B, récupérez-les et analysez-les pour les différents types de déploiement, y compris le schéma du journal et les actions suivies.

Utilisez les journaux d’audit W\&B pour suivre l’activité des utilisateurs au sein de votre organisation et répondre à vos exigences de gouvernance d’entreprise. Cette page s’adresse aux administrateurs de l’organisation qui doivent accéder aux données des journaux d’audit, les récupérer et les analyser pour les différents types de déploiement W\&B. Les journaux d’audit sont disponibles au format JSON. Reportez-vous à [Schéma du journal d’audit](#audit-log-schema).

La manière dont vous accédez aux journaux d’audit dépend du type de déploiement de votre plateforme W\&B :

| Type de déploiement de la plateforme W\&B                                  | Mécanisme d’accès aux journaux d’audit                                                                                                                                                                                                                                                                                                                    |
| -------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [Cloud dédié](/fr/platform/hosting/hosting-options/dedicated-cloud)        | <ul><li>[BYOB au niveau de l’instance](/fr/platform/hosting/data-security/secure-storage-connector) : synchronisé dans le bucket de l’instance (BYOB) toutes les 10 minutes. Également disponible avec [l’API](#fetch-audit-logs).</li><li>Stockage par défaut au niveau de l’instance : disponible uniquement avec [l’API](#fetch-audit-logs).</li></ul> |
| [Cloud mutualisé](/fr/platform/hosting/hosting-options/multi_tenant_cloud) | Disponible uniquement pour les plans Enterprise. Disponible uniquement avec [l’API](#fetch-audit-logs).                                                                                                                                                                                                                                                   |
| [Autogéré](/fr/platform/hosting/hosting-options/self-managed)              | Synchronisé dans le bucket de l’instance toutes les 10 minutes. Également disponible avec [l’API](#fetch-audit-logs).                                                                                                                                                                                                                                     |

Après avoir récupéré les journaux d’audit, vous pouvez les analyser avec des outils comme [Pandas](https://pandas.pydata.org/docs/index.html), [Amazon Redshift](https://aws.amazon.com/redshift/), [Google BigQuery](https://cloud.google.com/bigquery) ou [Microsoft Fabric](https://www.microsoft.com/microsoft-fabric). Certains outils d’analyse des journaux d’audit ne prennent pas en charge le format JSON. Reportez-vous à la documentation de votre outil d’analyse pour connaître les recommandations et les exigences relatives à la transformation des journaux d’audit au format JSON avant l’analyse.

Pour plus de détails sur le format des journaux, voir [Schéma du journal d’audit](#audit-log-schema) et [Actions](#actions).

<div id="audit-log-retention">
  ## Conservation des journaux d’audit
</div>

Les recommandations suivantes vous aident à conserver les journaux d’audit afin de respecter les obligations de gouvernance et de conformité de votre organisation :

* Si vous devez conserver les journaux d’audit pendant une durée déterminée, W\&B recommande de les transférer régulièrement vers un stockage à long terme, soit à l’aide de buckets de stockage, soit via l’API Audit Logging.
* Si vous êtes soumis au [Health Insurance Portability and Accountability Act of 1996 (HIPAA)](https://hhs.gov/hipaa/for-professionals/index.html), vous devez conserver les journaux d’audit pendant au moins 6 ans dans un environnement où ils ne peuvent être ni supprimés ni modifiés par un acteur interne ou externe avant la fin de la période de conservation obligatoire. Pour les instances [Cloud dédié](/fr/platform/hosting/hosting-options/dedicated-cloud) conformes à HIPAA avec [BYOB](/fr/platform/hosting/data-security/secure-storage-connector), vous devez configurer des garde-fous pour votre stockage géré, y compris tout stockage de conservation à long terme.

<div id="audit-log-schema">
  ## Schéma du journal d’audit
</div>

Utilisez ce schéma pour interpréter les champs renvoyés dans chaque entrée du journal d’audit. Ce tableau présente toutes les clés susceptibles d’apparaître dans une entrée du journal d’audit, par ordre alphabétique. Selon l’action et le contexte, une entrée de journal donnée peut ne contenir qu’un sous-ensemble des champs possibles.

| Clé                       | Définition                                                                                                                                                            |
| ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `action`                  | L’[action](#actions) de l’événement.                                                                                                                                  |
| `actor_email`             | L’adresse e-mail de l’utilisateur à l’origine de l’action, le cas échéant.                                                                                            |
| `actor_ip`                | L’adresse IP de l’utilisateur à l’origine de l’action.                                                                                                                |
| `actor_user_id`           | L’ID de l’utilisateur connecté ayant effectué l’action, le cas échéant.                                                                                               |
| `artifact_asset`          | L’ID de l’artifact associé à l’action, le cas échéant.                                                                                                                |
| `artifact_digest`         | Le digest de l’artifact associé à l’action, le cas échéant.                                                                                                           |
| `artifact_qualified_name` | Le nom complet de l’artifact associé à l’action, le cas échéant.                                                                                                      |
| `artifact_sequence_asset` | L’ID de la séquence d’artifact associée à l’action, le cas échéant.                                                                                                   |
| `cli_version`             | La version du SDK Python à l’origine de l’action, le cas échéant.                                                                                                     |
| `entity_asset`            | L’ID de l’entité ou de l’équipe associée à l’action, le cas échéant.                                                                                                  |
| `entity_name`             | Le nom de l’entité ou de l’équipe associée à l’action, le cas échéant.                                                                                                |
| `project_asset`           | Le projet associé à l’action, le cas échéant.                                                                                                                         |
| `project_name`            | Le nom du projet associé à l’action, le cas échéant.                                                                                                                  |
| `report_asset`            | L’ID du rapport associé à l’action, le cas échéant.                                                                                                                   |
| `report_name`             | Le nom du rapport associé à l’action, le cas échéant.                                                                                                                 |
| `response_code`           | Le code de réponse HTTP de l’action, le cas échéant.                                                                                                                  |
| `timestamp`               | L’heure de l’événement au [format RFC3339](https://www.rfc-editor.org/rfc/rfc3339). Par exemple, `2023-01-23T12:34:56Z` représente le 23 janvier 2023 à 12:34:56 UTC. |
| `user_asset`              | La ressource utilisateur concernée par l’action (et non l’utilisateur qui effectue l’action), le cas échéant.                                                         |
| `user_email`              | L’adresse e-mail de l’utilisateur concerné par l’action (et non celle de l’utilisateur qui effectue l’action), le cas échéant.                                        |

<div id="personally-identifiable-information-pii">
  ### Informations personnelles identifiables (PII)
</div>

Les informations personnelles identifiables (PII), telles que les adresses e-mail et les noms des Projects, des équipes et des rapports, sont disponibles uniquement avec l’option point de terminaison d’API :

* Pour [Autogéré](/fr/platform/hosting/hosting-options/self-managed) et [Cloud dédié](/fr/platform/hosting/hosting-options/dedicated-cloud), un administrateur d’organisation peut [exclure les PII](#exclude-pii) lors de la récupération des journaux d’audit.
* Pour [Cloud mutualisé](/fr/platform/hosting/hosting-options/multi_tenant_cloud), le point de terminaison d’API renvoie toujours les champs pertinents pour les journaux d’audit, y compris les PII. Cela n’est pas configurable.

<div id="before-you-begin">
  ## Avant de commencer
</div>

Avant de récupérer les journaux d’audit, confirmez que vous remplissez les prérequis suivants pour votre type de déploiement :

* Les administrateurs de l’organisation peuvent récupérer les journaux d’audit. Si vous recevez une erreur `403`, assurez-vous que vous ou votre compte de service disposez des autorisations nécessaires.
* **Cloud mutualisé** : Si vous êtes membre de plusieurs organisations en **Cloud mutualisé**, vous *devez* configurer l’**organisation API par défaut**, qui détermine vers quelle organisation sont acheminés les appels à l’API des journaux d’audit. Sinon, vous recevrez l’erreur suivante :

  ```text theme={null}
  user is associated with multiple organizations but no valid org ID found in user info
  ```

  Pour définir votre organisation API par défaut :

  1. Cliquez sur votre image de profil, puis sur **Paramètres utilisateur**.
  2. Pour **l’organisation API par défaut**, sélectionnez une organisation.

  Cela ne s’applique pas à un compte de service, qui ne peut être membre que d’une seule organisation en **Cloud mutualisé**.

<div id="fetch-audit-logs">
  ## Récupérer les journaux d’audit
</div>

Utilisez l’API Audit Logging de W\&B pour récupérer les journaux d’audit. Le point de terminaison, les paramètres de requête et le format de réponse dépendent de votre type de déploiement.

<Tabs>
  <Tab title="Cloud dédié ou autogéré">
    Utilisez cet onglet pour les instances [Cloud dédié](/fr/platform/hosting/hosting-options/dedicated-cloud) ou [Autogérées](/fr/platform/hosting/hosting-options/self-managed). Le point de terminaison de l'API Audit Logging utilise l'URL de votre instance :

    * Cloud dédié : `https://[INSTANCE-NAME].wandb.io/admin/audit_logs`.
    * Autogéré : `https://[WANDB-PLATFORM-URL]/admin/audit_logs`.

    Dans les exemples suivants, remplacez :

    * `[INSTANCE-NAME]` : le nom de votre instance de Cloud dédié.
    * `[WANDB-PLATFORM-URL]` : l'URL de votre instance Autogérée.
    * `[API-ENDPOINT]` : le point de terminaison de votre instance.
    * `[BASE64-USERNAME-API-KEY]` : la chaîne encodée en base64 au format `[USERNAME]:[API-KEY]`.
    * `[NEXT-CURSOR]` : la valeur `next_cursor` issue de la réponse précédente.

    Les paramètres de requête suivants sont pris en charge :

    * `anonymize` : si l'URL inclut `anonymize=true`, W\&B n'ajoute pas de champs PII aux journaux d’audit. Sinon, les PII sont incluses. Pour plus d'informations, voir [Exclure les PII lors de la récupération des journaux d’audit](#exclude-pii).
    * `startDate` : début inclus de la plage de dates, en UTC. Les formats pris en charge sont `YYYY-MM-DD`, `YYYY-MM-DDTHH`, `YYYY-MM-DDTHH:mm` et `YYYY-MM-DDTHH:mm:ss`. Les composantes horaires omises valent zéro par défaut. Par exemple, `2026-08-03T01` correspond à `2026-08-03T01:00:00Z`. Si vous omettez `startDate`, la plage commence aujourd'hui à minuit UTC, ou `numDays` jours avant aujourd'hui si vous définissez `numDays`.
    * `numDays` : entier non négatif. W\&B récupère les journaux depuis `startDate` sur les `numDays` jours suivants. Si vous omettez `numDays` ou le définissez à `0`, W\&B récupère uniquement les journaux de la journée `startDate`. Vous ne pouvez pas utiliser `numDays` avec `endDate`.
    * `endDate` : fin exclue de la plage de dates, en UTC. Les formats pris en charge sont les mêmes que pour `startDate`. Définir `endDate` renvoie une réponse JSON paginée, même si vous ne définissez pas `limit`. Vous ne pouvez pas utiliser `endDate` avec `numDays`.
    * `limit` : nombre maximum d'entrées de journaux d’audit à renvoyer dans une réponse paginée. Utilisez un entier positif jusqu'à `20,000`. Si vous définissez `limit`, W\&B renvoie une réponse JSON paginée. Dans les requêtes paginées, la valeur par défaut est `20,000`.
    * `cursor` : curseur opaque provenant du champ `next_cursor` de la réponse précédente. Réutilisez ce curseur avec la même plage de dates résolue et la même valeur `anonymize`. Si vous définissez `cursor`, vous devez également définir `limit` ou `endDate`.

    Si vous ne définissez ni `limit` ni `endDate`, l'API conserve le format de réponse en streaming d'origine. La réponse contient des objets JSON séparés par des sauts de ligne. Chaque objet comprend les champs décrits dans [Schéma du journal d'audit](#audit-log-schema), soit les mêmes que ceux des journaux synchronisés vers un bucket de l'instance.

    Pour récupérer en flux continu une réponse JSON dont les objets sont séparés par des sauts de ligne, sur une plage de trois jours, en excluant les données personnelles (PII), exécutez :

    ```bash theme={null}
    curl -H "Authorization: Basic [BASE64-USERNAME-API-KEY]" \
      "[API-ENDPOINT]?startDate=2026-08-01&numDays=2&anonymize=true"
    ```

    Si vous définissez `limit` ou `endDate`, l'API renvoie un objet JSON contenant les champs suivants :

    * `audit_logs` : un tableau d'entrées du journal d'audit. Chaque entrée contient les champs décrits dans [Schéma du journal d'audit](#audit-log-schema).
    * `range_start_time` : le début de la plage de dates résolue, en UTC.
    * `range_end_time` : la fin exclusive de la plage de dates résolue, en UTC.
    * `count` : le nombre d'entrées du journal d'audit renvoyées dans cette réponse.
    * `next_cursor` : un curseur opaque pointant vers la page de résultats suivante. Si ce champ vaut `null`, il n'y a plus de résultats pour la plage de dates sélectionnée.

    Pour récupérer une réponse paginée sur une plage de deux heures, exécutez :

    ```bash theme={null}
    curl -H "Authorization: Basic [BASE64-USERNAME-API-KEY]" \
      "[API-ENDPOINT]?startDate=2026-08-01T13:00&endDate=2026-08-01T15:00&limit=1000"
    ```

    La réponse ressemble à l'exemple suivant :

    ```json theme={null}
    {
      "audit_logs": [
        {
          "action": "project:read",
          "actor_email": "admin@example.com",
          ...
          "timestamp": "2026-08-01T14:00:00Z",
        }
      ],
      "range_start_time": "2026-08-01T13:00:00Z",
      "range_end_time": "2026-08-01T15:00:00Z",
      "count": 1,
      "next_cursor": "eyJ2ZXJzaW9uIjox..."
    }
    ```

    Pour récupérer la page suivante, réexécutez la requête avec la même plage de dates résolue et la même valeur `anonymize`. Définissez `cursor` sur la valeur `next_cursor` renvoyée par la réponse précédente. Répétez l'opération jusqu'à ce que `next_cursor` soit `null`.

    ```bash theme={null}
    curl -H "Authorization: Basic [BASE64-USERNAME-API-KEY]" \
      "[API-ENDPOINT]?startDate=2026-08-01T13:00&endDate=2026-08-01T15:00&limit=1000&cursor=[NEXT-CURSOR]"
    ```

    <div id="exclude-pii-when-fetching-audit-logs">
      ### Exclure les informations personnelles (PII) lors de la récupération des journaux d’audit <a id="exclude-pii" />
    </div>

    Pour [Autogéré](/fr/platform/hosting/hosting-options/self-managed) et [Cloud dédié](/fr/platform/hosting/hosting-options/dedicated-cloud), un administrateur d'organisation ou d'instance W\&B peut exclure les informations personnelles identifiables (PII) lors de la récupération des journaux d'audit. Pour [Cloud mutualisé](/fr/platform/hosting/hosting-options/multi_tenant_cloud), l'API endpoint renvoie toujours les champs pertinents des journaux d'audit, y compris les PII. Ce comportement n'est pas configurable.

    Pour exclure les données personnelles (PII), transmettez le paramètre d’URL `anonymize=true`. Par exemple, pour obtenir les journaux d’audit de l’activité des utilisateurs au cours de la dernière semaine en excluant les PII, si l’URL de votre instance W\&B est `https://mycompany.wandb.io`, utilisez un point de terminaison d’API tel que :

    ```text theme={null}
    https://mycompany.wandb.io/admin/audit_logs?anonymize=true&[ADDITIONAL-PARAMETERS].
    ```
  </Tab>

  <Tab title="Cloud mutualisé">
    Utilisez cet onglet pour le [Cloud mutualisé](/fr/platform/hosting/hosting-options/multi_tenant_cloud). Les journaux d'audit multilocataires sont disponibles uniquement pour les plans Enterprise. L'API endpoint de l'API Audit Logging est le suivant :

    ```text theme={null}
    https://api.wandb.ai/audit_logs
    ```

    Les paramètres de requête suivants sont pris en charge :

    * `startDate` : le premier jour calendaire UTC de la plage de dates. Utilisez le format `YYYY-MM-DD`. Si vous omettez `startDate`, la plage commence aujourd'hui à minuit UTC, ou `numDays` jours avant aujourd'hui si vous définissez `numDays`.
    * `numDays` : un entier compris entre `0` et `7`. W\&B récupère les journaux à partir de `startDate` et pour les `numDays` jours suivants. Si vous omettez `numDays` ou le définissez sur `0`, W\&B récupère les journaux d'une seule journée.
    * `limit` : le nombre maximum d'entrées de journal d'audit à renvoyer. Utilisez un entier positif jusqu'à `1,000,000`. La valeur par défaut est `1,000,000`.
    * `cursor` : un curseur opaque provenant du champ `next_cursor` de la réponse précédente. Réutilisez le curseur avec la même plage de dates résolue.

    Le point de terminaison Cloud mutualisé renvoie toujours les champs pertinents pour les journaux d'audit, y compris les données personnelles. Ce comportement n'est pas configurable.

    La réponse est un objet JSON comportant les champs suivants :

    * `audit_logs` : un tableau d'entrées de journal d'audit. Chaque entrée inclut les champs décrits dans [Schéma du journal d'audit](#audit-log-schema).
    * `range_start_time` : le début de la plage de dates résolue, en UTC.
    * `range_end_time` : la fin exclusive de la plage de dates résolue, en UTC.
    * `count` : le nombre d'entrées de journal d'audit renvoyées dans cette réponse.
    * `next_cursor` : un curseur opaque pointant vers la page de résultats suivante. Si ce champ vaut `null`, il n'y a plus de résultats pour la plage de dates sélectionnée.

    Dans les exemples suivants, remplacez :

    * `[BASE64-USERNAME-API-KEY]` : la chaîne encodée en base64 au format `[USERNAME]:[API-KEY]`.
    * `[NEXT-CURSOR]` : la valeur `next_cursor` de la réponse précédente.

    Pour récupérer les journaux d'audit d'une plage, exécutez :

    ```bash theme={null}
    curl -H "Authorization: Basic [BASE64-USERNAME-API-KEY]" \
      "https://api.wandb.ai/audit_logs?startDate=2026-08-01&numDays=2&limit=1000"
    ```

    La réponse ressemble à l'exemple suivant :

    ```json theme={null}
    {
      "audit_logs": [
        {
          "action": "project:read",
          "actor_email": "admin@example.com",
          ...
          "timestamp": "2026-08-01T13:12:14Z"
        }
      ],
      "range_start_time": "2026-08-01T00:00:00Z",
      "range_end_time": "2026-08-04T00:00:00Z",
      "count": 1,
      "next_cursor": "eyJyb3dfa2V5Ijoi..."
    }
    ```

    Pour récupérer la page suivante, répétez la requête avec la même plage de dates résolue. Définissez `cursor` sur la valeur de `next_cursor` renvoyée par la réponse précédente. Continuez jusqu'à ce que `next_cursor` vaille `null`.

    ```bash theme={null}
    curl -H "Authorization: Basic [BASE64-USERNAME-API-KEY]" \
      "https://api.wandb.ai/audit_logs?startDate=2026-08-01&numDays=2&limit=1000&cursor=[NEXT-CURSOR]"
    ```

    <a id="1">1</a> : Sur le [Cloud mutualisé](/fr/platform/hosting/hosting-options/multi_tenant_cloud), les journaux d’audit ne sont pas collectés pour :

    * Les projects Open ou publics.
    * L’action `report:read`.
    * Les actions `User` qui ne sont pas rattachées à une organisation spécifique.
  </Tab>
</Tabs>

<div id="use-basic-authentication">
  ### Utiliser l’authentification de base
</div>

Vous devez authentifier chaque requête adressée à l’API des journaux d’audit. Pour utiliser l’authentification de base avec votre clé API afin d’accéder à l’API des journaux d’audit, définissez l’en-tête `Authorization` de la requête HTTP sur la chaîne `Basic`, suivie d’un espace, puis de la chaîne encodée en base64 au format `[USERNAME]:[API-KEY]`. En d’autres termes, remplacez le nom d’utilisateur et la clé API par vos valeurs, séparées par le caractère `:`, puis encodez le résultat en base64. Par exemple, pour vous authentifier en tant que `demo:p@55w0rd`, définissez l’en-tête sur `Authorization: Basic ZGVtbzpwQDU1dzByZA==`.

<div id="actions">
  ## Actions
</div>

Chaque entrée de journal d’audit enregistre l’une des actions suivantes. Utilisez cette référence pour interpréter le champ `action` dans une entrée de journal. Le tableau suivant décrit les actions que W\&B peut enregistrer, classées par ordre alphabétique.

| Action                        | Définition                                                                                       |
| ----------------------------- | ------------------------------------------------------------------------------------------------ |
| `artifact:create`             | Artifact est créé.                                                                               |
| `artifact:delete`             | Artifact est supprimé.                                                                           |
| `artifact:read`               | Artifact est lu.                                                                                 |
| `project:delete`              | Le projet est supprimé.                                                                          |
| `organization:update_member`  | Le rôle ou la licence du membre dans l’organisation est mis à jour.                              |
| `project:read`                | Le projet est lu.                                                                                |
| `report:read`                 | Le rapport est lu. <sup><a href="#1">1</a></sup>                                                 |
| `run:delete_many`             | Un lot de runs est supprimé.                                                                     |
| `run:delete`                  | Le run est supprimé.                                                                             |
| `run:stop`                    | Le run est arrêté.                                                                               |
| `run:undelete_many`           | Un lot de runs est restauré depuis la corbeille.                                                 |
| `run:update_many`             | Un lot de runs est mis à jour.                                                                   |
| `run:update`                  | Le run est mis à jour.                                                                           |
| `sweep:create_agent`          | L’agent de balayage est créé.                                                                    |
| `team:create_service_account` | Un compte de service est créé pour l’équipe.                                                     |
| `team:create`                 | L’équipe est créée.                                                                              |
| `team:delete`                 | L’équipe est supprimée.                                                                          |
| `team:invite_user`            | L’utilisateur est invité à rejoindre l’équipe.                                                   |
| `team:uninvite`               | L’utilisateur ou le compte de service est retiré de l’équipe.                                    |
| `user:create_api_key`         | Une clé API est créée pour l’utilisateur ou le compte de service. <sup><a href="#1">1</a></sup>  |
| `user:create`                 | L’utilisateur est créé. <sup><a href="#1">1</a></sup>                                            |
| `user:deactivate`             | L’utilisateur est désactivé. <sup><a href="#1">1</a></sup>                                       |
| `user:delete_api_key`         | La clé API de l’utilisateur ou du compte de service est supprimée. <sup><a href="#1">1</a></sup> |
| `user:initiate_login`         | L’utilisateur lance la connexion. <sup><a href="#1">1</a></sup>                                  |
| `user:login`                  | L’utilisateur se connecte. <sup><a href="#1">1</a></sup>                                         |
| `user:logout`                 | L’utilisateur se déconnecte. <sup><a href="#1">1</a></sup>                                       |
| `user:permanently_delete`     | L’utilisateur est supprimé définitivement. <sup><a href="#1">1</a></sup>                         |
| `user:reactivate`             | L’utilisateur est réactivé. <sup><a href="#1">1</a></sup>                                        |
| `user:read`                   | Le profil de l’utilisateur est lu. <sup><a href="#1">1</a></sup>                                 |
| `user:update`                 | L’utilisateur est mis à jour. <sup><a href="#1">1</a></sup>                                      |
