Tous les produits
Search
Centre de documentation

Microservices Engine:Chiffrement des configurations

Dernière mise à jour :Aug 28, 2026

Les données de configuration du registre de microservices de Microservices Engine (MSE) sont stockées en texte clair. MSE s'intègre à Key Management Service (KMS) pour vous permettre de chiffrer et de déchiffrer les données de configuration, telles que les sources de données, les jetons, les noms d'utilisateur et les mots de passe. Cette fonctionnalité permet de réduire le risque de fuite de données sensibles.

Prérequis

Important

Créer des configurations chiffrées

Pour créer des configurations chiffrées dans la console MSE, procédez comme suit :

  1. Connectez-vous à la console MSE, puis sélectionnez une région dans la barre de navigation supérieure.

  2. Dans le volet de navigation de gauche, choisissez Microservices Registry > Instances.

  3. Sur la page Instances, cliquez sur le nom de l'instance.

  4. Dans le volet de navigation de gauche, choisissez Configuration Management > Configurations.

  5. Dans le coin supérieur gauche de la page Configurations, sélectionnez un namespace dans la liste déroulante Namespace, puis cliquez sur Add Configuration.

  6. Dans le panneau Create Configuration, saisissez un Data ID et un Group. Activez ensuite l'option Data Encryption et sélectionnez une KMS Key. Si vous n'avez pas encore créé de KMS Key, cliquez sur Create. Vous pouvez créer une clé dans la console Key Management Service. Après avoir créé la clé, actualisez le panneau Create Configuration pour afficher la nouvelle clé KMS.

    Important
    • Si vous activez Dedicated KMS après le 31 mars 2022, vous devez sélectionner l'ID d'une clé utilisée pour le chiffrement et associer cette clé à l'instance MSE Nacos. Ainsi, toutes les configurations ultérieures seront chiffrées à l'aide de cette clé.

    • Si vous avez activé KMS avant le 31 mars 2022, aucune invite ne s'affiche pour lier l'ID de clé de l'instance Dedicated KMS et vous pouvez utiliser Shared KMS. Les méthodes de configuration permettant aux applications d'accéder à Shared KMS diffèrent.

    • Pour les utilisateurs de Dedicated KMS, l'option KMS AES-256 s'affiche. Pour les utilisateurs de Shared KMS, trois méthodes de chiffrement sont affichées afin de garantir la compatibilité des versions. Nous vous déconseillons de sélectionner KMS ou KMS AES-128.

      • KMS AES-256 : méthode de chiffrement et de déchiffrement par enveloppe de KMS. Cette méthode utilise une clé 256 bits offrant une forte résistance au chiffrement. Le contenu de configuration chiffré ne peut pas dépasser 50 Ko. Les données de configuration en texte clair ne sont pas transmises à KMS. Nous vous recommandons de sélectionner cette option pour une sécurité accrue. Choisissez la méthode de chiffrement adaptée à vos besoins métier.

      • KMS AES-128 : méthode de chiffrement utilisant une clé 128 bits et offrant une résistance moyenne. Le contenu de configuration chiffré ne peut pas dépasser 50 Ko.

      • KMS : nous vous déconseillons de sélectionner cette option, car des caractères spéciaux peuvent entraîner des problèmes de compatibilité. Par exemple, une esperluette (&) est échappée sous la forme \u0026. Le contenu de configuration chiffré ne peut pas dépasser 6 Ko.

    • Après la liaison, vous ne pouvez pas modifier la clé. Si vous supprimez la clé, vous ne pourrez plus accéder aux configurations chiffrées.

  7. Dans la section Configuration Format, sélectionnez un format de données, saisissez le contenu de la configuration dans l'éditeur Configuration Content à droite, puis cliquez sur Release.

Utiliser une configuration chiffrée dans le SDK Nacos pour Java

  1. Ajoutez les dépendances suivantes au fichier pom.xml de votre projet :

    <dependency>
        <groupId>com.alibaba.nacos</groupId>
        <artifactId>nacos-client</artifactId>
        <version>{nacos-client-version}</version>
    </dependency>
    <dependency>
        <groupId>com.alibaba.nacos</groupId>
        <artifactId>nacos-client-mse-extension</artifactId>
        <version>{nacos-client-mse-extension-version}</version>
    </dependency>

    Description des versions

    Version majeure du client Nacos

    Version du client Nacos

    Version recommandée du plug-in

    1.x

    V1.4.3 ou ultérieure

    V1.0.6 ou ultérieure

    2.x

    V2.1.1 ou ultérieure

    V1.0.6 ou ultérieure

    Important

    Des problèmes de stabilité peuvent survenir si la version du plug-in de chiffrement et de déchiffrement ne correspond pas à la version du client Nacos. Nous vous recommandons d'utiliser les versions recommandées.

  2. Sélectionnez le code valide que vous souhaitez configurer en fonction du type de framework utilisé.

    Utiliser le framework client Nacos

    Si vous utilisez le framework client Nacos pour obtenir des configurations, vous devez configurer l'exemple de code suivant.

    try {
        Properties properties = new Properties();
        // The address of your Nacos server.
        properties.put("serverAddr", "{serverAddr}");
        // Configure the RAM role of the ECS instance as the access credential.
        properties.put("ramRoleName", "{ramRoleName}");
        // The endpoint of the KMS instance.
        properties.put("kmsEndpoint", "{kmsEndpoint}");
        ConfigService configService = NacosFactory.createConfigService(properties);
        System.out.println("content:::"+configService.getConfig("{dataId}", "{group}", 6000));
    } catch (Exception e) {
        e.printStackTrace();
    }

    kmsEndpoint indique l'endpoint de l'instance KMS. Si l'environnement d'accès et l'instance KMS se trouvent dans le même VPC, la valeur de kmsEndpoint correspond à l'endpoint VPC de l'instance. Si vous accédez à l'instance KMS via Internet, la valeur de kmsEndpoint correspond à l'endpoint public ou à l'endpoint VPC de la passerelle publique. Pour savoir comment obtenir l'endpoint, consultez la rubrique Comment obtenir l'endpoint d'une instance KMS ?

    Si vous utilisez une paire AccessKey comme identifiant pour accéder à l'instance KMS, remplacez la configuration suivante :

    properties.put("ramRoleName", "{ramRoleName}");

    Utilisez la configuration suivante :

    properties.put("accessKey", "{accessKey}"); 
    properties.put("secretKey", "{secretKey}");

    Le SDK Nacos pour Java peut utiliser des configurations chiffrées avec plusieurs types d'identifiants d'accès, tels que les jetons Security Token Service (STS) et le nom de ressource Alibaba Cloud (ARN) d'un rôle RAM. Pour plus d'informations sur les identifiants d'accès pris en charge et les méthodes de configuration du client, consultez la rubrique Identifiants d'accès pris en charge pour le chiffrement des configurations du SDK Nacos pour Java.

    Si votre service KMS a été activé après le 31 mars 2022 et que vous souhaitez publier des configurations chiffrées dans le SDK, ajoutez le code suivant :

    properties.put("keyId", "{keyId}");

    Remplacez les paramètres serverAddr, ramRoleName, accessKey, secretKey, kmsEndpoint, dataId, group et keyId du code par les paramètres réels de votre service.

    Utiliser le framework Spring Cloud Nacos Config

    Remarque
    • Si vous utilisez Spring Cloud Alibaba 2022.x ou 2023.x, mettez à niveau la version vers 2023.0.1.2.

    • Si vous utilisez Spring Cloud Alibaba 2021.x, mettez à niveau la version vers 2021.0.6.1.

    • Si vous utilisez Spring Cloud Alibaba 2.x, mettez à niveau la version vers 2.2.10.

    • Assurez-vous que les versions de Spring Cloud Alibaba, Spring Cloud et Spring Boot sont compatibles. Pour plus d'informations sur la compatibilité des versions, consultez les notes de publication sur le site Web officiel de Spring Cloud Alibaba.

    Si vous utilisez le framework Spring Cloud Nacos Config pour obtenir des configurations, vous devez ajouter les configurations suivantes :

    spring.cloud.nacos.config.server-addr={serverAddr}
    spring.config.import=nacos:{dataId}?group={group}&refreshEnabled=true
    # Use the RAM role of an ECS instance as the access credential.
    spring.cloud.nacos.config.ramRoleName={ramRoleName}
    spring.cloud.nacos.config.kmsEndpoint={kmsEndpoint}

    kmsEndpoint indique l'endpoint de l'instance KMS. Si l'environnement d'accès et l'instance KMS se trouvent dans le même VPC, la valeur de kmsEndpoint correspond à l'endpoint VPC de l'instance. Si vous accédez à l'instance KMS via Internet, la valeur de kmsEndpoint correspond à l'endpoint public ou à l'endpoint VPC de la passerelle publique. Pour savoir comment obtenir l'endpoint, consultez la rubrique Comment obtenir l'endpoint d'une instance KMS ?

    Si vous utilisez une paire AccessKey comme identifiant pour accéder à l'instance KMS, remplacez la configuration suivante :

    spring.cloud.nacos.config.ramRoleName={ramRoleName}

    Utilisez les configurations suivantes :

    spring.cloud.nacos.config.accesskey={accessKey}
    spring.cloud.nacos.config.secretkey={secretKey}
    # If you use an AccessKey pair to access Nacos, we recommend specifying it
    # by using JVM parameters or environment variables due to its sensitive nature.
    # JVM parameters
    -Dspring.cloud.nacos.config.accessKey={accessKey}
    -Dspring.cloud.nacos.config.secretKey={secretKey}
    # Environment variables
    spring_cloud_nacos_config_accessKey={accessKey}
    spring_cloud_nacos_config_secretKey={secretKey}

    Le SDK Nacos pour Java peut utiliser des configurations chiffrées avec plusieurs types d'identifiants d'accès, tels que les jetons Security Token Service (STS) et le nom de ressource Alibaba Cloud (ARN) d'un rôle RAM. Pour plus d'informations sur les identifiants d'accès pris en charge et les méthodes de configuration du client, consultez la rubrique Identifiants d'accès pris en charge pour le chiffrement des configurations du SDK Nacos pour Java.

    Si votre service KMS a été activé après le 31 mars 2022 et que vous souhaitez publier des configurations chiffrées dans le SDK, ajoutez le code suivant :

    spring.cloud.nacos.config.keyId={keyId}

    Remplacez les paramètres serverAddr, ramRoleName, accessKey, secretKey, kmsEndpoint, dataId, group et keyId du code par les paramètres réels de votre service.

    Description

    Le tableau suivant décrit les paramètres. Assurez-vous que les valeurs configurées sont valides.

    Paramètre

    Description

    serverAddr

    L'adresse IP de votre instance MSE. Exemple : mse-*****.nacos-ans.mse.aliyuncs.com.

    ramRoleName

    Le rôle RAM attribué à l'instance ECS ou au cluster ACK.

    accessKey et secretKey

    L'AccessKey ID et l'AccessKey Secret du compte Alibaba Cloud actuel.

    Vous devez spécifier les paramètres accessKey et secretKey. Sinon, vous devez spécifier le paramètre ramRoleName.

    kmsEndpoint

    L'endpoint de l'instance KMS. Si l'environnement d'accès et l'instance KMS se trouvent dans le même VPC, la valeur de kmsEndpoint correspond à l'endpoint VPC de l'instance. Si vous accédez à l'instance KMS via Internet, la valeur de kmsEndpoint correspond à l'endpoint public ou à l'endpoint VPC de la passerelle publique. Pour savoir comment obtenir l'endpoint, consultez la rubrique Comment obtenir l'endpoint d'une instance KMS ?

    dataId

    L'ID de données de la configuration chiffrée. Exemple : cipher-kms-aes-256-****.properties.

    group

    Le nom du groupe de la configuration chiffrée.

    keyId

    L'ID de la clé KMS utilisée pour chiffrer les configurations. Vous pouvez créer et utiliser une clé KMS dans la console.

    Exemple : alia/*** ou key-***.

Utiliser une configuration chiffrée dans le SDK Nacos pour Go

  1. Exécutez la commande go get pour télécharger les dépendances dans le SDK client Nacos pour Go.

    go get -u github.com/nacos-group/nacos-sdk-go/v2@v2.2.8
  2. Modifiez les configurations initiales du client Nacos.

    Dans le SDK Nacos pour Go, seule une paire AccessKey peut être utilisée comme identifiant pour accéder à l'instance KMS. Remplacez les paramètres serverAddr, accessKey, secretKey et kmsEndpoint du code par les paramètres utilisés dans votre activité, et assurez-vous que le paramètre OpenKMS est défini sur true pour le chiffrement des configurations.

    sc := []constant.ServerConfig{
      {
        IpAddr: "{serverAddr}", // Replace with the endpoint of your MSE instance.
        Port:   8848,
      },
    }
    var accessKey = "{accessKey}" 
    var secretKey = "{secretKey}" 
    cc := constant.ClientConfig{
      NamespaceId:         "public", // The namespace ID.
      OpenKMS:              true, // Enable KMS for configuration encryption.
      AccessKey:            accessKey, 
      SecretKey:            secretKey,
      KMSConfig:            &constant.KMSConfig{Endpoint: "{kmsEndpoint}",},
      TimeoutMs:           5000,
      NotLoadCacheAtStart: true,
      LogDir:              "/tmp/nacos/log",
      CacheDir:            "/tmp/nacos/cache",
      RotateTime:          "1h",
      MaxAge:              3,
    }

    kmsEndpoint indique l'endpoint de l'instance KMS. Si l'environnement d'accès et l'instance KMS se trouvent dans le même VPC, la valeur de kmsEndpoint correspond à l'endpoint VPC de l'instance. Si vous accédez à l'instance KMS via Internet, la valeur de kmsEndpoint correspond à l'endpoint public ou à l'endpoint VPC de la passerelle publique. Pour savoir comment obtenir l'endpoint, consultez la rubrique Comment obtenir l'endpoint d'une instance KMS ?

  3. Publiez des configurations chiffrées.

    keyId : ID de la clé KMS utilisée pour chiffrer les configurations.

    configParam := vo.ConfigParam{
        DataId:   "{dataId}",
        Group:    "{group}",
        Content:  "content",
        KmsKeyId: "{keyId}",  // The ID of the KMS key for encryption. You can create and use a key in the KMS console.
    }
    published, err := client.PublishConfig(configParam)
    if published && err == nil {
    	fmt.Printf("successfully publish: group[%s], dataId[%s], data[%s]\n", configParam.Group, configParam.DataId, configParam.Content)
    } else {
      fmt.Printf("failed to publish: group[%s], dataId[%s], data[%s]\n with error: %s\n",
        configParam.Group, configParam.DataId, configParam.Content, err)
    }
Paramètres

Le tableau suivant décrit les paramètres. Assurez-vous que les valeurs configurées sont valides.

Paramètre

Description

serverAddr

L'adresse IP de votre instance MSE. Exemple : mse-*****.nacos-ans.mse.aliyuncs.com.

accessKey et secretKey

L'AccessKey ID et l'AccessKey Secret de l'utilisateur RAM.

kmsEndpoint

L'endpoint de l'instance KMS. Si l'environnement d'accès et l'instance KMS se trouvent dans le même VPC, la valeur de kmsEndpoint correspond à l'endpoint VPC de l'instance. Si vous accédez à l'instance KMS via Internet, la valeur de kmsEndpoint correspond à l'endpoint public ou à l'endpoint VPC de la passerelle publique. Pour savoir comment obtenir l'endpoint, consultez la rubrique Comment obtenir l'endpoint d'une instance KMS ?

dataId

L'ID de données de la configuration chiffrée. Exemple : cipher-kms-aes-256-****.properties.

group

Le nom du groupe de la configuration chiffrée.

keyId

L'ID de la clé KMS utilisée pour chiffrer les configurations. Vous pouvez créer et utiliser une clé KMS dans la console KMS.

Exemple : alia/*** ou key-***.

Identifiants d'accès pris en charge pour le chiffrement des configurations du SDK Nacos pour Java

Le SDK Nacos pour Java prend en charge plusieurs identifiants d'accès pour chiffrer les configurations. Vous pouvez sélectionner une méthode pour initialiser le fournisseur d'identifiants en fonction des exigences d'authentification et d'autorisation de votre scénario métier.

Identifiants d'accès pris en charge :

Pour savoir comment configurer les identifiants d'accès sur le client, consultez la section « Configurer les identifiants d'accès sur le client » de la rubrique Authentification d'accès par le client Nacos. Sélectionnez la stratégie système suivante pour accorder l'autorisation associée à l'identifiant d'accès. Cela permet d'effectuer une opération d'autorisation à granularité grossière pour accorder les autorisations de lecture et d'écriture sur toutes les instances KMS.

Stratégie

Remarque

AliyunKMSFullAccess

L'autorisation requise pour gérer KMS. Vous pouvez utiliser un rôle RAM auquel cette stratégie est attachée pour gérer toutes les fonctionnalités de la même manière qu'un compte Alibaba Cloud gère KMS.

FAQ

Comment configurer les paramètres si Shared KMS, activé avant le 31 mars 2022, est utilisé ?

Si vous avez activé Shared KMS avant le 31 mars 2022, il vous suffit de remplacer le paramètre kmsEndpoint par kmsRegionId. kmsRegionId indique la région où réside l'instance KMS, par exemple cn-hangzhou. Suivez les étapes ci-dessous pour modifier la configuration du client en fonction du framework utilisé.

Utiliser une configuration chiffrée dans le SDK client Nacos pour Java

Remplacez la configuration suivante dans le code :

properties.put("kmsEndpoint", "{kmsEndpoint}");

Utilisez la configuration suivante :

properties.put("kms_region_id", "{kmsRegionId}");

Utiliser une configuration chiffrée avec le framework Spring Cloud Nacos Config dans le SDK Nacos pour Java

Remplacez la configuration suivante dans le code :

spring.cloud.nacos.config.kmsEndpoint={kmsEndpoint}

Utilisez les configurations suivantes :

spring.cloud.nacos.config.kms_region_id={kmsRegionId}

Utiliser une configuration chiffrée dans le SDK Nacos pour Go

Ajoutez le paramètre RegionId dans ClientConfig. Remplacez les configurations suivantes dans le code :

cc := constant.ClientConfig{
  NamespaceId:         "public", 
  OpenKMS:              true, 
  AccessKey:            accessKey, 
  SecretKey:            secretKey,
  KMSConfig:            &constant.KMSConfig{Endpoint: "{kmsEndpoint}",},
  TimeoutMs:            5000,
  NotLoadCacheAtStart:  true,
  LogDir:               "/tmp/nacos/log",
  CacheDir:             "/tmp/nacos/cache",
  RotateTime:           "1h",
  MaxAge:               3,
}

Utilisez les configurations suivantes :

cc := constant.ClientConfig{
  NamespaceId:         "public", 
  OpenKMS:              true, 
  AccessKey:            accessKey, 
  SecretKey:            secretKey,
  TimeoutMs:            5000,
  NotLoadCacheAtStart:  true,
  LogDir:               "/tmp/nacos/log",
  CacheDir:             "/tmp/nacos/cache",
  RotateTime:           "1h",
  MaxAge:                3,
  RegionId:             "{kmsRegionId}",	
}

Comment obtenir l'endpoint d'une instance KMS ?

  • Si votre environnement d'accès et l'instance KMS se trouvent dans le même VPC, définissez kmsEndpoint sur l'endpoint VPC de l'instance. Dans la console KMS, accédez à la page Instance Management, cliquez sur l'instance cible pour afficher ses détails, puis récupérez l'endpoint VPC de l'instance dans la section Basic Information.

  • Si vous accédez à l'instance KMS via Internet, vous devez activer l'option Internet Access Status sur la page des détails de l'instance KMS.

    Une fois l'accès public activé, l'endpoint public de la passerelle publique est kms.cn-hangzhou.aliyuncs.com et l'endpoint VPC de la passerelle publique est kms-vpc.cn-hangzhou.aliyuncs.com. L'accès public nécessite le SDK KMS et la limite de performance pour le chiffrement et le déchiffrement symétriques est de 750 opérations par seconde. Nous vous recommandons de configurer des politiques de contrôle d'accès à granularité fine pour renforcer la sécurité.

  • Si vous accédez à l'instance KMS via un VPC, la valeur de kmsEndpoint correspond à l'endpoint VPC de la passerelle publique.

FAQ

Dépannage des erreurs courantes

Procédez comme suit :

  • Vérifiez si l'environnement d'exécution de l'application peut se connecter au VPC dans lequel réside l'instance MSE et au VPC dans lequel réside l'instance KMS.

    Remarque

    Il n'est pas nécessaire de garantir la connectivité entre l'instance MSE et l'instance KMS.

  • Vérifiez si KMS V1.0 ou V3.0 est utilisé. Si KMS V1.0 est utilisé, vous devez vous assurer que KMS a été activé avant le 31 mars 2022.

    Remarque

    Si vous activez KMS après le 31 mars 2022, vous devez acheter Dedicated KMS. La fonctionnalité de chiffrement de KMS V1.0 n'est plus disponible pour les nouveaux utilisateurs.

  • Vérifiez si la version du client Nacos correspond à la version du plug-in de chiffrement et de déchiffrement. Pour plus d'informations, consultez les descriptions de versions dans cette rubrique.

Dépannage des problèmes du SDK Nacos pour Java

Mots-clés des piles d'exceptions dans les journaux Nacos

Causes

keyId is not set up yet

Le paramètre d'initialisation keyId est vide ou non spécifié.

Forbidden.KeyNotFound : The specified Key is not found.

L'ID de clé spécifié par le paramètre d'initialisation keyId n'existe pas dans l'instance KMS.

kmsEndpoint is empty

Le paramètre d'initialisation kmsEndpoint est vide.

test-kst-xxxx.cryptoservice.kms.aliyuncs.com: unknown name or service

L'endpoint spécifié par le paramètre d'initialisation kmsEndpoint est inaccessible.

kmsPasswordKey is empty

Le paramètre d'initialisation kmsPasswordKey est vide.

keystore password was incorrect

La valeur du paramètre d'initialisation kmsPasswordKey n'est pas valide.

SDK.ServerUnreachable : Server unreachable: connection https://kst-xxx.cryptoservice.kms.aliyuncs.com

Le paramètre d'initialisation kmsVersion n'est pas défini sur v3.0.

None of the TrustManagers trust this certificate chain

  1. Le paramètre d'initialisation kmsVersion n'est pas défini sur v3.0.

  2. Le paramètre d'initialisation kmsCaFilePath est vide.

kmsClientKeyFilePath is empty

Le paramètre d'initialisation kmsClientKeyFilePath est vide.

unable to find valid certification path to requested target

Le fichier spécifié par le paramètre d'initialisation kmsCaFilePath est introuvable.

Références