Tous les produits
Search
Centre de documentation

Key Management Service:Plug-in de secret RAM

Dernière mise à jour :Sep 21, 2026

Après avoir hébergé la clé AccessKey d'un utilisateur RAM dans KMS, vous pouvez installer le plug-in de secret RAM. Lorsque vous utilisez les SDK Alibaba Cloud, référencez le nom du secret RAM pour obtenir la clé AccessKey nécessaire à l'authentification des API, sans avoir besoin de connaître les détails de la clé ni si elle a été renouvelée. Cette rubrique décrit le principe de fonctionnement, l'installation et l'utilisation du plug-in de secret RAM.

Principe de fonctionnement

Le plug-in de secret RAM récupère la valeur du secret RAM depuis KMS en fonction du nom du secret et met cette valeur en cache dans la mémoire de l'application. Lorsque l'application utilise un SDK Alibaba Cloud, le plug-in utilise la clé AccessKey mise en cache pour envoyer des requêtes aux services cloud.

Lorsque la clé AccessKey mise en cache devient invalide en raison d'une rotation du secret, le plug-in de secret RAM récupère immédiatement le nouveau secret depuis KMS et actualise le cache local. Ensuite, selon le comportement de nouvelle tentative que vous avez configuré, le plug-in réessaie la requête d'API du service cloud en utilisant le dernier secret RAM. Par défaut, le plug-in de secret RAM considère que la clé AccessKey est invalide sur la base des codes d'erreur InvalidAccessKeyId et InvalidAccessKeyId.NotFound présents dans la réponse de l'API du service cloud.

SDK Alibaba Cloud pris en charge

KMS fournit des plug-ins de secret RAM pour les SDK Alibaba Cloud répertoriés dans les tableaux suivants.

Important

Le plug-in de secret RAM doit être développé séparément pour chaque SDK Alibaba Cloud. Si le plug-in de secret RAM ne répond pas à vos besoins, utilisez le Client Secrets Manager ou le SDK Alibaba Cloud. Pour plus d'informations sur chaque SDK, consultez les Références SDK. Vous pouvez également contacter le support technique pour obtenir de l'aide.

SDK Java (Java 8 et versions ultérieures uniquement)

SDK Alibaba Cloud

Module du plug-in de secret RAM

Alibaba Cloud SDK for Java (V2.0)

aliyun-java-tea-openapi-sdk-managed-credentials-provider

Alibaba Cloud SDK for Java (V1.0)

aliyun-java-sdk-managed-credentials-provider

OSS Java SDK V1

aliyun-oss-java-sdk-managed-credentials-provider

Message Queue for Apache RocketMQ TCP Protocol Java SDK

ons-client-managed-credentials-provider

SDK Python

SDK Alibaba Cloud

Module du plug-in de secret RAM

Description

Alibaba Cloud SDK for Python (V1.0)

aliyun-openapi-python-sdk-managed-credentials-provider

Seule la version V1.0 est prise en charge. La version V2.0 n'est pas prise en charge. Pour la version V2.0, utilisez le Client Secrets Manager ou le SDK Alibaba Cloud.

OSS Python SDK

aliyun-oss-python-sdk-managed-credentials-provider

Aucune.

SDK Go

Important

Le plug-in de secret Go ne relance pas automatiquement les requêtes en cas d'erreur InvalidAccessKeyId. Les secrets soumis à une rotation automatique peuvent obtenir de nouveaux secrets via le mécanisme d'actualisation planifié (toutes les 6 heures). Si vous devez effectuer une rotation manuelle des secrets, assurez-vous que la fenêtre de rotation est d'au moins 12 heures afin d'éviter toute interruption de tâche due à l'expiration des identifiants. Pour plus d'informations, consultez la section Comment résoudre l'expiration des identifiants lorsque le plug-in RAM Go signale l'erreur InvalidAccessKeyId ?.

SDK Alibaba Cloud

Module du plug-in de secret RAM

Description

Alibaba Cloud SDK for Go (V1.0)

alibaba-cloud-sdk-go-managed-credentials-provider

Seule la version V1.0 est prise en charge. La version V2.0 n'est pas prise en charge. Pour la version V2.0, utilisez le Client Secrets Manager ou le SDK Alibaba Cloud.

OSS Go SDK

aliyun-oss-go-sdk-managed-credentials-provider

Aucune.

Étape 1 : Créer des identifiants d'accès

Scénario 1 : Obtenir les valeurs des identifiants via une passerelle partagée

Le type de réseau est Internet ou VPC. Les identifiants d'accès prennent en charge les rôles RAM d'instance ECS et les ClientKeys.

Rôle RAM d'instance ECS

Un rôle RAM d'instance ECS vous permet d'obtenir un identifiant d'accès temporaire (jeton STS) depuis une instance ECS pour appeler les API KMS, sans avoir besoin de configurer une paire de clés AccessKey.

Pour plus d'informations, consultez la section Rôles RAM d'instance.

  1. Connectez-vous à la console RAM et créez un rôle RAM pour un service Alibaba Cloud de confiance.

    • Type d'entité de confiance : sélectionnez Elastic Compute Service.

    • Entité de confiance : sélectionnez Elastic Compute Service (ECS).

  2. Accordez au rôle RAM les autorisations nécessaires pour accéder à KMS.

    • Méthode 1 : Configurer une politique basée sur l'identité

      Dans la colonne Actions du rôle RAM, cliquez sur Grant Permission pour attacher une stratégie d'autorisation système intégrée pour KMS au rôle RAM. Pour plus d'informations sur les stratégies d'autorisation système pour KMS, consultez la section Stratégies système pour KMS.

      Remarque

      Vous pouvez également créer des stratégies d'autorisation personnalisées. Pour plus d'informations, consultez la section Créer une stratégie personnalisée.

    • Méthode 2 : Configurer une politique basée sur les ressources

      KMS prend en charge les politiques basées sur les ressources qui accordent des autorisations d'accès pour des clés et des secrets individuels. Vous pouvez utiliser ces politiques pour contrôler quels comptes Alibaba Cloud, utilisateurs RAM et rôles RAM peuvent gérer ou utiliser les clés et les secrets KMS. Pour plus d'informations, consultez les sections Politiques de clé et Politiques de secret.

  3. Connectez-vous à la console ECS et associez le rôle RAM à une instance ECS.

ClientKey

  1. 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).

  2. (Facultatif) Créez une règle réseau.

    Remarque

    La configuration d'une règle réseau pour restreindre l'accès par adresse IP source est facultative. Toutefois, nous vous recommandons d'en configurer une pour une meilleure sécurité.

    1. Cliquez sur l'onglet Network Access Rules puis cliquez sur Create Network Access Rule.

    2. Dans le panneau Create Network Access Rule , définissez le paramètre Network Type sur Public, saisissez les Allowed Source IP Addresses , puis cliquez sur OK.

  3. Créez une stratégie d'autorisation.

    1. Cliquez sur l'onglet Policies puis cliquez sur Create Policy.

    2. Dans le panneau Create Policy , configurez les paramètres de la passerelle partagée comme décrit ci-dessous, puis cliquez sur OK.

      1. Scope : Shared KMS Gateway

      2. Accessible Resources : Sélectionnez les secrets auxquels vous souhaitez accéder.

      3. (Facultatif) Network Access Rules : Sélectionnez la règle réseau créée à l'étape précédente.

  4. Créez un point d'accès applicatif (AAP).

    1. Cliquez sur l'onglet Application Access puis cliquez sur Create AAP.

    2. Dans le panneau Create AAP , définissez le paramètre Mode sur Standard Creation , puis configurez les paramètres comme décrit ci-dessous.

      Paramètre

      Description

      Authentication Method

      Sélectionnez ClientKey.

      Encryption Password

      Saisissez une chaîne de 8 à 64 caractères contenant des chiffres, des lettres et des caractères spéciaux : ~!@#$%^&*?_-.

      Validity Period

      Important

      Nous vous recommandons de définir la période de validité sur un an afin de réduire le risque de fuite de ClientKey. Veillez à faire tourner le ClientKey avant son expiration pour éviter toute interruption de service. Pour plus d'informations, consultez la section Rotation d'un ClientKey.

      Policies

      Sélectionnez la stratégie d'autorisation que vous avez créée à l'étape précédente.

    3. Cliquez sur OK. Le navigateur télécharge automatiquement le ClientKey. Le ClientKey comprend les fichiers suivants :

      • Credential (ClientKeyContent) : Le nom de fichier par défaut est clientKey_****.json.

      • Mot de passe de l'identifiant (ClientKeyPassword) : Le nom de fichier par défaut est clientKey_****_Password.txt.

Scénario 2 : Obtenir les valeurs des identifiants via une passerelle dédiée (non recommandé)

Le type de réseau est le réseau privé KMS. Les identifiants d'accès ne prennent en charge que les ClientKeys.

Vous pouvez créer un ClientKey en utilisant soit le mode de création rapide, soit le mode de création standard. Pour plus d'informations sur les ClientKeys, consultez les sections Points d'accès applicatifs et Créer un point d'accès applicatif.

  • Méthode 1 : Création rapide

    Cette méthode est pratique et efficace, ce qui la rend adaptée aux tests rapides et au développement. L'identifiant d'accès créé de cette manière dispose d'un accès complet à toutes les ressources de l'instance KMS.

    1. 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 > Access Control (Formerly Access Point) .

    2. Sur l'onglet Application Access , cliquez sur Create AAP. Dans le panneau Create AAP , configurez les paramètres.

      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 le point d'accès applicatif.

      Authentication Method

      Ce paramètre est défini sur ClientKey et ne peut pas être modifié.

      Encryption Algorithm

      Sélectionnez l'algorithme de chiffrement utilisé pour chiffrer le ClientKey. Valeurs valides : TripleDES-CBC et RC2-CBC (par défaut).

      Remarque

      RC2-CBC fonctionne dans la plupart des environnements et est recommandé. Si votre environnement impose des exigences algorithmiques plus strictes et ne prend pas en charge RC2-CBC, sélectionnez TripleDES-CBC.

      Default Permission Policy

      La valeur est key/ secret/ et ne peut pas être modifiée. Cela signifie que l'application peut accéder à toutes les clés et à tous les secrets de l'instance KMS spécifiée.

    3. Cliquez sur OK. Le navigateur télécharge automatiquement le ClientKey. Le ClientKey comprend les fichiers suivants :

      • Credential (ClientKeyContent) : Le nom de fichier par défaut est clientKey_****.json.

      • Mot de passe de l'identifiant (ClientKeyPassword) : Le nom de fichier par défaut est clientKey_****_Password.txt.

  • Méthode 2 : Création standard

    Si vous devez configurer des autorisations d'accès granulaires aux ressources, nous vous recommandons d'utiliser la méthode de création standard.

    1. Suivez les instructions de création standard décrites dans la section Créer un point d'accès applicatif pour créer un ClientKey permettant d'accéder à la passerelle dédiée. Les paramètres clés sont décrits ci-dessous :

      1. Lors de la configuration des règles réseau, sélectionnez Private pour le type de réseau.

      2. Lorsque vous configurez la portée de la règle d'autorisation, sélectionnez l'ID d'instance KMS correspondant.

    2. Après la création, votre navigateur télécharge automatiquement le ClientKey, qui comprend :

      • Credential (ClientKeyContent) : Le fichier est nommé clientKey_****.json par défaut.

      • Mot de passe de l'identifiant (ClientKeyPassword) : Le fichier est nommé clientKey_****_Password.txt par défaut.

Étape 2 : Configurer les paramètres d'exécution du plug-in de secrets RAM via un fichier de configuration

Le plug-in de secrets RAM prend uniquement en charge les fichiers de configuration pour définir ses paramètres d'exécution. Vous devez créer un fichier de configuration (managed_credentials_providers.properties) dans le répertoire d'exécution de l'application et y ajouter le contenu approprié selon la méthode d'authentification choisie.

Remarque

Si votre application ne parvient pas à lire automatiquement le fichier managed_credentials_providers.properties, reportez-vous aux exemples de code pour définir le chemin d'accès au fichier de configuration directement dans le code.

Rôle RAM d'instance ECS

Le code suivant illustre le contenu du fichier de configuration.

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)

Obtenez la valeur des identifiants via l'endpoint de la passerelle partagée KMS. Le code suivant illustre le contenu du fichier de configuration.

## The type of the access credential.
credentials_type=client_key

## The password for reading the ClientKey: supports reading from an environment variable or a file.
## The credential password: the credential password (ClientKeyPassword) saved when creating the Client Key in the AAP.
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 Client Key file.
# The Client Key file: the application identity credential content (ClientKeyContent) downloaded when creating the Client Key in the AAP.
# The default filename after download is 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)

Obtenez la valeur des identifiants via l'endpoint de la passerelle dédiée KMS. Le code suivant illustre le contenu du fichier de configuration.

  • Méthode 1 : Configurez le chemin d'accès au fichier de mot de passe de l'identifiant ClientKey (clientKey_****_Password.txt) pour que le SDK puisse le lire.

    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>"}]
  • Méthode 2 : Configurez directement le contenu du mot de passe de l'identifiant ClientKey (ClientKeyPassword)

    Avertissement

    Commencez par stocker le mot de passe de l'identifiant (ClientKeyPassword), c'est-à-dire le contenu du fichier clientKey_****_Password.txt, dans une variable d'environnement personnalisée (par exemple clientKeyPassword_content).

    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>"}]

Étape 3 : Utiliser le plug-in de secrets RAM dans les SDK Alibaba Cloud

Java

Alibaba Cloud SDK for Java (V2.0)

Compatibilité avec Java 9+

Étant donné que ce plug-in s'appuie sur CGLIB pour la création dynamique de proxys de classes, vous pouvez rencontrer l'erreur java.lang.reflect.InaccessibleObjectException lors de l'exécution du programme sur Java 9 ou une version ultérieure.

Ajoutez les paramètres JVM suivants au démarrage de l'application pour autoriser CGLIB à accéder aux API restreintes :

--add-opens java.base/java.lang=ALL-UNNAMED

Par exemple, lors de l'exécution du programme depuis la ligne de commande :

java --add-opens java.base/java.lang=ALL-UNNAMED -jar your-application.jar

Si vous exécutez le programme dans un IDE (tel qu'IntelliJ IDEA ou Eclipse), ajoutez ce paramètre aux options VM.

  1. Ajoutez le plug-in de secrets RAM à votre projet via Maven.

    <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>aliyun-java-tea-openapi-sdk-managed-credentials-provider</artifactId>
        <version>[1.3.5,]</version>
    </dependency>
    Remarque

    Nous vous recommandons d'installer la dernière version du plug-in. Pour plus d'informations, consultez le code source.

  2. Obtenez le client Alibaba Cloud SDK for Java et appelez les services cloud. L'exemple suivant utilise l'API DescribeInstances d'ECS.

    1. Ajoutez la dépendance ecs20140526 pour le serveur cloud ECS.

      <dependency>
          <groupId>com.aliyun</groupId>
          <artifactId>ecs20140526</artifactId>
          <version>7.1.0</version>
      </dependency>
    2. Appelez l'opération d'API DescribeInstances.

      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 {
              // Step 1: Specify the name of the hosted secret (the secret name created in KMS).
              String secretName = "your-secret-name";
      
              /*
                If the application cannot read the default configuration file (managed_credentials_providers.properties)
                from the classpath and executable JAR file,
                or if you need to customize the configuration file name, you can call the following code to set a custom configuration file
                and read it in the following order:
                1. "your-config-name" absolute path + filename, which reads the file under the absolute path.
                2. "your-config-name" filename only, which first reads the configuration file under the classpath, then the configuration file in the executable JAR file.
              */
              //ConfigLoader.setConfigName("your-config-name");
      
              // Step 2: Configure the OpenAPI client.
              com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config();
              config.endpoint = "your-product-endpoint"; // Replace with the actual cloud service endpoint.
      
              // Step 3: Create a client instance.
              Client client = ProxyClientCreator.createClient(config, Client.class, secretName);
      
              // Step 4: Call the cloud service API.
              com.aliyun.ecs20140526.models.DescribeInstancesRequest request = new com.aliyun.ecs20140526.models.DescribeInstancesRequest();
              request.setRegionId("cn-hangzhou"); // Set the region ID.
              DescribeInstancesResponse response = client.describeInstances(request);
      
              // Step 5: Print the result.
              System.out.println(new Gson().toJson(response.getBody()));
          }
      }

Alibaba Cloud SDK for Java (V1.0)

  1. Ajoutez le plug-in de secrets RAM à votre projet via Maven.

    <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>
    Remarque

    Nous vous recommandons d'installer la dernière version du plug-in. Pour plus d'informations, consultez le code source.

  2. Obtenez le client Alibaba Cloud SDK for Java et appelez les services cloud.

    L'exemple suivant utilise l'API DescribeInstanceStatus d'ECS.

    1. Ajoutez la dépendance aliyun-java-sdk-ecs pour le serveur cloud ECS.

      <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>aliyun-java-sdk-ecs</artifactId>
        <version>5.11.20</version>
      </dependency>
    2. Appelez l'opération d'API DescribeInstanceStatus.

      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="******";
              /*
                If the application cannot read the default configuration file (managed_credentials_providers.properties)
                from the classpath and executable JAR file,
                or if you need to customize the configuration file name, you can call the following code to set a custom configuration file
                and read it in the following order:
                1. "your-config-name" absolute path + filename, which reads the file under the absolute path.
                2. "your-config-name" filename only, which first reads the configuration file under the classpath, then the configuration file in the executable JAR file.
              */
              //ConfigLoader.setConfigName("your-config-name");
              
              // 1. Obtain the ACSClient by using aliyun-java-sdk-managed-credentials-provider.
              IAcsClient client = null;
              try {
                  client = new ProxyAcsClient("<the regionId of ECS>", secretName);
              } catch (ClientException e) {
                   e.printStackTrace();
               }
              // 2. Call the ECS OpenAPI to implement business functions.
              DescribeInstanceStatusRequest request = new DescribeInstanceStatusRequest();
              DescribeInstanceStatusResponse response;
              try {
                   response = client.getAcsResponse(request);
              } catch (ServerException e) {
                   e.printStackTrace();
               } catch (ClientException e) {
                   e.printStackTrace();
               }
              // 3. Release the plug-in resources by closing the client.
              client.shutdown();
          }
      }

Utilisation dans le SDK OSS

  1. Ajoutez le plug-in de secrets RAM à votre projet via Maven.

    <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>
    Remarque

    Nous vous recommandons d'installer la dernière version du plug-in. Pour plus d'informations, consultez le code source.

  2. Obtenez le client OSS Java SDK et appelez les services cloud. L'exemple suivant utilise la méthode listBuckets d'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";
    
            /*
              If the application cannot read the default configuration file (managed_credentials_providers.properties)
              from the classpath and executable JAR file,
              or if you need to customize the configuration file name, you can call the following code to set a custom configuration file
              and read it in the following order:
              1. "your-config-name" absolute path + filename, which reads the file under the absolute path.
              2. "your-config-name" filename only, which first reads the configuration file under the classpath, then the configuration file in the executable JAR file.
            */
            //ConfigLoader.setConfigName("your-config-name");
    
            // Obtain the OSS client.
            OSS ossClient = new ProxyOSSClientBuilder().build(endpoint, secretName);
    
            // The following is the business code: call Alibaba Cloud OSS services to implement business functions.
            List<Bucket> buckets = ossClient.listBuckets();
            for (Bucket bucket : buckets) {
                if (bucket != null) {
                    // ...
                }
            }
    
            // Release the plug-in resources by closing the client.
            ossClient.shutdown();
        }
    
    }

Python

Alibaba Cloud SDK for Python (V1.0)

  1. Exécutez la commande pip pour ajouter le plug-in de secrets RAM à votre projet.

    pip install aliyun-openapi-python-sdk-managed-credentials-provider
    Remarque

    Assurez-vous que la version du plug-in est 0.1.0 ou ultérieure. Pour plus d'informations, consultez le code source.

  2. Obtenez le client Alibaba Cloud SDK for Python et appelez les services cloud.

    from aliyun_sdk_secretsmanager_sdk_core_plugin.proxy_acs_client import ProxyAcsClient
    
       region="cn-hangzhou"
       secretName="******"
    
       # 1. Obtain the ACSClient.
       client = ProxyAcsClient(region_id=region, secret_name=secretName )
    
       # 2. Business code: use the client to call Alibaba Cloud services without code changes.
       ...
    
       # 3. Release the plug-in resources by closing the client.
       client.shutdown()

OSS Python SDK

  1. Exécutez la commande pip pour ajouter le plug-in de secrets RAM à votre projet.

    pip install aliyun-oss-python-sdk-managed-credentials-provider
    Remarque

    Assurez-vous que la version du plug-in est 0.1.0 ou ultérieure. Pour plus d'informations, consultez le code source.

  2. Obtenez le client Alibaba Cloud OSS Python SDK et appelez les services cloud.

    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

Alibaba Cloud SDK for Go (V1.0)

  1. Installez le plug-in de secrets RAM pour Alibaba Cloud SDK for Go.

    Important
    • Nous vous recommandons d'installer la dernière version du plug-in. Pour plus d'informations, consultez le code source.

    • Pour Go, la version de alibaba-cloud-sdk-go dont dépend le plug-in de secrets RAM doit être antérieure à v1.63.0. Vérifiez et confirmez la version dans le fichier go.mod du plug-in afin d'éviter d'éventuels problèmes de compatibilité.

    • Méthode 1 : Utilisez go.mod pour gérer vos dépendances.

      Ajoutez le contenu suivant au fichier go.mod pour installer la dépendance.

      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 la commande go get pour obtenir le package de code distant.

      go get -u github.com/aliyun/aliyun-sdk-mxanaged-credentials-providers-go/aliyun-sdk-managed-credentials-providers/alibaba-cloud-sdk-go-managed-credentials-provider
  2. Obtenez le client Alibaba Cloud SDK for Go et appelez les services cloud.

    L'exemple suivant utilise l'API DescribeInstances d'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"
    
        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 {
            // do something with instance
        }
    }

OSS Go SDK

  1. Installez le plug-in de secrets RAM pour OSS Go SDK.

    Important
    • Nous vous recommandons d'installer la dernière version du plug-in. Pour plus d'informations, consultez le code source.

    • Pour Go, la version de alibaba-cloud-sdk-go dont dépend le plug-in de secrets RAM doit être antérieure à v1.63.0. Vérifiez et confirmez la version dans le fichier go.mod du plug-in afin d'éviter d'éventuels problèmes de compatibilité.

    • Méthode 1 : Utilisez go.mod pour gérer vos dépendances.

      Ajoutez le contenu suivant au fichier go.mod pour installer la dépendance.

      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 la commande go get pour obtenir le package de code distant.

      go get -u github.com/aliyun/aliyun-sdk-managed-credentials-providers-go/aliyun-sdk-managed-credentials-providers/aliyun-oss-go-sdk-managed-credentials-provider
  2. Obtenez le client Alibaba Cloud OSS Go SDK et appelez les services cloud.

    package sample
    
    import (
        "fmt"
        ossprovider "aliyun-oss-go-sdk-managed-credentials-provider/sdk"
    )
    
    func main() {
        secretName := "********"
        endpoint := "https://oss-cn-hangzhou.aliyuncs.com"
    
        // Obtain the proxy OSS client.
        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 {
            // Business code.
        }
    
        // Release the plug-in resources by closing the client.
        client.Shutdown()
    }

FAQ

Comment résoudre l'expiration des identifiants lorsque le plug-in RAM Go signale l'erreur InvalidAccessKeyId ?

  • Cause :

    • Le plug-in de secrets Go ne tente pas automatiquement de nouvelle connexion lorsqu'une erreur InvalidAccessKeyId se produit.

    • Si une fenêtre de rotation courte (par exemple 10 minutes), inférieure à 6 heures, est définie lors d'une rotation manuelle, l'AccessKey du client peut devenir invalide avant que le cache local ne soit actualisé.

  • Solution

    1. Attendez l'actualisation automatique : Les secrets à rotation automatique peuvent obtenir de nouveaux secrets via le mécanisme d'actualisation planifié (l'intervalle est de 6 heures).

    2. Actualisation immédiate : Lorsqu'un identifiant expire, interceptez l'exception et appelez la méthode sdk.RefreshSecretInfo(secretName) pour actualiser manuellement le secret RAM.

    3. Actualisation planifiée : Configurez une tâche planifiée pour appeler sdk.RefreshSecretInfo(secretName) à une fréquence personnalisée afin d'actualiser le secret RAM, garantissant ainsi l'obtention du nouveau secret avant l'expiration de l'actuel.

    4. Ajustez la fenêtre de rotation : Pour la rotation manuelle des secrets RAM, nous vous recommandons de définir la fenêtre de rotation sur plus de 12 heures.