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
Mesin Nacos Edisi Developer, Edisi Profesional, atau Edisi Serverless telah dibuat.
Anda telah mengaktifkan Key Management Service (KMS).
Instans KMS telah dibeli dan diaktifkan. Versi gambar instans KMS harus dkms-3.0.0 atau yang lebih baru. Untuk informasi selengkapnya, lihat Membeli dan mengaktifkan instans KMS dan Tingkatkan versi gambar instans KMS.
Kunci telah dibuat. Untuk informasi selengkapnya, lihat Memulai dengan kunci.
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.
Masuk ke Konsol MSE, lalu pilih wilayah di bilah navigasi atas.
Di panel navigasi sebelah kiri, pilih Microservices Registry > Instances.
Di halaman Instances, klik nama instans.
Di panel navigasi sebelah kiri, pilih Configuration Management > Configurations.
Di pojok kiri atas halaman Configurations, pilih namespace dari daftar drop-down Namespace, lalu klik Add Configuration.
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.
PentingJika 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.
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
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
PentingMasalah stabilitas dapat terjadi jika versi plugin enkripsi dan dekripsi tidak sesuai dengan versi klien Nacos. Kami menyarankan agar Anda menggunakan versi yang direkomendasikan.
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
CatatanJika 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/***ataukey-***.
Gunakan konfigurasi terenkripsi di Nacos SDK untuk Go
Jalankan perintah
go getuntuk mengunduh dependensiNacos Client Go SDK.go get -u github.com/nacos-group/nacos-sdk-go/v2@v2.2.8Ubah 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: truediatur 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?
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: |
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: |
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: |
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.

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


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.
CatatanInstans MSE dan instans KMS tidak perlu saling mengakses melalui jaringan.
Periksa apakah Anda menggunakan KMS
v1.0atauv3.0. Jika Anda menggunakan KMS v1.0, Anda harus telah mengaktifkan KMS sebelum 31 Maret 2022.CatatanJika 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 |
| Parameter inisialisasi |
| ID kunci yang ditentukan oleh parameter inisialisasi |
| Parameter inisialisasi |
| Jaringan yang ditentukan oleh parameter inisialisasi |
| Parameter inisialisasi |
| Parameter inisialisasi |
| Parameter inisialisasi |
|
|
| Parameter inisialisasi |
| File yang ditentukan oleh parameter inisialisasi |