全部产品
Search
文档中心

Microservices Engine:Enkripsi konfigurasi

更新时间:Nov 10, 2025

Data konfigurasi dalam layanan konfigurasi biasanya disimpan dalam bentuk teks biasa. Untuk meningkatkan keamanan data sensitif—seperti sumber data, token, nama pengguna, dan kata sandi—Microservices Engine (MSE) terintegrasi dengan Key Management Service (KMS) guna mengenkripsi dan mendekripsi data konfigurasi. Integrasi ini membantu mengurangi risiko kebocoran data sensitif.

Prasyarat

Penting
  • Untuk memastikan keamanan data, MSE menggunakan Alibaba Cloud KMS untuk mengenkripsi dan mendekripsi data. KMS mencakup KMS Bersama dan KMS Spesifikasi Khusus. KMS Bersama tidak lagi tersedia. Untuk informasi selengkapnya, lihat [Pengumuman] EOFS dan EOS untuk KMS bersama. Jika Anda menggunakan KMS Bersama, kami menyarankan agar Anda meningkatkan KMS Bersama ke KMS Spesifikasi Khusus. Jika Anda mengaktifkan KMS setelah 31 Maret 2022, Anda harus membeli KMS Spesifikasi Khusus. Untuk informasi selengkapnya, lihat [Pengumuman Peningkatan] KMS ditingkatkan menjadi KMS Spesifikasi Khusus. Untuk informasi penagihan KMS, lihat Penagihan KMS 1.0.

  • Topik ini menggunakan KMS Spesifikasi Khusus sebagai contoh. Jika Anda mengaktifkan KMS Bersama sebelum 31 Maret 2022, lihat bagian FAQ untuk detail konfigurasi.

Buat konfigurasi terenkripsi

Ikuti langkah-langkah berikut untuk membuat konfigurasi terenkripsi di konsol MSE.

  1. Masuk ke Konsol MSE, lalu pilih wilayah di bilah navigasi atas.

  2. Di panel navigasi sebelah kiri, pilih Microservices Registry > Instances.

  3. Di halaman Instances, klik nama instans.

  4. Di panel navigasi sebelah kiri, pilih Configuration Management > Configurations.

  5. Di pojok kiri atas halaman Configurations, pilih namespace dari daftar drop-down Namespace, lalu klik Add Configuration.

  6. Di panel Create Configuration, masukkan Data ID dan Group, aktifkan sakelar Data Encryption, lalu pilih KMS Key. Jika Anda belum memiliki KMS Key, klik Create. Anda dapat membuat kunci di konsol Key Management Service. Setelah kunci dibuat, Anda dapat menyegarkan panel Create Configuration untuk melihat kunci KMS baru tersebut.

    Penting
    • Jika Anda mengaktifkan KMS Spesifikasi Khusus setelah 31 Maret 2022, Anda harus memilih Key ID yang akan digunakan untuk enkripsi dan mengaitkan Key ID tersebut dengan instans Nacos. Semua konfigurasi selanjutnya kemudian akan dienkripsi menggunakan kunci ini.

    • Jika Anda tidak diminta untuk mengaitkan ID kunci instans KMS Spesifikasi Khusus, artinya Anda mengaktifkan KMS sebelum 31 Maret 2022 dan masih dapat menggunakan KMS Bersama. Metode konfigurasi aplikasi untuk mengakses KMS Bersama berbeda.

    • Untuk pengguna yang menggunakan KMS Spesifikasi Khusus, ditampilkan KMS AES-256 encryption. Untuk kompatibilitas mundur, tiga metode enkripsi ditampilkan bagi pengguna yang menggunakan versi lama KMS Bersama. Namun, kami menyarankan agar Anda tidak menggunakan enkripsi KMS encryption atau KMS AES-128.

      • KMS AES-256 encryption: Metode ini menggunakan enkripsi dan dekripsi amplop KMS dengan kunci 256-bit, memberikan kekuatan enkripsi tinggi. Ukuran konten konfigurasi terenkripsi tidak boleh melebihi 50 KB. Data konfigurasi teks biasa tidak dikirim ke sistem KMS. Metode ini memberikan keamanan lebih tinggi dan direkomendasikan. Pilih metode enkripsi sesuai kebutuhan Anda.

      • KMS AES-128 encryption: Metode ini menggunakan kunci 128-bit dan memberikan kekuatan enkripsi menengah. Ukuran konten konfigurasi terenkripsi tidak boleh melebihi 50 KB.

      • KMS encryption: Metode ini tidak direkomendasikan karena memiliki masalah kompatibilitas dengan karakter khusus (misalnya, simbol & di-escape menjadi \u0026) dan ukuran konten konfigurasi terenkripsi tidak boleh melebihi 6 KB.

    • Setelah kunci dikaitkan, Anda tidak dapat mengubah kunci untuk instans MSE Nacos. Jika Anda menghapus kunci tersebut, Anda akan kehilangan akses ke konfigurasi terenkripsi.

  7. Di bagian Configuration Format, pilih format data, masukkan konten di kotak teks Configuration Content di sebelah kanan, lalu klik Release.

Gunakan konfigurasi terenkripsi di Nacos SDK untuk Java

  1. Tambahkan dependensi berikut ke file pom.xml dalam proyek.

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

    Panduan versi

    Versi utama klien Nacos

    Versi klien Nacos

    Versi plugin yang direkomendasikan

    1.x

    1.4.3 atau yang lebih baru

    1.0.6 atau yang lebih baru

    2.x

    2.1.1 atau yang lebih baru

    1.0.6 atau yang lebih baru

    Penting

    Masalah stabilitas dapat terjadi jika versi plugin enkripsi dan dekripsi tidak sesuai dengan versi klien Nacos. Kami menyarankan agar Anda menggunakan versi yang direkomendasikan.

  2. Konfigurasikan kode berdasarkan framework yang Anda gunakan.

    Gunakan Nacos Client secara langsung

    Jika Anda menggunakan framework Nacos Client untuk mengambil konfigurasi, gunakan kode contoh berikut.

    try {
        Properties properties = new Properties();
        // Titik akhir kluster Nacos Anda.
        properties.put("serverAddr", "{serverAddr}");
        // Konfigurasikan peran RAM instans ECS sebagai kredensial akses.
        properties.put("ramRoleName", "{ramRoleName}");
        // Titik akhir instans KMS.
        properties.put("kmsEndpoint", "{kmsEndpoint}");
        ConfigService configService = NacosFactory.createConfigService(properties);
        System.out.println("content:::"+configService.getConfig("{dataId}", "{group}", 6000));
    } catch (Exception e) {
        e.printStackTrace();
    }

    Parameter kmsEndpoint menentukan titik akhir instans KMS. Jika aplikasi dan instans KMS berada dalam VPC yang sama, atur parameter ini ke titik akhir VPC instans tersebut. Jika Anda mengakses instans KMS melalui Internet, atur parameter ini ke titik akhir publik atau titik akhir VPC gerbang publik. Untuk informasi selengkapnya tentang cara mendapatkan titik akhir, lihat Bagaimana cara mendapatkan titik akhir instans KMS?

    Jika Anda menggunakan pasangan AccessKey untuk autentikasi, ganti konfigurasi berikut:

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

    dengan konfigurasi berikut:

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

    Nacos SDK untuk Java mendukung berbagai kredensial akses untuk konfigurasi terenkripsi, seperti token Security Token Service (STS) dan Nama Sumber Daya Alibaba Cloud (ARN) dari peran RAM. Untuk informasi selengkapnya tentang kredensial akses yang didukung dan metode konfigurasi klien, lihat Kredensial akses yang didukung untuk enkripsi konfigurasi.

    Jika Anda mengaktifkan KMS setelah 31 Maret 2022 dan ingin menerbitkan konfigurasi terenkripsi dari SDK, tambahkan kode berikut:

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

    Ganti parameter serverAddr, ramRoleName, accessKey, secretKey, kmsEndpoint, dataId, group, dan keyId dalam kode dengan parameter layanan aktual Anda.

    Gunakan framework Spring Cloud Nacos Config
    Catatan
    • Jika Anda menggunakan Spring Cloud Alibaba 2022.x atau 2023.x, tingkatkan versinya ke 2023.0.1.2.

    • Jika Anda menggunakan Spring Cloud Alibaba 2021.x, tingkatkan versinya ke 2021.0.6.1.

    • Jika Anda menggunakan Spring Cloud Alibaba 2.x, tingkatkan versinya ke 2.2.10.

    • Pastikan pemetaan versi antara Spring Cloud Alibaba, Spring Cloud, dan Spring Boot benar. Untuk informasi selengkapnya tentang pemetaan versi, lihat catatan rilis untuk cabang terkait di situs resmi Spring Cloud Alibaba.

    Jika Anda menggunakan framework Spring Cloud Nacos Config untuk mengambil konfigurasi, tambahkan konfigurasi berikut.

    spring.cloud.nacos.config.server-addr={serverAddr}
    spring.config.import=nacos:{dataId}?group={group}&refreshEnabled=true
    # Konfigurasikan peran RAM instans ECS sebagai kredensial akses.
    spring.cloud.nacos.config.ramRoleName={ramRoleName}
    spring.cloud.nacos.config.kmsEndpoint={kmsEndpoint}

    Parameter kmsEndpoint menentukan titik akhir instans KMS. Jika aplikasi dan instans KMS berada dalam VPC yang sama, atur parameter ini ke titik akhir VPC instans tersebut. Jika Anda mengakses instans KMS melalui Internet, atur parameter ini ke titik akhir publik atau titik akhir VPC gerbang publik. Untuk informasi selengkapnya tentang cara mendapatkan titik akhir, lihat Bagaimana cara mendapatkan titik akhir instans KMS?

    Jika Anda menggunakan pasangan AccessKey untuk autentikasi, ganti konfigurasi berikut:

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

    dengan konfigurasi berikut:

    spring.cloud.nacos.config.accesskey={accessKey}
    spring.cloud.nacos.config.secretkey={secretKey}
    
    # Jika pasangan AccessKey digunakan untuk mengakses instans Nacos Anda, kami menyarankan agar Anda menentukan pasangan AccessKey menggunakan parameter JVM atau variabel lingkungan karena kekhususan parameter tersebut.
    # Parameter JVM
    -Dspring.cloud.nacos.config.accessKey={accessKey}
    -Dspring.cloud.nacos.config.secretKey={secretKey}
    # Variabel lingkungan
    spring_cloud_nacos_config_accessKey={accessKey}
    spring_cloud_nacos_config_secretKey={secretKey}

    Nacos SDK untuk Java mendukung berbagai kredensial akses untuk konfigurasi terenkripsi, seperti token Security Token Service (STS) dan Nama Sumber Daya Alibaba Cloud (ARN) dari peran RAM. Untuk informasi selengkapnya tentang kredensial akses yang didukung dan metode konfigurasi klien, lihat Kredensial akses yang didukung untuk enkripsi konfigurasi.

    Jika Anda mengaktifkan KMS setelah 31 Maret 2022 dan ingin menerbitkan konfigurasi terenkripsi dari SDK, tambahkan konfigurasi berikut:

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

    Ganti parameter serverAddr, ramRoleName, accessKey, secretKey, kmsEndpoint, dataId, group, dan keyId dalam kode dengan parameter layanan aktual Anda.

    Deskripsi parameter

    Pastikan parameter berikut diatur dengan benar.

    Parameter

    Deskripsi

    serverAddr

    Titik akhir kluster MSE. Contoh: mse-*****.nacos-ans.mse.aliyuncs.com.

    ramRoleName

    Peran RAM yang disambungkan ke instans ECS atau kluster ACK.

    accessKey, secretKey

    ID AccessKey dan Rahasia AccessKey akun Alibaba Cloud Anda.

    Anda dapat menentukan salah satu dari parameter ramRoleName atau parameter accessKey dan secretKey.

    kmsEndpoint

    Titik akhir instans KMS. Jika lingkungan akses dan instans KMS berada dalam VPC yang sama, nilai kmsEndpoint adalah titik akhir VPC instans tersebut. Jika Anda mengakses instans KMS melalui Internet, nilai kmsEndpoint adalah titik akhir publik atau titik akhir VPC gerbang publik. Untuk informasi selengkapnya tentang cara mendapatkan titik akhir, lihat Bagaimana cara mendapatkan titik akhir instans KMS?

    dataId

    ID data konfigurasi terenkripsi. Contoh: cipher-kms-aes-256-****.properties.

    group

    Nama grup konfigurasi terenkripsi.

    keyId

    ID kunci KMS yang digunakan untuk mengenkripsi konfigurasi. Anda dapat membuat dan menggunakan kunci KMS di Konsol KMS.

    Contoh: alia/*** atau key-***.

Gunakan konfigurasi terenkripsi di Nacos SDK untuk Go

  1. Jalankan perintah go get untuk mengunduh dependensi Nacos Client Go SDK.

    go get -u github.com/nacos-group/nacos-sdk-go/v2@v2.2.8
  2. Ubah konfigurasi inisialisasi klien Nacos.

    Nacos SDK untuk Go hanya mendukung penggunaan pasangan AccessKey sebagai kredensial untuk mengakses instans KMS. Dalam kode, ganti parameter serverAddr, accessKey, secretKey, dan kmsEndpoint dengan parameter bisnis Anda dan pastikan parameter OpenKMS: true diatur untuk mengaktifkan enkripsi konfigurasi.

    sc := []constant.ServerConfig{
      {
        IpAddr: "{serverAddr}", // Ganti nilai dengan titik akhir instans MSE Anda.
        Port:   8848,
      },
    }
    var accessKey = "{accessKey}" 
    var secretKey = "{secretKey}" 
    
    cc := constant.ClientConfig{
      NamespaceId:         "public", // ID namespace.
      OpenKMS:              true, // Aktifkan enkripsi berbasis KMS untuk konfigurasi.
      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,
    }

    Parameter kmsEndpoint menentukan titik akhir instans KMS. Jika aplikasi dan instans KMS berada dalam VPC yang sama, atur parameter ini ke titik akhir VPC instans tersebut. Jika Anda mengakses instans KMS melalui Internet, atur parameter ini ke titik akhir publik atau titik akhir VPC gerbang publik. Untuk informasi selengkapnya tentang cara mendapatkan titik akhir, lihat Bagaimana cara mendapatkan titik akhir instans KMS?

  3. Terbitkan konfigurasi terenkripsi.

    keyId: ID kunci KMS yang digunakan untuk enkripsi konfigurasi.

    configParam := vo.ConfigParam{
        DataId:   "{dataId}",
        Group:    "{group}",
        Content:  "content",
        KmsKeyId: "{keyId}",  // ID kunci KMS yang digunakan untuk mengenkripsi konfigurasi. Anda dapat membuat dan menggunakan kunci KMS di Konsol KMS.
    }
    
    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)
    }
Deskripsi parameter

Pastikan parameter berikut diatur dengan benar.

Parameter

Deskripsi

serverAddr

Titik akhir kluster MSE. Contoh: mse-*****.nacos-ans.mse.aliyuncs.com.

accessKey, secretKey

ID AccessKey dan Rahasia AccessKey pengguna RAM.

kmsEndpoint

Titik akhir instans KMS. Jika lingkungan akses dan instans KMS berada dalam VPC yang sama, nilai kmsEndpoint adalah titik akhir VPC instans tersebut. Jika Anda mengakses instans KMS melalui Internet, nilai kmsEndpoint adalah titik akhir publik atau titik akhir VPC gerbang publik. Untuk informasi selengkapnya tentang cara mendapatkan titik akhir, lihat Bagaimana cara mendapatkan titik akhir instans KMS?

dataId

ID data konfigurasi terenkripsi. Contoh: cipher-kms-aes-256-****.properties.

group

Nama grup konfigurasi terenkripsi.

keyId

ID kunci KMS yang digunakan untuk mengenkripsi konfigurasi. Anda dapat membuat dan menggunakan kunci KMS di Konsol KMS.

Contoh: alia/*** atau key-***.

Kredensial akses yang didukung untuk enkripsi konfigurasi

Nacos SDK untuk Java mendukung berbagai jenis kredensial akses untuk enkripsi konfigurasi. Anda dapat memilih metode inisialisasi penyedia kredensial berdasarkan persyaratan autentikasi dan otorisasi skenario Anda.

Nacos SDK untuk Java mendukung jenis kredensial akses berikut:

Untuk informasi selengkapnya tentang cara mengonfigurasi kredensial akses pada klien, lihat bagian pusat konfigurasi di Autentikasi akses klien Nacos. Berikan izin yang diperlukan kepada kredensial akses dengan memilih kebijakan sistem berikut. Operasi ini merupakan otorisasi kasar yang memberikan izin baca dan tulis pada semua instans KMS.

Nama kebijakan akses

Deskripsi

AliyunKMSFullAccess

Izin untuk mengelola KMS. Pengguna RAM yang diberikan kebijakan ini memiliki izin untuk melakukan semua operasi pada semua fitur, yang setara dengan izin akun Alibaba Cloud.

FAQ

Bagaimana cara mengonfigurasi parameter jika KMS Bersama yang diaktifkan sebelum 31 Maret 2022 digunakan?

Jika Anda mengaktifkan KMS Bersama sebelum 31 Maret 2022, Anda hanya perlu mengganti parameter kmsEndpoint dengan kmsRegionId dalam konfigurasi di atas. Parameter kmsRegionId menentukan wilayah tempat instans KMS berada, seperti cn-hangzhou. Ubah konfigurasi klien berdasarkan framework yang Anda gunakan.

Gunakan konfigurasi terenkripsi di klien Nacos untuk SDK Java

Ganti konfigurasi berikut dalam kode:

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

Ganti dengan

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

Gunakan konfigurasi terenkripsi menggunakan framework Spring Cloud Nacos Config untuk SDK Java

Ganti konfigurasi berikut dalam file konfigurasi:

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

dengan konfigurasi berikut:

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

Gunakan konfigurasi terenkripsi di SDK Go

Dalam ClientConfig, konfigurasikan parameter RegionId. Ganti konfigurasi berikut:

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

Ganti dengan

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

Bagaimana cara mendapatkan titik akhir instans KMS?

  • Jika aplikasi Anda dan instans KMS berada dalam VPC yang sama, gunakan titik akhir VPC yang ditampilkan di halaman manajemen instans KMS sebagai nilai untuk kmsEndpoint.image

  • Jika Anda mengakses instans KMS melalui Internet, Anda harus mengaktifkan akses publik untuk UID yang sesuai di halaman manajemen instans KMS.

    image

    image

  • Jika aplikasi Anda berada dalam VPC Alibaba Cloud, gunakan titik akhir VPC gerbang publik sebagai nilai untuk kmsEndpoint.

Pemecahan Masalah

Pemecahan masalah kesalahan umum

Lakukan pemeriksaan berikut untuk memecahkan masalah kesalahan:

  • Pastikan lingkungan runtime aplikasi dapat mengakses titik akhir VPC dari instans MSE dan KMS.

    Catatan

    Instans MSE dan instans KMS tidak perlu saling mengakses melalui jaringan.

  • Periksa apakah Anda menggunakan KMS v1.0 atau v3.0. Jika Anda menggunakan KMS v1.0, Anda harus telah mengaktifkan KMS sebelum 31 Maret 2022.

    Catatan

    Jika Anda mengaktifkan KMS setelah 31 Maret 2022, Anda harus membeli KMS Spesifikasi Khusus. Fitur enkripsi KMS 1.0 tidak lagi tersedia untuk pengguna baru.

  • Pastikan versi klien Nacos sesuai dengan versi plugin enkripsi dan dekripsi. Untuk informasi selengkapnya, lihat panduan versi dalam topik ini.

Pemecahan masalah isu SDK Nacos Java

Kata kunci pengecualian dalam log Nacos

Penyebab

keyId is not set up yet

Parameter inisialisasi keyId kosong atau tidak ditentukan.

Forbidden.KeyNotFound : The specified Key is not found.

ID kunci yang ditentukan oleh parameter inisialisasi keyId tidak ada dalam instans KMS.

kmsEndpoint is empty

Parameter inisialisasi kmsEndpoint kosong.

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

Jaringan yang ditentukan oleh parameter inisialisasi kmsEndpoint tidak dapat dijangkau.

kmsPasswordKey is empty

Parameter inisialisasi kmsPasswordKey kosong.

keystore password was incorrect

Parameter inisialisasi kmsPasswordKey salah.

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

Parameter inisialisasi kmsVersion tidak ditentukan sebagai v3.0.

None of the TrustManagers trust this certificate chain

  1. Parameter inisialisasi kmsVersion tidak ditentukan sebagai v3.0.

  2. Parameter inisialisasi kmsCaFilePath kosong.

kmsClientKeyFilePath is empty

Parameter inisialisasi kmsClientKeyFilePath kosong.

unable to find valid certification path to requested target

File yang ditentukan oleh parameter inisialisasi kmsCaFilePath tidak ditemukan.

Referensi