Data konfigurasi di Microservices Registry dari Microservices Engine (MSE) disimpan dalam bentuk teks biasa. MSE terintegrasi dengan Key Management Service (KMS) untuk memungkinkan Anda mengenkripsi dan mendekripsi data konfigurasi, seperti sumber data, token, username, dan password, sehingga membantu mengurangi risiko kebocoran data sensitif.
Prasyarat
Sebuah engine Nacos yang menggunakan Edisi Developer, Edisi Profesional, atau Edisi Serverless telah dibuat. Untuk informasi selengkapnya, lihat Buat instans.
-
Key Management Service (KMS) telah diaktifkan.
Instans KMS telah dibeli dan diaktifkan. Versi gambar instans KMS lebih baru dari dkms-3.0.0. Untuk informasi selengkapnya, lihat Beli dan aktifkan instans KMS dan Tingkatkan versi gambar instans KMS.
Kunci telah dibuat. Untuk informasi selengkapnya, lihat Memulai manajemen kunci.
Untuk memastikan keamanan data, MSE menggunakan Alibaba Cloud KMS untuk mengenkripsi dan mendekripsi data. KMS mencakup Shared KMS dan Dedicated KMS. Shared KMS tidak lagi tersedia. Untuk informasi selengkapnya, lihat [Pengumuman] EOFS dan EOS untuk Shared KMS. Jika Anda menggunakan Shared KMS, kami menyarankan agar Anda meningkatkan ke Dedicated KMS. Jika Anda mengaktifkan KMS setelah 31 Maret 2022, Anda harus membeli Dedicated KMS. Untuk informasi selengkapnya, lihat [Pengumuman Peningkatan] KMS ditingkatkan menjadi Dedicated KMS. Informasi tentang penagihan KMS tersedia di Penagihan KMS 1.0.
Topik ini menggunakan instans Dedicated KMS. Jika Anda mengaktifkan Shared KMS sebelum 31 Maret 2022, lihat FAQ.
Buat konfigurasi terenkripsi
Untuk membuat konfigurasi terenkripsi di Konsol MSE, lakukan langkah-langkah berikut:
-
Masuk ke Konsol MSE, lalu pilih wilayah di bilah navigasi atas.
-
Di panel navigasi kiri, pilih Microservices Registry > Instances.
-
Di halaman Instances, klik nama instans.
-
Di panel navigasi 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. Lalu, aktifkan sakelar Data Encryption dan pilih KMS Key. Jika Anda belum membuat KMS Key, klik Create. Anda dapat membuat kunci di Konsol Key Management Service. Setelah membuat kunci, refresh panel Create Configuration untuk menampilkan kunci KMS baru.
PentingJika Anda mengaktifkan Dedicated KMS setelah 31 Maret 2022, Anda harus memilih ID kunci yang digunakan untuk enkripsi dan mengaitkan kunci tersebut dengan instans MSE Nacos. Dengan demikian, semua konfigurasi selanjutnya akan dienkripsi menggunakan kunci tersebut.
Jika Anda mengaktifkan KMS sebelum 31 Maret 2022, prompt untuk mengikat ID kunci instans Dedicated KMS tidak ditampilkan dan Anda dapat menggunakan Shared KMS. Metode konfigurasi aplikasi untuk mengakses Shared KMS berbeda.
Untuk pengguna yang menggunakan Dedicated KMS, KMS AES-256 ditampilkan. Untuk pengguna yang menggunakan Shared KMS, tiga metode enkripsi ditampilkan demi kompatibilitas versi. Kami menyarankan agar Anda tidak memilih KMS atau KMS AES-128.
KMS AES-256: Metode enkripsi dan dekripsi amplop dari KMS. Metode ini menggunakan kunci 256-bit dengan kekuatan enkripsi tinggi. Konten konfigurasi terenkripsi tidak boleh melebihi 50 KB. Data konfigurasi dalam teks biasa tidak dikirimkan ke KMS. Kami menyarankan Anda memilih opsi ini untuk keamanan yang lebih tinggi. Pilih metode enkripsi berdasarkan kebutuhan bisnis Anda.
KMS AES-128: Metode enkripsi yang menggunakan kunci 128-bit dengan kekuatan enkripsi menengah. Konten konfigurasi terenkripsi tidak boleh melebihi 50 KB.
KMS: Kami menyarankan agar Anda tidak memilih opsi ini karena karakter khusus dapat menyebabkan masalah kompatibilitas. Misalnya,
ampersand (&)di-escape menjadi\u0026. Konten konfigurasi terenkripsi tidak boleh melebihi 6 KB.
Setelah pengikatan dilakukan, Anda tidak dapat mengubah kunci tersebut. Jika Anda menghapus kunci, Anda tidak dapat mengakses konfigurasi terenkripsi.
Di bagian Configuration Format, pilih format data, masukkan konten konfigurasi di editor 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>Deskripsi versi
Versi utama klien Nacos
Versi klien Nacos
Versi plugin yang direkomendasikan
1.x
V1.4.3 atau lebih baru
V1.0.6 atau lebih baru
2.x
V2.1.1 atau lebih baru
V1.0.6 atau 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.
-
Pilih kode valid yang ingin Anda konfigurasi berdasarkan jenis framework yang Anda gunakan.
Gunakan framework klien Nacos
Jika Anda menggunakan framework klien Nacos untuk mendapatkan konfigurasi, Anda harus mengonfigurasi kode contoh berikut.
try { Properties properties = new Properties(); // Alamat server Nacos Anda. properties.put("serverAddr", "{serverAddr}"); // Konfigurasikan role 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(); }kmsEndpoint menunjukkan titik akhir instans KMS. Jika lingkungan akses dan instans KMS berada dalam VPC yang sama, nilai kmsEndpoint adalah titik akhir VPC dari instans tersebut. Jika Anda mengakses instans KMS melalui Internet, nilai kmsEndpoint adalah titik akhir publik atau titik akhir VPC dari gerbang publik. Untuk informasi selengkapnya tentang cara mendapatkan titik akhir, lihat Bagaimana cara mendapatkan titik akhir instans KMS?
Jika Anda menggunakan pasangan AccessKey sebagai kredensial untuk mengakses instans KMS, ganti konfigurasi berikut:
properties.put("ramRoleName", "{ramRoleName}");Dengan konfigurasi berikut:
properties.put("accessKey", "{accessKey}"); properties.put("secretKey", "{secretKey}");Nacos SDK untuk Java dapat menggunakan konfigurasi terenkripsi dengan berbagai kredensial akses, seperti token Security Token Service (STS) dan Nama Sumber Daya Alibaba Cloud (ARN) dari role RAM. Untuk informasi selengkapnya tentang kredensial akses yang didukung dan metode konfigurasi klien, lihat Kredensial akses yang didukung untuk enkripsi konfigurasi Nacos SDK untuk Java.
Jika KMS Anda diaktifkan setelah 31 Maret 2022 dan Anda ingin merilis konfigurasi terenkripsi di 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.
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 versi Spring Cloud Alibaba, Spring Cloud, dan Spring Boot kompatibel. Untuk informasi selengkapnya tentang kompatibilitas versi, lihat catatan rilis di situs web resmi Spring Cloud Alibaba.
Jika Anda menggunakan framework Spring Cloud Nacos Config untuk mendapatkan konfigurasi, Anda harus menambahkan konfigurasi berikut:
spring.cloud.nacos.config.server-addr={serverAddr} spring.config.import=nacos:{dataId}?group={group}&refreshEnabled=true # Gunakan role RAM instans ECS sebagai kredensial akses. spring.cloud.nacos.config.ramRoleName={ramRoleName} spring.cloud.nacos.config.kmsEndpoint={kmsEndpoint}kmsEndpoint menunjukkan titik akhir instans KMS. Jika lingkungan akses dan instans KMS berada dalam VPC yang sama, nilai kmsEndpoint adalah titik akhir VPC dari instans tersebut. Jika Anda mengakses instans KMS melalui Internet, nilai kmsEndpoint adalah titik akhir publik atau titik akhir VPC dari gerbang publik. Untuk informasi selengkapnya tentang cara mendapatkan titik akhir, lihat Bagaimana cara mendapatkan titik akhir instans KMS?
Jika Anda menggunakan pasangan AccessKey sebagai kredensial untuk mengakses instans KMS, 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 Anda menggunakan pasangan AccessKey untuk mengakses Nacos, kami sarankan menentukannya # menggunakan parameter JVM atau variabel lingkungan karena sifatnya yang sensitif. # 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 dapat menggunakan konfigurasi terenkripsi dengan berbagai kredensial akses, seperti token Security Token Service (STS) dan Nama Sumber Daya Alibaba Cloud (ARN) dari role RAM. Untuk informasi selengkapnya tentang kredensial akses yang didukung dan metode konfigurasi klien, lihat Kredensial akses yang didukung untuk enkripsi konfigurasi Nacos SDK untuk Java.
Jika KMS Anda diaktifkan setelah 31 Maret 2022 dan Anda ingin merilis konfigurasi terenkripsi di SDK, tambahkan kode berikut:
spring.cloud.nacos.config.keyId={keyId}Ganti parameter serverAddr, ramRoleName, accessKey, secretKey, kmsEndpoint, dataId, group, dan keyId dalam kode dengan parameter layanan aktual.
Deskripsi
Tabel berikut menjelaskan parameter tersebut. Pastikan nilai yang Anda konfigurasikan valid.
Parameter
Deskripsi
serverAddr
Alamat IP instans MSE Anda. Contoh:
mse-*****.nacos-ans.mse.aliyuncs.com.ramRoleName
Role RAM yang ditetapkan ke instans ECS atau kluster ACK.
accessKey dan secretKey
ID AccessKey dan Rahasia AccessKey dari Akun Alibaba Cloud saat ini.
Anda harus menentukan parameter accessKey dan secretKey. Jika tidak, Anda harus menentukan parameter ramRoleName.
kmsEndpoint
Titik akhir instans KMS. Jika lingkungan akses dan instans KMS berada dalam VPC yang sama, nilai kmsEndpoint adalah titik akhir VPC dari instans tersebut. Jika Anda mengakses instans KMS melalui Internet, nilai kmsEndpoint adalah titik akhir publik atau titik akhir VPC dari 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 dependensi diNacos client SDK for Go.go get -u github.com/nacos-group/nacos-sdk-go/v2@v2.2.8-
Ubah konfigurasi awal klien Nacos.
Di Nacos SDK untuk Go, hanya pasangan AccessKey yang dapat digunakan sebagai kredensial untuk mengakses instans KMS. Ganti parameter serverAddr, accessKey, secretKey, dan kmsEndpoint dalam kode dengan parameter yang digunakan dalam bisnis Anda dan pastikan parameter
OpenKMSdiatur ke true untuk enkripsi konfigurasi.sc := []constant.ServerConfig{ { IpAddr: "{serverAddr}", // Ganti dengan titik akhir instans MSE Anda. Port: 8848, }, } var accessKey = "{accessKey}" var secretKey = "{secretKey}" cc := constant.ClientConfig{ NamespaceId: "public", // ID namespace. OpenKMS: true, // Aktifkan KMS untuk enkripsi 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, }kmsEndpoint menunjukkan titik akhir instans KMS. Jika lingkungan akses dan instans KMS berada dalam VPC yang sama, nilai kmsEndpoint adalah titik akhir VPC dari instans tersebut. Jika Anda mengakses instans KMS melalui Internet, nilai kmsEndpoint adalah titik akhir publik atau titik akhir VPC dari gerbang publik. Untuk informasi selengkapnya tentang cara mendapatkan titik akhir, lihat Bagaimana cara mendapatkan titik akhir instans KMS?
-
Publikasikan konfigurasi terenkripsi.
keyId: ID kunci KMS yang digunakan untuk mengenkripsi konfigurasi.configParam := vo.ConfigParam{ DataId: "{dataId}", Group: "{group}", Content: "content", KmsKeyId: "{keyId}", // ID kunci KMS untuk enkripsi. Anda dapat membuat dan menggunakan kunci 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) }
Parameter
Tabel berikut menjelaskan parameter tersebut. Pastikan nilai yang Anda konfigurasikan valid.
Parameter | Deskripsi |
serverAddr | Alamat IP instans MSE Anda. Contoh: |
accessKey dan secretKey | ID AccessKey dan Rahasia AccessKey dari Pengguna RAM. |
kmsEndpoint | Titik akhir instans KMS. Jika lingkungan akses dan instans KMS berada dalam VPC yang sama, nilai kmsEndpoint adalah titik akhir VPC dari instans tersebut. Jika Anda mengakses instans KMS melalui Internet, nilai kmsEndpoint adalah titik akhir publik atau titik akhir VPC dari 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
Nacos SDK untuk Java mendukung berbagai kredensial akses untuk mengenkripsi konfigurasi. Anda dapat memilih metode untuk menginisialisasi penyedia kredensial berdasarkan persyaratan otentikasi dan otorisasi skenario bisnis Anda.
Kredensial akses yang didukung:
Untuk informasi selengkapnya tentang cara mengonfigurasi kredensial akses di klien, lihat bagian "Konfigurasi kredensial akses di klien" dalam Otentikasi akses oleh klien Nacos. Pilih kebijakan sistem berikut untuk memberikan izin terkait pada kredensial akses. Dengan demikian, operasi otorisasi kasar dilakukan untuk memberikan izin baca dan tulis pada semua instans KMS.
Kebijakan | Catatan |
AliyunKMSFullAccess | Izin yang diperlukan untuk mengelola KMS. Anda dapat menggunakan role RAM yang kebijakan ini dilampirkan untuk mengelola semua fitur dengan cara yang sama seperti menggunakan Akun Alibaba Cloud untuk mengelola KMS. |
FAQ
Bagaimana cara mengonfigurasi parameter jika menggunakan Shared KMS yang diaktifkan sebelum 31 Maret 2022?
Jika Anda mengaktifkan Shared KMS sebelum 31 Maret 2022, Anda hanya perlu mengganti parameter kmsEndpoint dengan kmsRegionId. kmsRegionId menunjukkan wilayah tempat instans KMS berada, seperti cn-hangzhou. Lakukan langkah-langkah berikut untuk mengubah konfigurasi klien berdasarkan framework yang Anda gunakan.
Gunakan konfigurasi terenkripsi di Nacos client SDK untuk Java
Ganti konfigurasi berikut dalam kode:
properties.put("kmsEndpoint", "{kmsEndpoint}");Dengan konfigurasi berikut:
properties.put("kms_region_id", "{kmsRegionId}");Gunakan konfigurasi terenkripsi dengan framework Spring Cloud Nacos Config di Nacos SDK untuk Java
Ganti konfigurasi berikut dalam kode:
spring.cloud.nacos.config.kmsEndpoint={kmsEndpoint}Dengan konfigurasi berikut:
spring.cloud.nacos.config.kms_region_id={kmsRegionId}Gunakan konfigurasi terenkripsi di Nacos SDK untuk Go
Tambahkan parameter RegionId di ClientConfig. Ganti konfigurasi berikut dalam kode:
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,
}Dengan konfigurasi berikut:
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 lingkungan akses dan instans KMS berada dalam VPC yang sama, atur
kmsEndpointke titik akhir VPC dari instans tersebut. Di Konsol KMS, buka halaman Instance Management, klik instans target untuk melihat detailnya, dan dapatkan VPC endpoint of the instance dari bagian Basic Information. -
Jika Anda mengakses instans KMS melalui Internet, Anda harus mengaktifkan sakelar Internet Access Status di halaman detail instans KMS.
Setelah akses publik diaktifkan, titik akhir publik gerbang publik adalah
kms.cn-hangzhou.aliyuncs.com, dan titik akhir VPC gerbang publik adalahkms-vpc.cn-hangzhou.aliyuncs.com. Akses publik memerlukan SDK KMS, dan batas performa untuk enkripsi dan dekripsi simetris adalah 750 operasi per detik. Kami menyarankan agar Anda mengonfigurasi kebijakan kontrol akses granular untuk meningkatkan keamanan. Jika Anda mengakses instans KMS melalui VPC, nilai kmsEndpoint adalah titik akhir VPC dari gerbang publik.
FAQ
Pemecahan masalah error umum
Lakukan langkah-langkah berikut:
Periksa apakah lingkungan runtime aplikasi dapat terhubung ke VPC tempat instans MSE berada dan VPC tempat instans KMS berada.
CatatanAnda tidak perlu memastikan konektivitas antara instans MSE dan instans KMS.
Periksa apakah menggunakan KMS
V1.0atauV3.0. Jika menggunakan KMS V1.0, Anda harus memastikan bahwa KMS diaktifkan sebelum 31 Maret 2022.CatatanJika Anda mengaktifkan KMS setelah 31 Maret 2022, Anda harus membeli Dedicated KMS. Fitur enkripsi KMS V1.0 tidak lagi tersedia untuk pengguna baru.
Periksa apakah versi klien Nacos sesuai dengan versi plugin enkripsi dan dekripsi. Untuk informasi selengkapnya, lihat deskripsi versi dalam topik ini.
Pemecahan masalah isu Nacos SDK untuk Java
Kata kunci stack exception di log Nacos | Penyebab |
| Parameter inisialisasi |
| ID kunci yang ditentukan oleh parameter inisialisasi |
| Parameter inisialisasi |
| Titik akhir yang ditentukan oleh parameter inisialisasi |
| Parameter inisialisasi |
| Nilai parameter inisialisasi |
| Parameter inisialisasi |
|
|
| Parameter inisialisasi |
| File yang ditentukan oleh parameter inisialisasi |