> ## Documentation Index
> Fetch the complete documentation index at: https://docs.reelevant.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Rotation des secrets de source

> Remplacez les mots de passe, clés et jetons d'une source de Datasource sans la reconfigurer

## Présentation

Les secrets d'une source (mots de passe, clés privées, clés d'accès, en-têtes d'authentification) peuvent être remplacés en une seule requête, sans reconfigurer la source ni publier de nouvelle version. Utilisez-la lorsqu'un identifiant expire, fuite ou est renouvelé par votre fournisseur.

La requête ne modifie que les secrets envoyés. Le reste de la configuration de la source est conservé, et les secrets ne sont jamais renvoyés dans les réponses API.

## Secrets par type de source

Seuls les champs ci-dessous sont acceptés. Les champs imbriqués utilisent un chemin séparé par des points.

| Type de source | Champs secrets |
| - | - |
| [URL](/fr/advanced-guide/datahub/source-types/url) | `options.headers.authorization`, `options.headers.proxy-authorization`, `options.headers.cookie`, `options.headers.x-api-key`, `options.headers.api-key`, `options.headers.x-auth-token`, `pgpPrivateKey`, `pgpPassphrase` |
| [File Upload](/fr/advanced-guide/datahub/source-types/file) | `pgpPrivateKey`, `pgpPassphrase` (leur rotation ne lève pas la [limitation PGP de File Upload](/fr/advanced-guide/datahub/source-types/file)) |
| [FTP](/fr/advanced-guide/datahub/source-types/ftp-sftp) | `password`, `pgpPrivateKey`, `pgpPassphrase` |
| [SFTP](/fr/advanced-guide/datahub/source-types/ftp-sftp) | `password`, `privateKey`, `passphrase`, `pgpPrivateKey`, `pgpPassphrase` |
| [BigQuery](/fr/advanced-guide/datahub/source-types/bigquery) | `privateKey` |
| [Snowflake](/fr/advanced-guide/datahub/source-types/snowflake) | `password`, `privateKey` |
| [Google Cloud Storage](/fr/advanced-guide/datahub/source-types/gcs) | `clientEmail`, `privateKey`, `pgpPrivateKey`, `pgpPassphrase` |
| [Amazon S3](/fr/advanced-guide/datahub/source-types/s3) | `accessKey`, `secretKey`, `assumeRole.externalId`, `pgpPrivateKey`, `pgpPassphrase` |
| [Kafka](/fr/advanced-guide/datahub/source-types/kafka) | `password`, `registry.password` |
| [Datasource Reference](/fr/advanced-guide/datahub/source-types/datasource-reference) | Aucun |

<Info>
  Les noms d'en-têtes URL sont comparés sans tenir compte de la casse : `options.headers.authorization` remplace un en-tête `Authorization` existant au lieu d'en ajouter un second. Les en-têtes absents de la liste ci-dessus ne peuvent pas être modifiés avec cette requête.
</Info>

## Effectuer la rotation

Avant de commencer, définissez ces valeurs :

| Valeur | Description |
| - | - |
| `DATASOURCE_ID` | L'identifiant de la Datasource. |
| `SOURCE_INDEX` | La position de la source dans la Datasource, à partir de `0`. Une Datasource avec une seule source utilise `0`. |
| `ACCESS_TOKEN` | Un access token OAuth 2.0 autorisé à modifier la Datasource. Consultez [Authentification](/fr/developer-docs/api-reference/authentication). |

L'objet `secrets` associe chaque champ secret à sa nouvelle valeur. Cet exemple renouvelle les identifiants d'une source SFTP :

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
DATASOURCE_ID="replace-with-datasource-id"
SOURCE_INDEX=0
ACCESS_TOKEN="replace-with-access-token"

curl --request PUT "https://api.reelevant.com/v2/datasources/${DATASOURCE_ID}/sources/${SOURCE_INDEX}/secrets" \
  --header "Authorization: Bearer ${ACCESS_TOKEN}" \
  --header "Content-Type: application/json" \
  --data '{ "secrets": { "password": "replace-with-new-password", "passphrase": null } }'
```

* Un champ avec une valeur remplace le secret enregistré. Un champ à `null` le supprime. Un champ omis conserve sa valeur actuelle.
* Les valeurs sur plusieurs lignes (clés privées au format PEM ou armored) doivent conserver leurs retours à la ligne, écrits `\n` dans la chaîne.
* Renouvelez les secrets associés dans la même requête, par exemple `accessKey` et `secretKey` sur S3, ou `pgpPrivateKey` et `pgpPassphrase`.
* Les nouveaux secrets s'appliquent à la version live de la Datasource, à son brouillon et à toute version en attente de vérification. Les anciens secrets ne peuvent pas revenir lors d'une publication ultérieure.

Un statut `204` confirme la modification. Un champ qui n'est pas un secret de la source, un objet `secrets` vide ou un `SOURCE_INDEX` inexistant renvoie `400`, et rien n'est enregistré.

<Info>
  Lorsque le résultat contient une `pgpPrivateKey`, Reelevant vérifie que la clé peut être lue et déverrouillée avec la phrase de passe avant d'enregistrer quoi que ce soit. Une clé invalide ou une mauvaise phrase de passe renvoie `400`. Consultez [Déchiffrement PGP](/fr/advanced-guide/datahub/pgp-decryption#rotation-de-la-clé-privée). Les autres secrets sont enregistrés tels quels et vérifiés par le prochain import.
</Info>

## Après la rotation

La requête ne lance pas d'import. Une Datasource planifiée utilise les nouveaux secrets dès son prochain import. Pour les vérifier immédiatement, déclenchez une nouvelle exécution de la Datasource et consultez ses [logs](/fr/advanced-guide/datahub/logs). Pour une Datasource Kafka continue (mode ingester), il n'y a pas de prochain import : consultez ses logs après la rotation.
