Après avoir stocké la clé AccessKey d'un utilisateur RAM dans Key Management Service (KMS) en tant que secret RAM, installez le plug-in de secret RAM pour permettre à tout SDK Alibaba Cloud de récupérer et de renouveler cette clé AccessKey automatiquement. Votre application ne référence que le nom du secret : le plug-in gère la mise en cache, l'actualisation des identifiants et les nouvelles tentatives en cas d'échec, ce qui vous évite de coder en dur ou de renouveler manuellement les identifiants.
Fonctionnement
Le plug-in récupère la valeur du secret RAM depuis KMS à l'aide du nom du secret et la met en cache dans la mémoire de l'application. Tous les appels sortants du SDK utilisent la clé AccessKey issue de ce cache local.
Lorsque KMS renouvelle le secret, la clé AccessKey mise en cache finit par devenir invalide. Le plug-in détecte cette situation en surveillant les codes d'erreur InvalidAccessKeyId ou InvalidAccessKeyId.NotFound dans la réponse de l'API, récupère immédiatement le nouveau secret, met à jour le cache et relance l'appel ayant échoué selon le comportement de nouvelle tentative configuré.
Comportement d'actualisation des identifiants par langage :
| Langage | Déclencheur d'actualisation | Intervalle d'actualisation planifiée |
|---|---|---|
| Java | Erreur InvalidAccessKeyId ou InvalidAccessKeyId.NotFound |
— |
| Python | Erreur InvalidAccessKeyId ou InvalidAccessKeyId.NotFound |
— |
| Go | Planification uniquement — aucune nouvelle tentative automatique sur InvalidAccessKeyId |
Toutes les 6 heures |
Le plug-in de secret RAM pour Go ne prend pas en charge la nouvelle tentative automatique en cas d'erreur InvalidAccessKeyId . Son actualisation planifiée s'exécute toutes les 6 heures. Consultez Comportement spécifique à Go pour connaître les solutions de contournement.
SDK pris en charge
Le plug-in de secret RAM cible des SDK Alibaba Cloud spécifiques. Si aucun des plug-ins répertoriés ci-dessous ne correspond à votre cas d'utilisation, utilisez le client de secrets ou un SDK Alibaba Cloud standard. Consultez la référence du SDK pour obtenir la liste complète.
Java (Java 8 et versions ultérieures)
Python
| SDK | Module de plug-in | Notes |
|---|---|---|
| Alibaba Cloud SDK for Python (V1.0) | aliyun-openapi-python-sdk-managed-credentials-provider | V1.0 uniquement. Pour la V2.0, utilisez le client de secrets ou le SDK Alibaba Cloud. |
| OSS Python SDK | aliyun-oss-python-sdk-managed-credentials-provider | — |
Go
| SDK | Module de plug-in | Notes |
|---|---|---|
| Alibaba Cloud SDK for Go (V1.0) | alibaba-cloud-sdk-go-managed-credentials-provider | V1.0 uniquement. Pour la V2.0, utilisez le client de secrets ou le SDK Alibaba Cloud. |
| OSS Go SDK | aliyun-oss-go-sdk-managed-credentials-provider | — |
Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :
Un utilisateur RAM dont la clé AccessKey est gérée dans KMS en tant que secret RAM
Un SDK Alibaba Cloud répertorié dans la section SDK pris en charge
Étape 1 : Créer un identifiant d'accès
Choisissez le scénario d'accès correspondant à votre configuration réseau.
Scénario 1 : Passerelle partagée (endpoint public ou VPC)
Utilisez ce scénario si votre application se connecte à KMS via un endpoint public ou un endpoint VPC. Deux types d'identifiants sont pris en charge : un rôle RAM d'instance ECS et une ClientKey.
Rôle RAM d'instance ECS
Un rôle RAM d'instance ECS accorde à l'instance ECS des identifiants temporaires Security Token Service (STS), permettant ainsi à votre application d'appeler les API KMS sans clé AccessKey statique.
-
Connectez-vous à la console RAM et créez un rôle RAM avec une entité de confiance de type Elastic Compute Service.
Trusted Entity Type : Elastic Compute Service
Principal : Elastic Compute Service (ECS)
-
Accordez au rôle RAM l'autorisation d'accéder à KMS. Deux méthodes sont disponibles :
Méthode 1 : Politique basée sur l'identité — Attachez directement une politique système KMS intégrée au rôle. Pour plus d'informations, consultez la page Politiques d'autorisation système pour Key Management Service. Vous pouvez également créer une politique personnalisée.

Méthode 2 : Politique basée sur les ressources — Configurez les autorisations d'accès au niveau de chaque clé ou secret. Pour plus d'informations, consultez les pages Politiques de clés et Politiques de secrets.
Connectez-vous à la console de gestion ECS et attachez le rôle RAM à l'instance ECS.

Pour obtenir des instructions détaillées, consultez la page Rôles RAM d'instance.
ClientKey
Créez une ClientKey en suivant la méthode standard décrite dans la page Créer un point d'accès applicatif.
Lors de la configuration du point d'accès applicatif (AAP) :
Définissez le paramètre Network Type sur Public ou VPC.
Définissez la portée de la règle d'autorisation sur Shared KMS Gateway.
Scénario 2 : Passerelle dédiée (non recommandé)
N'utilisez ce scénario que si votre application accède à KMS via une passerelle privée dédiée. Seule une ClientKey est prise en charge.
Créez une ClientKey en utilisant l'une des méthodes suivantes. Pour plus d'informations sur les ClientKeys et les AAP, consultez la page Présentation des points d'accès applicatifs.
Méthode 1 : Création rapide
La création rapide convient aux tests et au développement. La ClientKey accorde l'accès à toutes les ressources de l'instance KMS sélectionnée.
Connectez-vous à la console Key Management Service. Dans la barre de navigation supérieure, sélectionnez une région. Dans le volet de navigation de gauche, choisissez Application Access > Multi-Cloud Access (formerly AAP).
-
Dans l'onglet Application Access, cliquez sur Create AAP et configurez les paramètres suivants dans le panneau Create AAP.
Paramètre Description Mode Sélectionnez Quick Creation. Scope (KMS Instance) Sélectionnez l'instance KMS à laquelle votre application doit accéder. Application Access Point Name Saisissez un nom pour l'AAP. Authentication Method La valeur par défaut est ClientKey et ne peut pas être modifiée. Default Permission Policy La valeur par défaut est key/*etsecret/*, ce qui accorde l'accès à toutes les clés et tous les secrets de l'instance KMS. Ce paramètre ne peut pas être modifié. -
Cliquez sur OK. Votre navigateur télécharge automatiquement les fichiers ClientKey :
Credential (ClientKeyContent) :
clientKey_****.jsonPassword (ClientKeyPassword) :
clientKey_****_Password.txt
ImportantLe fichier ClientKey et le mot de passe sont associés et ne peuvent être téléchargés qu'au moment de la création. Si vous ne les avez pas enregistrés, créez une nouvelle ClientKey.
Méthode 2 : Création standard
La création standard vous permet de configurer des autorisations d'accès fines. Suivez les instructions de la page Créer un point d'accès applicatif.
Lors de la configuration de l'AAP :
Définissez le paramètre Network Type sur Private.
Définissez la portée de la règle d'autorisation sur l'ID d'instance KMS correspondant.
Étape 2 : Configurer les paramètres d'exécution
Le plug-in lit sa configuration à partir d'un fichier nommé managed_credentials_providers.properties situé dans le répertoire d'exécution de votre application. Créez le fichier avec le contenu indiqué ci-dessous, selon votre type d'identifiant.
Si votre application ne parvient pas à localiser automatiquement le fichier de configuration par défaut, spécifiez le chemin d'accès au fichier dans le code. Consultez les exemples de SDK pour plus de détails.
Rôle RAM d'instance ECS
credentials_type=ecs_ram_role
## The name of the ECS RAM role.
credentials_role_name=#credentials_role_name#
## The region of the associated KMS service.
cache_client_region_id=[{"regionId":"#regionId#"}]
ClientKey (passerelle partagée)
## The type of the access credential.
credentials_type=client_key
## The password for the ClientKey.
## Provide one of the following — read from an environment variable or from a file.
client_key_password_from_env_variable=#your_client_key_private_key_password_environment_variable_name#
client_key_password_from_file_path=#your_client_key_private_key_password_file_path#
## The path to the ClientKey file (clientKey_******.json).
client_key_private_key_path=#your_client_key_private_key_file_path#
## The region of the associated KMS service.
cache_client_region_id=[{"regionId":"#regionId#"}]
ClientKey (passerelle dédiée)
Utilisez le paramètre cache_client_dkms_config_info qui accepte un tableau JSON. Lister plusieurs instances KMS améliore la disponibilité et prend en charge la reprise après sinistre.
Méthode 1 : Lire le mot de passe ClientKey à partir d'une variable d'environnement
cache_client_dkms_config_info=[{"regionId":"<your dkms regionId >","endpoint":"<your dkms endpoint>","passwordFromEnvVariable":"<YOUR_PASSWORD_ENV_VARIABLE>","clientKeyFile":"<your ClientKey file path>","ignoreSslCerts":false,"caFilePath":"<your CA certificate file path>"}]
Exemple :
cache_client_dkms_config_info=[{"regionId":"cn-hangzhou","endpoint":"kst-hzz634e67d126u9p9****.cryptoservice.kms.aliyuncs.com","passwordFromEnvVariable":"passwordFromEnvVariable","clientKeyFile":"C:\RamSecretPlugin\src\main\resources\clientKey_KAAP.json","ignoreSslCerts":false,"caFilePath":"C:\RamSecretPlugin\src\main\resources\PrivateKmsCA_kst-hzz634e67d126u9p9****.pem"}]
Méthode 2 : Lire le mot de passe ClientKey à partir d'un fichier
Le nom de fichier par défaut du mot de passe est clientKey_****_Password.txt. Si vous avez renommé le fichier, mettez à jour le chemin d'accès en conséquence.
cache_client_dkms_config_info=[{"regionId":"<your dkms regionId >","endpoint":"<your dkms endpoint>","passwordFromFilePath":"< your password file path >","clientKeyFile":"<your Client Key file path>","ignoreSslCerts":false,"caFilePath":"<your CA certificate file path>"}]
Exemple :
cache_client_dkms_config_info=[{"regionId":"cn-hangzhou","endpoint":"kst-hzz634e67d126u9p9****.cryptoservice.kms.aliyuncs.com","passwordFromFilePath":"C:\RamSecretPlugin\src\main\resources\clientKeyPassword.txt","clientKeyFile":"C:\RamSecretPlugin\src\main\resources\clientKey_KAAP.json","ignoreSslCerts":false,"caFilePath":"C:\RamSecretPlugin\src\main\resources\PrivateKmsCA_kst-hzz634e67d126u9p9****.pem"}]
Paramètres de configuration
| Paramètre | Description |
|---|---|
regionId |
ID de région de l'instance KMS. Consultez la page Régions et zones. |
endpoint |
Nom de domaine de l'instance KMS au format {instance ID}.kms.aliyuncs.com. Vous le trouverez sur la page Instances sous Instance VPC Endpoint. |
clientKeyFile |
Chemin d'accès absolu ou relatif au fichier JSON ClientKey (clientKey_******.json). |
passwordFromFilePath |
Chemin d'accès au fichier contenant le ClientKeyPassword (clientKey_****_Password.txt par défaut). |
passwordFromEnvVariable |
Nom de la variable d'environnement contenant le ClientKeyPassword. |
ignoreSslCerts |
Indique s'il faut ignorer la validation du certificat SSL. Définissez cette option sur false en production. Lorsque la valeur est true, le paramètre caFilePath n'est pas requis. |
caFilePath |
Chemin d'accès absolu ou relatif au fichier de certificat CA de l'instance KMS. Téléchargez-le depuis la page Instances sous Instance CA Certificate > Download. |
Le fichier ClientKey et son mot de passe ont une correspondance un-à-un. Les deux ne sont disponibles qu'au moment de la création de la ClientKey. Si vous ne les avez pas enregistrés, créez une nouvelle ClientKey dans l'AAP. Consultez la page Créer un point d'accès applicatif.
Étape 3 : Utiliser le plug-in de secret RAM
Tous les exemples suivent le même schéma : créez un client proxy à l'aide du nom du secret, puis appelez les API des services cloud comme d'habitude. Le plug-in gère de manière transparente la récupération et l'actualisation des identifiants.
Java
Alibaba Cloud SDK for Java (V2.0)
Compatibilité Java 9+
Installation
Ajoutez le plug-in à votre fichier pom.xml . Installez la dernière version — consultez le dépôt source pour connaître la version actuelle.
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-tea-openapi-sdk-managed-credentials-provider</artifactId>
<version>[1.3.5,]</version>
</dependency>
Exemple d'utilisation : appel de DescribeInstances pour ECS
Ajoutez la dépendance du SDK ECS :
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>ecs20140526</artifactId>
<version>7.1.0</version>
</dependency>
Ensuite, créez un client proxy et appelez l'API :
import com.aliyun.ecs20140526.Client;
import com.aliyun.ecs20140526.models.DescribeInstancesResponse;
import com.aliyun.kms.secretsmanager.plugin.tea.openapi.ProxyClientCreator;
import com.google.gson.Gson;
public class AliyunTeaOpenApiProviderSample {
public static void main(String[] args) throws Exception {
// The name of the RAM secret you created in KMS.
String secretName = "your-secret-name";
/*
If the application cannot read the default configuration file
(managed_credentials_providers.properties) from the classpath or the
executable JAR file, or if you need a custom file name, uncomment the
following line. The file is resolved in this order:
1. If "your-config-name" is an absolute path, that file is read.
2. If "your-config-name" is a filename only, the classpath is checked
first, then the executable JAR file.
*/
//ConfigLoader.setConfigName("your-config-name");
// Configure the OpenAPI client endpoint.
com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config();
config.endpoint = "your-product-endpoint"; // Replace with the actual service endpoint.
// Create a proxy client backed by the RAM secret plug-in.
Client client = ProxyClientCreator.createClient(config, Client.class, secretName);
// Call the cloud service API.
com.aliyun.ecs20140526.models.DescribeInstancesRequest request =
new com.aliyun.ecs20140526.models.DescribeInstancesRequest();
request.setRegionId("cn-hangzhou");
DescribeInstancesResponse response = client.describeInstances(request);
System.out.println(new Gson().toJson(response.getBody()));
}
}
Alibaba Cloud SDK for Java (V1.0)
Installation
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>[4.3.2,5.0.0]</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core-managed-credentials-provider</artifactId>
<version>[1.3.1,]</version>
</dependency>
Installez la dernière version. Consultez le dépôt source pour connaître la version actuelle.
Exemple d'utilisation : appel de DescribeInstanceStatus pour ECS
Ajoutez la dépendance du SDK ECS :
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-ecs</artifactId>
<version>5.11.20</version>
</dependency>
Ensuite, créez un client proxy et appelez l'API :
import com.aliyuncs.IAcsClient;
import com.aliyuncs.ecs.model.v20140526.DescribeInstanceStatusRequest;
import com.aliyuncs.ecs.model.v20140526.DescribeInstanceStatusResponse;
import com.aliyun.kms.secretsmanager.plugin.sdkcore.ProxyAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
public class AliyunSdkProviderSample {
public static void main(String[] args) {
String secretName = "******";
/*
To use a custom configuration file name, uncomment the following line.
File resolution order:
1. Absolute path — read that file directly.
2. Filename only — check the classpath, then the executable JAR file.
*/
//ConfigLoader.setConfigName("your-config-name");
// Create a proxy ACS client backed by the RAM secret plug-in.
IAcsClient client = null;
try {
client = new ProxyAcsClient("<the regionId of ECS>", secretName);
} catch (ClientException e) {
e.printStackTrace();
}
// Call the ECS API.
DescribeInstanceStatusRequest request = new DescribeInstanceStatusRequest();
try {
DescribeInstanceStatusResponse response = client.getAcsResponse(request);
} catch (ServerException e) {
e.printStackTrace();
} catch (ClientException e) {
e.printStackTrace();
}
// Release plug-in resources.
client.shutdown();
}
}
OSS SDK for Java
Installation
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.5.17</version>
</dependency>
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>[2.1.0,3.10.2]</version>
<exclusions>
<exclusion>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-kms</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-sdk-oss-managed-credentials-provider</artifactId>
<version>[1.3.1,]</version>
</dependency>
Installez la dernière version. Consultez le dépôt source pour connaître la version actuelle.
Exemple d'utilisation : appel de listBuckets pour OSS
import com.aliyun.kms.secretsmanager.plugin.oss.ProxyOSSClientBuilder;
import com.aliyun.oss.OSS;
import com.aliyun.oss.model.Bucket;
import java.util.List;
public class OssProviderSample {
public static void main(String[] args) throws Exception {
String secretName = "******";
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
/*
To use a custom configuration file name, uncomment the following line.
File resolution order:
1. Absolute path — read that file directly.
2. Filename only — check the classpath, then the executable JAR file.
*/
//ConfigLoader.setConfigName("your-config-name");
// Create a proxy OSS client backed by the RAM secret plug-in.
OSS ossClient = new ProxyOSSClientBuilder().build(endpoint, secretName);
// Call the OSS API.
List<Bucket> buckets = ossClient.listBuckets();
for (Bucket bucket : buckets) {
if (bucket != null) {
// Your business logic goes here.
}
}
// Release plug-in resources.
ossClient.shutdown();
}
}
Python
Alibaba Cloud SDK for Python (V1.0)
Installation
pip install aliyun-openapi-python-sdk-managed-credentials-provider
La version 0.1.0 ou ultérieure est requise. Consultez le dépôt source pour connaître la version actuelle.
Exemple d'utilisation
from aliyun_sdk_secretsmanager_sdk_core_plugin.proxy_acs_client import ProxyAcsClient
region = "cn-hangzhou"
secretName = "******"
# Create a proxy ACS client backed by the RAM secret plug-in.
client = ProxyAcsClient(region_id=region, secret_name=secretName)
# Call Alibaba Cloud services using the client — no other code changes required.
...
# Release plug-in resources.
client.shutdown()
OSS Python SDK
Installation
pip install aliyun-oss-python-sdk-managed-credentials-provider
La version 0.1.0 ou ultérieure est requise. Consultez le dépôt source pour connaître la version actuelle.
Exemple d'utilisation
from aliyun_sdk_secretsmanager_oss_plugin.proxy_bucket import ProxyBucket
from itertools import islice
endpoint = "******"
secret_name = "******"
bucket_name = "******"
bucket = ProxyBucket(secret_name=secret_name, endpoint=endpoint, bucket_name=bucket_name)
objects = bucket.list_objects()
for b in islice(objects.object_list, 10):
print(b.key)
bucket.shutdown()
Go
Comportement spécifique à Go
Le plug-in de secret RAM pour Go ne relance pas automatiquement les opérations lorsqu'il détecte une erreur InvalidAccessKeyId . L'actualisation des identifiants repose sur un mécanisme planifié qui s'exécute toutes les 6 heures.
Si vous renouvelez les secrets manuellement, définissez la fenêtre de rotation sur au moins 12 heures afin d'éviter les interruptions de tâches dues à l'expiration des identifiants. Pour des fenêtres de rotation plus courtes, utilisez l'une des solutions de contournement présentées dans la FAQ.
Alibaba Cloud SDK for Go (V1.0)
Installation
Ce plug-in nécessite alibaba-cloud-sdk-go dans une version antérieure à la v1.63.0. Vérifiez la version dans le fichier go.mod du plug-in avant l'installation.
Installez la dernière version depuis le dépôt source.
Méthode 1 — Ajoutez au fichier go.mod :
require (
github.com/aliyun/aliyun-sdk-managed-credentials-providers-go/aliyun-sdk-managed-credentials-providers/alibaba-cloud-sdk-go-managed-credentials-provider vX.X.X
)
Méthode 2 — Utilisez go get :
go get -u github.com/aliyun/aliyun-sdk-managed-credentials-providers-go/aliyun-sdk-managed-credentials-providers/alibaba-cloud-sdk-go-managed-credentials-provider
Exemple d'utilisation : appel de DescribeInstances pour ECS
package sample
import (
"fmt"
"github.com/aliyun/alibaba-cloud-sdk-go/services/ecs"
sdkcoreprovider "github.com/aliyun/aliyun-sdk-managed-credentials-providers-go/aliyun-sdk-managed-credentials-providers/alibaba-cloud-sdk-go-managed-credentials-provider/sdk"
)
func main() {
secretName := "********"
regionId := "cn-hangzhou"
// Create a proxy client backed by the RAM secret plug-in.
client, err := sdkcoreprovider.GetClient(&ecs.Client{}, regionId, secretName)
if err != nil {
fmt.Println(err)
return
}
ecsClient := client.(*ecs.Client)
request := ecs.CreateDescribeInstancesRequest()
instancesResponse, err := ecsClient.DescribeInstances(request)
if err != nil {
fmt.Println(err)
return
}
for _, instance := range instancesResponse.Instances.Instance {
// Your business logic goes here.
}
}
OSS Go SDK
Installation
Ce plug-in nécessite alibaba-cloud-sdk-go dans une version antérieure à la v1.63.0. Vérifiez la version dans le fichier go.mod du plug-in avant l'installation.
Installez la dernière version depuis le dépôt source.
Méthode 1 — Ajoutez au fichier go.mod :
require (
github.com/aliyun/aliyun-sdk-managed-credentials-providers-go/aliyun-sdk-managed-credentials-providers/aliyun-oss-go-sdk-managed-credentials-provider vX.X.X
)
Méthode 2 — Utilisez go get :
go get -u github.com/aliyun/aliyun-sdk-managed-credentials-providers-go/aliyun-sdk-managed-credentials-providers/aliyun-oss-go-sdk-managed-credentials-provider
Exemple d'utilisation
package sample
import (
"fmt"
ossprovider "aliyun-oss-go-sdk-managed-credentials-provider/sdk"
)
func main() {
secretName := "********"
endpoint := "https://oss-cn-hangzhou.aliyuncs.com"
// Create a proxy OSS client backed by the RAM secret plug-in.
client, err := ossprovider.New(endpoint, secretName)
if err != nil {
fmt.Println(err)
return
}
result, err := client.ListBuckets()
if err != nil {
fmt.Println(err)
return
}
for _, bucket := range result.Buckets {
// Your business logic goes here.
}
// Release plug-in resources.
client.Shutdown()
}
FAQ
Le plug-in de secret RAM pour Go renvoie InvalidAccessKeyId après l'expiration d'un identifiant. Que faire ?
Le plug-in Go ne relance pas automatiquement les opérations en cas d'erreur InvalidAccessKeyId ; un secret faisant l'objet d'une rotation manuelle peut donc expirer avant que l'actualisation planifiée toutes les 6 heures n'intervienne. Utilisez l'une des approches suivantes :
Attendre l'actualisation automatique — Pour les secrets faisant l'objet d'une rotation automatique, le mécanisme d'actualisation planifiée du plug-in (qui s'exécute toutes les 6 heures) récupère automatiquement le nouveau secret.
Actualisation à la demande — Interceptez l'exception et appelez
sdk.RefreshSecretInfo(secretName)pour récupérer immédiatement le dernier secret.Actualisation planifiée — Configurez une tâche périodique qui appelle
sdk.RefreshSecretInfo(secretName)à une fréquence correspondant à votre fenêtre de rotation, afin que le nouveau secret soit toujours récupéré avant l'expiration de l'actuel.Ajuster la fenêtre de rotation — Pour les secrets faisant l'objet d'une rotation manuelle, définissez la fenêtre de rotation sur au moins 12 heures. Cela laisse suffisamment de temps à l'actualisation planifiée toutes les 6 heures pour mettre à jour le cache avant l'expiration de l'ancien identifiant.