Tüm Ürünler
Search
Belge Merkezi

Microservices Engine:Configuration encryption

Son Güncelleme:Oct 06, 2026

Microservices Engine (MSE) içindeki Microservices Registry'de saklanan yapılandırma verileri düz metin olarak tutulur. MSE, Key Management Service (KMS) ile entegre çalışarak veri kaynakları, belirteçler, kullanıcı adları ve parolalar gibi yapılandırma verilerini şifrelemenize ve şifresini çözmenize olanak tanır. Bu sayede hassas verilerin sızma riski azaltılır.

Ön koşullar

Önemli

Şifrelenmiş yapılandırmalar oluşturun

MSE konsolunda şifrelenmiş yapılandırmalar oluşturmak için aşağıdaki adımları izleyin:

  1. MSE konsolu adresinde oturum açın ve üst gezinme çubuğundan bir bölge seçin.

  2. Sol gezinme bölmesinde Microservices Registry > Instances seçeneklerini seçin.

  3. Instances sayfasında örneğin adına tıklayın.

  4. Sol gezinme bölmesinde Configuration Management > Configurations seçeneklerini seçin.

  5. Configurations sayfasının sol üst köşesinde Namespace açılır listesinden bir ad alanı seçin ve Add Configuration seçeneğine tıklayın.

  6. Create Configuration panelinde bir Data ID ve Group girin. Ardından Data Encryption anahtarını açın ve bir KMS Key seçin. Henüz bir KMS Key oluşturmadıysanız Create seçeneğine tıklayın. Key Management Service konsolunda bir anahtar oluşturabilirsiniz. Anahtarı oluşturduktan sonra yeni KMS anahtarının görünmesi için Create Configuration panelini yenileyin.

    Önemli
    • 31 Mart 2022 tarihinden sonra Dedicated KMS'i etkinleştiriyorsanız şifreleme için kullanılan bir anahtarın kimliğini seçmeli ve bu anahtarı MSE Nacos örneğiyle ilişkilendirmelisiniz. Bu sayede sonraki tüm yapılandırmalar bu anahtar kullanılarak şifrelenir.

    • KMS'i 31 Mart 2022 tarihinden önce etkinleştirdiyseniz Dedicated KMS örneğinin anahtar kimliğini bağlamanızı isteyen bir istem görüntülenmez ve Shared KMS'i kullanabilirsiniz. Uygulamaların Shared KMS'e erişim yöntemleri farklıdır.

    • Dedicated KMS kullanan kullanıcılar için KMS AES-256 görüntülenir. Shared KMS kullanan kullanıcılar için sürüm uyumluluğu göz önünde bulundurularak üç şifreleme yöntemi görüntülenir. KMS veya KMS AES-128 seçmemeniz önerilir.

      • KMS AES-256: KMS'in zarf şifreleme ve şifre çözme yöntemidir. Bu yöntem, yüksek şifreleme gücüne sahip 256 bitlik bir anahtar kullanır. Şifrelenmiş yapılandırma içeriği 50 KB'yi aşamaz. Düz metin halindeki yapılandırma verileri KMS'e iletilmez. Daha yüksek güvenlik için bu seçeneği seçmeniz önerilir. İş gereksinimlerinize göre bir şifreleme yöntemi seçin.

      • KMS AES-128: 128 bitlik anahtar kullanan ve orta düzeyde şifreleme gücüne sahip şifreleme yöntemidir. Şifrelenmiş yapılandırma içeriğinin boyutu 50 KB'yi aşamaz.

      • KMS: Bu seçeneği seçmemeniz önerilir. Çünkü özel karakterler uyumluluk sorunlarına neden olabilir. Örneğin, bir ampersand (&) karakteri \u0026 olarak kaçışlanır. Şifrelenmiş yapılandırma içeriğinin boyutu 6 KB'yi aşamaz.

    • Bağlama işleminden sonra anahtarı değiştiremezsiniz. Anahtarı silerseniz şifreleme yapılandırmalarına erişemezsiniz.

  7. Configuration Format bölümünde bir veri biçimi seçin, sağ taraftaki Configuration Content düzenleyicisine yapılandırma içeriğini girin ve ardından Release seçeneğine tıklayın.

Java için Nacos SDK'da şifrelenmiş bir yapılandırma kullanın

  1. Projedeki pom.xml dosyasına aşağıdaki bağımlılıkları ekleyin:

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

    Sürüm açıklaması


    Nacos istemci ana sürümü


    Nacos istemci sürümü


    Önerilen eklenti sürümü


    1.x


    V1.4.3 veya üzeri


    V1.0.6 veya üzeri


    2.x


    V2.1.1 veya üzeri


    V1.0.6 veya üzeri

    Önemli

    Şifreleme ve şifre çözme eklentisi sürümü Nacos istemci sürümüyle eşleşmezse kararlılık sorunları oluşabilir. Önerilen sürümleri kullanmanız önerilir.

  2. Kullandığınız çerçeve türüne göre yapılandırmak istediğiniz geçerli kodu seçin.

    Nacos istemci çerçevesini kullanın

    Yapılandırmaları almak için Nacos istemci çerçevesini kullanıyorsanız aşağıdaki örnek kodu yapılandırmanız gerekir.

    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, KMS örneğinin uç noktasını belirtir. Erişim ortamı ve KMS örneği aynı VPC'deyse kmsEndpoint değeri örneğin VPC uç noktasıdır. KMS örneğine İnternet üzerinden erişiyorsanız kmsEndpoint değeri genel ağ geçidinin genel uç noktası veya VPC uç noktasıdır. Uç noktanın nasıl alınacağı hakkında daha fazla bilgi için bkz. KMS örneğinin uç noktasını nasıl alırım?

    KMS örneğine erişmek için kimlik bilgisi olarak bir AccessKey çifti kullanıyorsanız aşağıdaki yapılandırmayı değiştirin:

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

    Aşağıdaki yapılandırmayı kullanın:

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

    Java için Nacos SDK, Security Token Service (STS) belirteçleri ve bir RAM rolünün Alibaba Cloud Resource Name (ARN) adı gibi birden çok erişim kimlik bilgisi kullanarak şifrelenmiş yapılandırmaları kullanabilir. Desteklenen erişim kimlik bilgileri ve istemci yapılandırma yöntemleri hakkında daha fazla bilgi için bkz. Java için Nacos SDK yapılandırma şifrelemesi için desteklenen erişim kimlik bilgileri.

    KMS'iniz 31 Mart 2022 tarihinden sonra etkinleştirildiyse ve SDK'da şifrelenmiş yapılandırmaları yayınlamak istiyorsanız aşağıdaki kodu ekleyin:

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

    Kodda yer alan serverAddr, ramRoleName, accessKey, secretKey, kmsEndpoint, dataId, group ve keyId parametrelerini gerçek hizmet parametreleriyle değiştirin.

    Spring Cloud Nacos Config çerçevesini kullanın

    Not
    • Spring Cloud Alibaba 2022.x veya 2023.x kullanıyorsanız sürümü 2023.0.1.2'ye yükseltin.

    • Spring Cloud Alibaba 2021.x kullanıyorsanız sürümü 2021.0.6.1'e yükseltin.

    • Spring Cloud Alibaba 2.x kullanıyorsanız sürümü 2.2.10'a yükseltin.

    • Spring Cloud Alibaba, Spring Cloud ve Spring Boot sürümlerinin uyumlu olduğundan emin olun. Sürüm uyumluluğu hakkında daha fazla bilgi için resmi Spring Cloud Alibaba web sitesindeki sürüm notlarına bakın.

    Yapılandırmaları almak için Spring Cloud Nacos Config çerçevesini kullanıyorsanız aşağıdaki yapılandırmaları eklemeniz gerekir:

    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, KMS örneğinin uç noktasını belirtir. Erişim ortamı ve KMS örneği aynı VPC'deyse kmsEndpoint değeri örneğin VPC uç noktasıdır. KMS örneğine İnternet üzerinden erişiyorsanız kmsEndpoint değeri genel ağ geçidinin genel uç noktası veya VPC uç noktasıdır. Uç noktanın nasıl alınacağı hakkında daha fazla bilgi için bkz. KMS örneğinin uç noktasını nasıl alırım?

    KMS örneğine erişmek için kimlik bilgisi olarak bir AccessKey çifti kullanıyorsanız aşağıdaki yapılandırmayı değiştirin:

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

    Aşağıdaki yapılandırmaları kullanın:

    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}

    Java için Nacos SDK, Security Token Service (STS) belirteçleri ve bir RAM rolünün Alibaba Cloud Resource Name (ARN) adı gibi birden çok erişim kimlik bilgisi kullanarak şifrelenmiş yapılandırmaları kullanabilir. Desteklenen erişim kimlik bilgileri ve istemci yapılandırma yöntemleri hakkında daha fazla bilgi için bkz. Java için Nacos SDK yapılandırma şifrelemesi için desteklenen erişim kimlik bilgileri.

    KMS'iniz 31 Mart 2022 tarihinden sonra etkinleştirildiyse ve SDK'da şifrelenmiş yapılandırmaları yayınlamak istiyorsanız aşağıdaki kodu ekleyin:

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

    Kodda yer alan serverAddr, ramRoleName, accessKey, secretKey, kmsEndpoint, dataId, group ve keyId parametrelerini gerçek hizmet parametreleriyle değiştirin.

    Açıklama

    Aşağıdaki tabloda parametreler açıklanmaktadır. Yapılandırdığınız değerlerin geçerli olduğundan emin olun.


    Parametre


    Açıklama


    serverAddr


    MSE örneğinizin IP adresi. Örnek: mse-*****.nacos-ans.mse.aliyuncs.com.


    ramRoleName


    ECS örneğine veya ACK kümesine atanmış RAM rolü.


    accessKey ve secretKey

    Geçerli Alibaba Cloud hesabının AccessKey ID'si ve AccessKey gizli anahtarı.

    accessKey ve secretKey parametrelerini belirtmeniz gerekir. Aksi takdirde ramRoleName parametresini belirtmeniz gerekir.


    kmsEndpoint


    KMS örneğinin uç noktası. Erişim ortamı ve KMS örneği aynı VPC'deyse kmsEndpoint değeri örneğin VPC uç noktasıdır. KMS örneğine İnternet üzerinden erişiyorsanız kmsEndpoint değeri genel ağ geçidinin genel uç noktası veya VPC uç noktasıdır. Uç noktanın nasıl alınacağı hakkında daha fazla bilgi için bkz. KMS örneğinin uç noktasını nasıl alırım?


    dataId


    Şifrelenmiş yapılandırmanın veri kimliği. Örnek: cipher-kms-aes-256-****.properties.


    group


    Şifrelenmiş yapılandırmanın grup adı.


    keyId

    Yapılandırmaları şifrelemek için kullanılan KMS anahtarının kimliği. Konsolda bir KMS anahtarı oluşturup kullanabilirsiniz.

    Örnek: alia/*** veya key-***.

Go için Nacos SDK'da şifrelenmiş bir yapılandırma kullanın

  1. Go için Nacos istemci SDK'sı içindeki bağımlılıkları indirmek için go get komutunu çalıştırın.

    go get -u github.com/nacos-group/nacos-sdk-go/v2@v2.2.8
  2. Nacos istemcisinin ilk yapılandırmalarını değiştirin.

    Go için Nacos SDK'da KMS örneğine erişmek için kimlik bilgisi olarak yalnızca bir AccessKey çifti kullanılabilir. Kodda yer alan serverAddr, accessKey, secretKey ve kmsEndpoint parametrelerini işinizde kullanılan parametrelerle değiştirin ve yapılandırma şifrelemesi için OpenKMS parametresinin true olarak ayarlandığından emin olun.

    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, KMS örneğinin uç noktasını belirtir. Erişim ortamı ve KMS örneği aynı VPC'deyse kmsEndpoint değeri örneğin VPC uç noktasıdır. KMS örneğine İnternet üzerinden erişiyorsanız kmsEndpoint değeri genel ağ geçidinin genel uç noktası veya VPC uç noktasıdır. Uç noktanın nasıl alınacağı hakkında daha fazla bilgi için bkz. KMS örneğinin uç noktasını nasıl alırım?

  3. Şifrelenmiş yapılandırmaları yayınlayın.

    keyId: Yapılandırmaları şifrelemek için kullanılan KMS anahtarının kimliği.

    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)
    }
Parametreler

Aşağıdaki tabloda parametreler açıklanmaktadır. Yapılandırdığınız değerlerin geçerli olduğundan emin olun.


Parametre


Açıklama


serverAddr


MSE örneğinizin IP adresi. Örnek: mse-*****.nacos-ans.mse.aliyuncs.com.


accessKey ve secretKey


RAM kullanıcısının AccessKey ID'si ve AccessKey gizli anahtarı.


kmsEndpoint


KMS örneğinin uç noktası. Erişim ortamı ve KMS örneği aynı VPC'deyse kmsEndpoint değeri örneğin VPC uç noktasıdır. KMS örneğine İnternet üzerinden erişiyorsanız kmsEndpoint değeri genel ağ geçidinin genel uç noktası veya VPC uç noktasıdır. Uç noktanın nasıl alınacağı hakkında daha fazla bilgi için bkz. KMS örneğinin uç noktasını nasıl alırım?


dataId


Şifrelenmiş yapılandırmanın veri kimliği. Örnek: cipher-kms-aes-256-****.properties.


group


Şifrelenmiş yapılandırmanın grup adı.


keyId

Yapılandırmaları şifrelemek için kullanılan KMS anahtarının kimliği. KMS konsolunda bir KMS anahtarı oluşturup kullanabilirsiniz.

Örnek: alia/*** veya key-***.

Java için Nacos SDK yapılandırma şifrelemesi için desteklenen erişim kimlik bilgileri

Java için Nacos SDK, yapılandırmaları şifrelemek için birden çok erişim kimlik bilgisini destekler. İş senaryonuzun kimlik doğrulama ve yetkilendirme gereksinimlerine bağlı olarak kimlik bilgisi sağlayıcısını başlatmak için bir yöntem seçebilirsiniz.

Desteklenen erişim kimlik bilgileri:

İstemcide erişim kimlik bilgilerinin nasıl yapılandırılacağı hakkında daha fazla bilgi için Nacos istemcisi tarafından erişim kimlik doğrulaması konusundaki "İstemcide erişim kimlik bilgilerini yapılandırın" bölümüne bakın. Aşağıdaki sistem ilkesini seçerek erişim kimlik bilgisiyle ilgili izni verin. Bu şekilde, tüm KMS örneklerinde okuma ve yazma izinlerini vermek için geniş kapsamlı bir yetkilendirme işlemi gerçekleştirilir.


İlke


Not


AliyunKMSFullAccess


KMS'i yönetmek için gereken izin. Bu ilkenin atandığı bir RAM rolü kullanarak, tıpkı bir Alibaba Cloud hesabı kullanıyormuşsunuz gibi KMS'in tüm özelliklerini yönetebilirsiniz.

SSS

31 Mart 2022 tarihinden önce etkinleştirilen Shared KMS kullanılıyorsa parametreler nasıl yapılandırılır?

Shared KMS'i 31 Mart 2022 tarihinden önce etkinleştirdiyseniz kmsEndpoint parametresini kmsRegionId ile değiştirmeniz yeterlidir. kmsRegionId, KMS örneğinin bulunduğu bölgeyi (örneğin cn-hangzhou) belirtir. Kullandığınız çerçeveye göre istemci yapılandırmasını değiştirmek için aşağıdaki adımları izleyin.

Java için Nacos istemci SDK'sında şifrelenmiş bir yapılandırma kullanın

Koddaki aşağıdaki yapılandırmayı değiştirin:

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

Aşağıdaki yapılandırmayı kullanın:

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

Java için Nacos SDK'da Spring Cloud Nacos Config çerçevesini kullanarak şifrelenmiş bir yapılandırma kullanın

Koddaki aşağıdaki yapılandırmayı değiştirin:

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

Aşağıdaki yapılandırmaları kullanın:

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

Go için Nacos SDK'da şifrelenmiş bir yapılandırma kullanın

ClientConfig içine RegionId parametresini ekleyin. Koddaki aşağıdaki yapılandırmaları değiştirin:

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,
}

Aşağıdaki yapılandırmaları kullanın:

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

KMS örneğinin uç noktasını nasıl alırım?

  • Erişim ortamınız ve KMS örneğiniz aynı VPC'deyse kmsEndpoint değerini örneğin VPC uç noktası olarak ayarlayın. KMS konsolunda Instance Management sayfasına gidin, hedef örneğe tıklayarak ayrıntılarını görüntüleyin ve Basic Information bölümünden örneğin VPC endpoint of the instance değerini alın.

  • KMS örneğine İnternet üzerinden erişiyorsanız KMS örneği ayrıntıları sayfasında Internet Access Status anahtarını açmanız gerekir.

    Genel erişim etkinleştirildikten sonra genel ağ geçidinin genel uç noktası kms.cn-hangzhou.aliyuncs.com ve genel ağ geçidinin VPC uç noktası kms-vpc.cn-hangzhou.aliyuncs.com olur. Genel erişim için KMS SDK gerekir ve simetrik şifreleme ile şifre çözme için performans sınırı saniyede 750 işlemdir. Güvenliği artırmak için ince ayarlı erişim kontrol ilkeleri yapılandırmanız önerilir.

  • KMS örneğine bir VPC üzerinden erişiyorsanız kmsEndpoint değeri genel ağ geçidinin VPC uç noktasıdır.

SSS

Yaygın hataların giderilmesi

Aşağıdaki adımları izleyin:

  • Uygulama çalışma zamanı ortamının MSE örneğinin bulunduğu VPC'ye ve KMS örneğinin bulunduğu VPC'ye bağlanıp bağlanamadığını kontrol edin.

    Not

    MSE örneği ile KMS örneği arasında bağlantı kurulmasını sağlamaya gerek yoktur.

  • KMS V1.0 veya V3.0 kullanılıp kullanılmadığını kontrol edin. KMS V1.0 kullanılıyorsa KMS'in 31 Mart 2022 tarihinden önce etkinleştirildiğinden emin olmanız gerekir.

    Not

    31 Mart 2022 tarihinden sonra KMS'i etkinleştiriyorsanız Dedicated KMS satın almanız gerekir. KMS V1.0'ın şifreleme özelliği yeni kullanıcılar için artık kullanılamamaktadır.

  • Nacos istemci sürümünün şifreleme ve şifre çözme eklentisi sürümüyle eşleşip eşleşmediğini kontrol edin. Daha fazla bilgi için bu konudaki sürüm açıklamalarına bakın.

Java için Nacos SDK sorunlarının giderilmesi

Nacos günlüklerindeki istisna yığınlarının anahtar kelimeleri

Nedenler

keyId is not set up yet

Başlatma parametresi keyId boş bırakılmış veya belirtilmemiş.

Forbidden.KeyNotFound : The specified Key is not found.

Başlatma parametresi keyId tarafından belirtilen anahtar kimliği KMS örneğinde bulunmuyor.

kmsEndpoint is empty

Başlatma parametresi kmsEndpoint boş bırakılmış.

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

Başlatma parametresi kmsEndpoint tarafından belirtilen uç noktaya erişilemiyor.

kmsPasswordKey is empty

Başlatma parametresi kmsPasswordKey boş bırakılmış.

keystore password was incorrect

Başlatma parametresi kmsPasswordKey değeri geçersiz.

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

Başlatma parametresi kmsVersion, v3.0 olarak ayarlanmamış.

None of the TrustManagers trust this certificate chain

  1. Başlatma parametresi kmsVersion, v3.0 olarak ayarlanmamış.

  2. Başlatma parametresi kmsCaFilePath boş bırakılmış.

kmsClientKeyFilePath is empty

Başlatma parametresi kmsClientKeyFilePath boş bırakılmış.

unable to find valid certification path to requested target

Başlatma parametresi kmsCaFilePath tarafından belirtilen dosya bulunamıyor.

Başvurular