All Products
Search
Document Center

Microservices Engine:Otentikasi akses klien Nacos

Last Updated:Jul 10, 2026

Aktifkan otentikasi untuk instans Nacos di Microservices Engine (MSE) guna mencegah akses atau modifikasi data instans oleh pihak yang tidak berwenang. Anda dapat mengonfigurasi akses terotorisasi untuk instans Nacos dan mengotentikasi akses dari klien Nacos.

Prasyarat

Metode akses

Anda dapat mengonfigurasi otentikasi dengan menggunakan metode direct engine connection. Setelah otorisasi, klien Nacos dapat mengakses instans MSE Nacos dengan Pengguna RAM atau Peran RAM.

  • Direct engine connection: Akses engine Nacos secara langsung dengan SDK atau client. Metode ini digunakan untuk akses programatik.

  • Console-based engine connection: Kelola dan pantau engine Nacos di MSE console. Untuk detail tentang pemberian akses Pengguna RAM ke MSE console, lihat otorisasi pusat registrasi dan konfigurasi.

Aktifkan otentikasi

Penting
  • Secara default, otentikasi dinonaktifkan untuk engine Nacos baru, artinya engine tersebut merespons semua permintaan.

  • Fitur login pada konsol Nacos open source hanya mencatat informasi pengguna dan tidak melakukan otentikasi atau mengintersepsi permintaan. Setelah Anda mengaktifkan otentikasi untuk instans Nacos, Anda tidak dapat lagi mengaksesnya melalui konsol Nacos open source dan harus menggunakan MSE console.

  • Untuk Nacos 2.x dan versi-versi tertentu setelahnya yang tidak mendukung modifikasi kata sandi konsol: setelah Anda mengaktifkan otentikasi, Anda tidak dapat mengatur ulang atau memodifikasi kata sandi Nacos melalui MSE console. Anda harus menggunakan AccessKey (AK) dan SecretKey (SK) untuk mengonfigurasi otentikasi klien. Untuk informasi lebih lanjut, lihat Metode 6: Gunakan AccessKey dalam topik ini.

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

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

  3. Pada halaman Instances, klik nama instans.

  4. Di panel navigasi kiri, klik parameter settings. Pada halaman tersebut, klik Edit.

  5. Pilih parameter ConfigAuthEnabled atau NamingAuthEnabled, klik Yes pada kolom Value untuk parameter tersebut, lalu klik Save and Restart Instance.

    Penting
    • Sebelum mengaktifkan otentikasi untuk pusat konfigurasi atau registri, Anda harus mengonfigurasi kredensial akses pada klien. Jika tidak, klien tidak dapat memperoleh konfigurasi atau layanan. Untuk informasi lebih lanjut, lihat Konfigurasikan kredensial akses pada klien.

    • Kedua parameter ini berfungsi secara independen satu sama lain, dan masing-masing mengontrol modulnya sendiri.

    Parameter

    Deskripsi

    ConfigAuthEnabled

    Mengaktifkan otentikasi untuk pusat konfigurasi. Didukung oleh instans Edisi Dasar V1.2.1 dan versi lebih baru, serta semua versi Edisi Profesional dan Edisi Developer.

    NamingAuthEnabled

    Mengaktifkan otentikasi untuk registri. Didukung oleh instans Edisi Profesional atau Edisi Developer V2.0.4 dan versi lebih baru.

Konfigurasikan kredensial klien

MSE Nacos mendukung beberapa metode inisialisasi penyedia kredensial. Pilih metode yang paling sesuai dengan kebutuhan Anda.

Metode inisialisasi

Skenario

Prasyarat

Kredensial dasar

Masa berlaku

Rotasi dan penyegaran

Metode 1: Gunakan peran RAM ECS

Aplikasi yang dideploy pada sumber daya komputasi Alibaba Cloud, seperti instans Elastic Compute Service (ECS), instans Elastic Container Instance (ECI), atau node pekerja di Container Service for Kubernetes (ACK).

Tidak

Token STS

Temporary

Automatic refresh

Metode 2: Gunakan OIDC role ARN

Aplikasi tidak tepercaya yang dideploy pada node pekerja di Container Service for Kubernetes (ACK).

Tidak

Token STS

Temporary

Automatic refresh

Metode 3: Gunakan token STS

Aplikasi di lingkungan tidak tepercaya yang memerlukan kontrol atas masa berlaku kredensial dan izin akses.

Ya

Token STS

Temporary

Manual refresh

Metode 4: Gunakan URI kredensial

Aplikasi yang memperoleh kredensial dari sistem eksternal.

Tidak

Token STS

Temporary

Automatic refresh

Metode 5: Gunakan RAM role ARN

Aplikasi yang memerlukan akses delegasi ke layanan cloud, seperti untuk akses lintas akun.

Ya

Token STS

Temporary

Automatic refresh

Metode 6: Gunakan Access Key (AK)

Aplikasi di lingkungan aman yang memerlukan akses jangka panjang ke layanan cloud tanpa rotasi kredensial yang sering.

Ya

Access Key (AK)

Long-term

Manual rotation

Metode 7: Gunakan Access Key yang diputar secara otomatis

Aplikasi di lingkungan dengan risiko kompromi Access Key (AK), yang memerlukan rotasi kredensial yang sering untuk akses jangka panjang ke layanan cloud.

Tidak

Access Key (AK)

Long-term

Automatic rotation

Metode 1: Otentikasi dengan peran RAM

Asosiasikan peran RAM dengan instans ECS atau kluster ACK untuk memberikan aplikasi Anda akses ke MSE. Aplikasi melakukan otentikasi dengan menyediakan nama peran RAM ke klien Nacos, sehingga menghilangkan kebutuhan akan kredensial AccessKey statis. Anda dapat menentukan peran dan kebijakan berbeda untuk kontrol akses detail halus. Untuk informasi lebih lanjut, lihat Peran RAM untuk Instans ECS, Ikhtisar Otorisasi, dan Ikhtisar Peran RAM.

Catatan

Untuk menggunakan peran RAM dalam otentikasi, Anda harus mendeploy aplikasi ke instans ECS Alibaba Cloud atau kluster ACK dalam VPC. Untuk informasi lebih lanjut, lihat Apa itu ECS?, Apa itu ACK?, dan Apa itu VPC?.

Langkah 1: Buat peran RAM dan konfigurasikan kebijakan

Berikan akses instans ECS ke MSE
  1. (Opsional) Buat peran RAM yang menggunakan layanan Alibaba Cloud sebagai entitas tepercaya. Untuk informasi lebih lanjut, lihat Buat peran RAM untuk layanan Alibaba Cloud.

  2. Berikan izin kepada peran RAM dengan menyambungkan salah satu kebijakan sistem berikut. Kebijakan ini memberikan akses baca/tulis atau read-only kasar ke semua konfigurasi dan layanan instans Nacos. Untuk informasi lebih lanjut, lihat Berikan izin ke peran RAM.

    Nama kebijakan

    Deskripsi

    AliyunMSEFullAccess

    Memberikan izin manajemen MSE penuh. Pengguna RAM dengan kebijakan ini memiliki izin operasional yang sama dengan Akun Alibaba Cloud.

    AliyunMSEReadOnlyAccess

    Memberikan izin MSE read-only. Pengguna RAM dengan kebijakan ini dapat melihat semua resource MSE di bawah Akun Alibaba Cloud.

    Catatan
  3. Masuk ke ECS console. Di panel navigasi kiri, pilih Instances & Images > Instance.

  4. Di pojok kiri atas halaman, pilih wilayah dan kelompok sumber daya target.

    Sebagai contoh, pilih kelompok sumber daya dari daftar drop-down All Resources dan wilayah, seperti China (Hangzhou), dari pemilih wilayah.

  5. Temukan instans ECS yang ingin Anda kelola, lalu pilih image.png > Instance Settings > Attach/Detach RAM Role.

  6. Pada kotak dialog, pilih peran RAM instans yang telah Anda buat dan klik OK.

Berikan izin ke peran RAM worker ACK
Catatan

Saat Anda membuat kluster ACK, peran RAM worker dibuat secara otomatis. Anda dapat langsung memberikan izin ke peran ini tanpa membuat yang baru.

  1. Buat kebijakan kustom. Untuk informasi lebih lanjut, lihat Buat kebijakan kustom.

    • Untuk memberikan izin manajemen penuh MSE:

      {
          "Action": "mse:*",
          "Resource": "*",
          "Effect": "Allow"
      },
      {
          "Action": "ram:CreateServiceLinkedRole",
          "Resource": "*",
          "Effect": "Allow",
          "Condition": {
              "StringEquals": {
                  "ram:ServiceName": "mse.aliyuncs.com"
              }
          }
      }
    • Untuk memberikan izin read-only MSE:

      {
          "Action": [
              "mse:Query*",
              "mse:List*",
              "mse:Get*"
          ],
          "Resource": "*",
          "Effect": "Allow"
      },
      {
          "Action": "ram:CreateServiceLinkedRole",
          "Resource": "*",
          "Effect": "Allow",
          "Condition": {
              "StringEquals": {
                  "ram:ServiceName": "mse.aliyuncs.com"
              }
          }
      }
    Catatan

    Untuk memberikan izin detail halus untuk instans MSE tertentu, buat kebijakan kustom. Untuk informasi lebih lanjut, lihat Otentikasi detail halus untuk registri, Otentikasi detail halus untuk pusat konfigurasi, dan Contoh kebijakan kustom umum untuk registri dan pusat konfigurasi.

  2. Sambungkan kebijakan kustom ke peran RAM worker kluster. Untuk informasi lebih lanjut, lihat Berikan izin ke peran RAM worker kluster.

Langkah 2: Konfigurasikan otentikasi klien

Klien Nacos untuk Java

Jika Anda menggunakan klien Nacos untuk Java, konfigurasikan kode aplikasi Anda sebagai berikut.

Catatan

Untuk menggunakan peran RAM dalam otentikasi, tingkatkan klien Anda ke versi yang didukung. Untuk informasi lebih lanjut, lihat Versi klien Nacos yang mendukung otentikasi dan enkripsi/dekripsi.

properties.put(PropertyKeyConst.SERVER_ADDR, "${mse-nacos-instance-domain}");
properties.put(PropertyKeyConst.RAM_ROLE_NAME, "${roleName}");
// Registry
NamingService naming = NamingFactory.createNamingService(properties);
// Configuration center
ConfigService configService = ConfigFactory.createConfigService(properties);
Framework Spring Cloud Alibaba

Jika Anda menggunakan framework Spring Cloud Alibaba, tambahkan konfigurasi berikut ke file konfigurasi aplikasi Anda.

Catatan

Tingkatkan framework Spring Cloud Alibaba ke versi 2.2.9.RELEASE atau lebih baru.

Tingkatkan klien Nacos ke versi 2.2.0 atau lebih baru.

## Registry
spring.cloud.nacos.discovery.ramRoleName=${roleName}
## Configuration center
spring.cloud.nacos.config.ramRoleName=${roleName}
Framework Dubbo

Jika Anda menggunakan framework Dubbo, tambahkan parameter berikut ke URL registri dalam file konfigurasi Dubbo Anda.

Catatan

Tingkatkan klien Nacos ke versi 2.2.0 atau lebih baru.

dubbo.registry.address=nacos://${mse-nacos-instance-domain}:8848?ramRoleName=${roleName}
Go SDK

Jika Anda menggunakan klien Nacos untuk Go, konfigurasikan kode aplikasi Anda sebagai berikut.

Catatan

Versi 2.3.3 atau lebih baru direkomendasikan.

	// Create ServerConfig
	sc := []constant.ServerConfig{
		*constant.NewServerConfig("${mse-nacos-instance-domain}", 8848, constant.WithContextPath("/nacos")),
	}
	ramConfig := constant.RamConfig{
		RamRoleName: "${roleName}",
	}
	// Create ClientConfig
	cc := *constant.NewClientConfig(
		constant.WithNamespaceId(""),
		constant.WithTimeoutMs(5000),
		constant.WithNotLoadCacheAtStart(true),
		constant.WithLogDir("/tmp/nacos/log"),
		constant.WithCacheDir("/tmp/nacos/cache"),
		constant.WithRamConfig(&ramConfig),
	)
	// Create a config client
	configClient, err := clients.NewConfigClient(
		vo.NacosClientParam{
			ClientConfig:  &cc,
			ServerConfigs: sc,
		},
	)
	// Create a naming client
	serviceClient, err := clients.NewNamingClient(
		vo.NacosClientParam{
			ClientConfig:  &cc,
			ServerConfigs: sc,
		},
	)

Metode 2: Gunakan OIDCRoleARN

Saat peran RAM dikonfigurasi untuk node pekerja di Container Service for Kubernetes (ACK) (seperti dijelaskan dalam Metode 1), pod pada node tersebut dapat memperoleh token STS dari server metadata. Namun, jika kluster Anda menjalankan aplikasi tidak tepercaya, Anda mungkin tidak ingin aplikasi tersebut mengakses server metadata dan mengambil token STS peran RAM node pekerja.

Untuk memberlakukan izin least-privilege tingkat pod, gunakan fitur RRSA (RAM Roles for Service Account). Kluster ACK memasang file token OIDC akun layanan untuk setiap pod dan menyuntikkan konfigurasi ke variabel lingkungan. Klien Nacos membaca variabel ini dan memanggil operasi STS AssumeRoleWithOIDC, menukar token OIDC dengan token STS yang terikat pada peran RAM yang ditentukan. Hal ini menghilangkan kebutuhan akan pasangan AccessKey atau manajemen token STS manual.

Langkah 1: Aktifkan RRSA untuk kluster ACK

Untuk mengaktifkan fitur RRSA pada kluster ACK Anda, lihat Gunakan RRSA untuk memberikan izin RAM ke akun layanan guna kontrol akses tingkat pod.

Langkah 2: Berikan izin ke peran RAM

Berikan akses peran RAM dari Langkah 1 (misalnya, demo-role-for-rrsa dalam Gunakan RRSA untuk memberikan izin RAM ke akun layanan guna kontrol akses tingkat pod) ke MSE Nacos dengan menyambungkan salah satu kebijakan sistem berikut. Kebijakan ini memberikan izin baca/tulis atau read-only kasar kepada peran RAM atas konfigurasi dan layanan semua instans Nacos. Untuk instruksi detail, lihat Kelola izin untuk peran RAM.

Nama kebijakan

Deskripsi

AliyunMSEFullAccess

Memberikan izin manajemen MSE penuh. Pengguna RAM dengan kebijakan ini memiliki izin yang sama dengan Akun Alibaba Cloud untuk melakukan semua operasi.

AliyunMSEReadOnlyAccess

Memberikan izin MSE read-only. Pengguna RAM dengan kebijakan ini dapat melihat semua resource MSE di bawah Akun Alibaba Cloud.

Catatan

Langkah 3: Konfigurasikan otentikasi klien

Dengan metode ini, Anda hanya perlu mengonfigurasi RoleSessionName. Fitur RRSA ACK menyediakan kredensial sementara lainnya melalui variabel lingkungan yang disuntikkan.

Klien Nacos untuk Java

Jika Anda menggunakan klien Nacos untuk Java, konfigurasikan kode aplikasi Anda sebagai berikut.

Catatan

Klien Nacos harus versi 2.1.0 atau lebih baru. Untuk informasi lebih lanjut, lihat Versi klien Nacos yang mendukung otentikasi dan enkripsi/dekripsi.

<!-- https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-client-mse-extension -->
<dependency>
    <groupId>com.alibaba.nacos</groupId>
    <artifactId>nacos-client-mse-extension</artifactId>
    <!-- Version 1.0.5 or later is required. -->
    <version>1.0.5</version>
</dependency>
properties.put(PropertyKeyConst.SERVER_ADDR, "${mse-nacos-instance-domain}");
# This can be replaced by the ALIBABA_CLOUD_ROLE_SESSION_NAME environment variable.
properties.put(ExtensionAuthPropertyKey.ROLE_SESSION_NAME.getKey(), "${custom-role-session-name}");
## The following parameters are optional.
# This can be replaced by the ALIBABA_CLOUD_POLICY environment variable.
properties.put(ExtensionAuthPropertyKey.POLICY.getKey(), "${policy-with-limited-permissions}");
# This can be replaced by the ALIBABA_CLOUD_ROLE_SESSION_EXPIRATION environment variable.
properties.put(ExtensionAuthPropertyKey.ROLE_SESSION_EXPIRATION.getKey(), "${session-duration-in-seconds}");
NamingService naming = NamingFactory.createNamingService(properties);
ConfigService configService = ConfigFactory.createConfigService(properties);
Framework Spring Cloud Alibaba

Jika Anda menggunakan framework Spring Cloud Alibaba, tambahkan dependensi yang diperlukan dan konfigurasi berikut ke file konfigurasi aplikasi Anda.

Catatan
<!-- https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-client-mse-extension -->
<dependency>
    <groupId>com.alibaba.nacos</groupId>
    <artifactId>nacos-client-mse-extension</artifactId>
    <!-- Version 1.0.5 or later is required. -->
    <version>1.0.5</version>
</dependency>
## registry
spring.cloud.nacos.discovery.server-addr=${nacos-server-address}
# This can be replaced by the ALIBABA_CLOUD_ROLE_SESSION_NAME environment variable.
spring.cloud.nacos.discovery.alibabaCloudRoleSessionName=${custom-role-session-name}
## configuration center
spring.cloud.nacos.config.server-addr=${nacos-server-address}
# This can be replaced by the ALIBABA_CLOUD_ROLE_SESSION_NAME environment variable.
spring.cloud.nacos.config.alibabaCloudRoleSessionName=${custom-role-session-name}
## The following parameters are optional.
# This can be replaced by the ALIBABA_CLOUD_POLICY environment variable.
spring.cloud.nacos.discovery.alibabaCloudPolicy=${policy-with-limited-permissions}
spring.cloud.nacos.config.alibabaCloudPolicy=${policy-with-limited-permissions}
# This can be replaced by the ALIBABA_CLOUD_ROLE_SESSION_EXPIRATION environment variable.
spring.cloud.nacos.discovery.alibabaCloudRoleSessionExpiration=${session-duration-in-seconds}
spring.cloud.nacos.config.alibabaCloudRoleSessionExpiration=${session-duration-in-seconds}
Framework Dubbo

Jika Anda menggunakan framework Dubbo, tambahkan dependensi yang diperlukan dan parameter berikut ke URL registri dalam file konfigurasi Dubbo Anda.

Catatan

Klien Nacos harus versi 2.1.0 atau lebih baru. Untuk informasi lebih lanjut, lihat Versi klien Nacos yang mendukung otentikasi dan enkripsi/dekripsi.

<!-- https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-client-mse-extension -->
<dependency>
    <groupId>com.alibaba.nacos</groupId>
    <artifactId>nacos-client-mse-extension</artifactId>
    <!-- Version 1.0.5 or later is required. -->
    <version>1.0.5</version>
</dependency>
# This can be replaced by the ALIBABA_CLOUD_ROLE_SESSION_NAME environment variable.
dubbo.registry.address=nacos://${mse-nacos-instance-domain}:8848?alibabaCloudRoleSessionName=${custom-role-session-name}
## The following optional parameters are appended to the URL and can be replaced by the ALIBABA_CLOUD_POLICY and ALIBABA_CLOUD_ROLE_SESSION_EXPIRATION environment variables.
&alibabaCloudPolicy=${policy-with-limited-permissions}&alibabaCloudRoleSessionExpiration=${session-duration-in-seconds}
Go SDK

Jika Anda menggunakan klien Nacos untuk Go, konfigurasikan kode aplikasi Anda sebagai berikut.

Catatan

Gunakan versi 2.3.3 atau lebih baru.

	// Create ServerConfig
	sc := []constant.ServerConfig{
		*constant.NewServerConfig("${mse-nacos-instance-domain}", 8848, constant.WithContextPath("/nacos")),
	}
	ramConfig := constant.RamConfig{
		RoleSessionName: "${custom-role-session-name}",
	}
	// The following parameters are optional.
	ramConfig.Policy = "${policy-with-limited-permissions}"
	ramConfig.RoleSessionExpiration = ${session-duration-in-seconds}
	// Create ClientConfig
	cc := *constant.NewClientConfig(
		constant.WithNamespaceId(""),
		constant.WithTimeoutMs(5000),
		constant.WithNotLoadCacheAtStart(true),
		constant.WithLogDir("/tmp/nacos/log"),
		constant.WithCacheDir("/tmp/nacos/cache"),
		constant.WithRamConfig(&ramConfig),
	)
	// Create a config client
	configClient, err := clients.NewConfigClient(
		vo.NacosClientParam{
			ClientConfig:  &cc,
			ServerConfigs: sc,
		},
	)
	// Create a naming client
	serviceClient, err := clients.NewNamingClient(
		vo.NacosClientParam{
			ClientConfig:  &cc,
			ServerConfigs: sc,
		},
	)

Metode 3: Gunakan token STS

Jika aplikasi Anda memerlukan akses sementara ke instans MSE Nacos, inisialisasi penyedia kredensial dengan kredensial sementara dari Security Token Service (STS). Kredensial ini terdiri dari ID AccessKey, Rahasia AccessKey, dan token keamanan.

Penting

Metode ini mengharuskan Anda memelihara token STS secara manual, yang meningkatkan kompleksitas pemeliharaan. Jika aplikasi Anda memerlukan akses sementara berulang ke instans MSE Nacos, Anda harus menyegarkan token STS secara manual.

Langkah 1 (Opsional): Buat pengguna RAM dan peran RAM

Langkah 2: Berikan izin

  • Berikan izin kepada pengguna RAM dari Langkah 1 untuk mengasumsikan peran. Untuk informasi lebih lanjut, lihat AssumeRole - Dapatkan kredensial akses sementara untuk peran.

  • Berikan izin kepada peran RAM dari Langkah 1 dengan menyambungkan salah satu kebijakan sistem berikut. Kebijakan ini memberikan akses baca/tulis atau read-only kasar kepada peran RAM atas konfigurasi dan layanan semua instans Nacos. Untuk informasi lebih lanjut, lihat Kelola izin untuk peran RAM.

Nama kebijakan

Deskripsi

AliyunMSEFullAccess

Memberikan izin penuh untuk mengelola MSE. Pengguna RAM dengan kebijakan ini memiliki izin operasional yang sama dengan Akun Alibaba Cloud.

AliyunMSEReadOnlyAccess

Memberikan izin read-only untuk MSE. Pengguna RAM dengan kebijakan ini memiliki akses read-only ke semua resource di bawah Akun Alibaba Cloud.

Catatan

Langkah 3: Dapatkan token STS

Dapatkan kredensial akses sementara (token STS) untuk peran RAM dari Langkah 1. Untuk informasi lebih lanjut, lihat AssumeRole - Dapatkan kredensial akses sementara untuk peran.

Langkah 4: Konfigurasikan otentikasi klien

Kredensial akses sementara mencakup ID AccessKey, Rahasia AccessKey, dan token keamanan, yang harus digunakan bersama.

Klien Nacos untuk Java

Jika Anda menggunakan klien Nacos untuk Java, tambahkan dependensi yang diperlukan dan konfigurasikan kode aplikasi Anda sebagai berikut.

Catatan

Klien Nacos harus versi 2.1.0 atau lebih baru. Untuk informasi lebih lanjut, lihat Versi klien Nacos yang mendukung otentikasi dan enkripsi/dekripsi.

<!-- https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-client-mse-extension -->
<dependency>
    <groupId>com.alibaba.nacos</groupId>
    <artifactId>nacos-client-mse-extension</artifactId>
    <!-- Version 1.0.5 or later is required. -->
    <version>1.0.5</version>
</dependency>
properties.put(PropertyKeyConst.SERVER_ADDR, "YOUR_MSE_NACOS_INSTANCE_DOMAIN");
# You can use the ALIBABA_CLOUD_ACCESS_KEY_ID environment variable instead.
properties.put(ExtensionAuthPropertyKey.ACCESS_KEY_ID.getKey(), "YOUR_TEMP_ACCESSKEY_ID");
# You can use the ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variable instead.
properties.put(ExtensionAuthPropertyKey.ACCESS_KEY_SECRET.getKey(), "YOUR_TEMP_ACCESSKEY_SECRET");
# You can use the ALIBABA_CLOUD_SECURITY_TOKEN environment variable instead.
properties.put(ExtensionAuthPropertyKey.SECURITY_TOKEN_KEY.getKey(), "YOUR_TEMP_SECURITY_TOKEN");
NamingService naming = NamingFactory.createNamingService(properties);
ConfigService configService = ConfigFactory.createConfigService(properties);
Framework Spring Cloud Alibaba

Jika Anda menggunakan framework Spring Cloud Alibaba, tambahkan dependensi yang diperlukan dan tambahkan konfigurasi berikut ke file konfigurasi aplikasi Anda.

Catatan
<!-- https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-client-mse-extension -->
<dependency>
    <groupId>com.alibaba.nacos</groupId>
    <artifactId>nacos-client-mse-extension</artifactId>
    <!-- Version 1.0.5 or later is required. -->
    <version>1.0.5</version>
</dependency>
## Registry
# You can use the ALIBABA_CLOUD_ACCESS_KEY_ID environment variable instead.
spring.cloud.nacos.discovery.alibabaCloudAccessKeyId=YOUR_TEMP_ACCESSKEY_ID
# You can use the ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variable instead.
spring.cloud.nacos.discovery.alibabaCloudAccessKeySecret=YOUR_TEMP_ACCESSKEY_SECRET
# You can use the ALIBABA_CLOUD_SECURITY_TOKEN environment variable instead.
spring.cloud.nacos.discovery.alibabaCloudSecurityToken=YOUR_TEMP_SECURITY_TOKEN
## Configuration center
# You can use the ALIBABA_CLOUD_ACCESS_KEY_ID environment variable instead.
spring.cloud.nacos.config.alibabaCloudAccessKeyId=YOUR_TEMP_ACCESSKEY_ID
# You can use the ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variable instead.
spring.cloud.nacos.config.alibabaCloudAccessKeySecret=YOUR_TEMP_ACCESSKEY_SECRET
# You can use the ALIBABA_CLOUD_SECURITY_TOKEN environment variable instead.
spring.cloud.nacos.config.alibabaCloudSecurityToken=YOUR_TEMP_SECURITY_TOKEN
Framework Dubbo

Jika Anda menggunakan framework Dubbo, tambahkan dependensi yang diperlukan dan tambahkan parameter berikut ke URL registri dalam file konfigurasi Dubbo Anda.

Catatan

Klien Nacos harus versi 2.1.0 atau lebih baru. Untuk informasi lebih lanjut, lihat Versi klien Nacos yang mendukung otentikasi dan enkripsi/dekripsi.

<!-- https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-client-mse-extension -->
<dependency>
    <groupId>com.alibaba.nacos</groupId>
    <artifactId>nacos-client-mse-extension</artifactId>
    <!-- Version 1.0.5 or later is required. -->
    <version>1.0.5</version>
</dependency>
# You can use the ALIBABA_CLOUD_ACCESS_KEY_ID, ALIBABA_CLOUD_ACCESS_KEY_SECRET, and ALIBABA_CLOUD_SECURITY_TOKEN environment variables instead.
dubbo.registry.address=nacos://YOUR_MSE_NACOS_INSTANCE_DOMAIN:8848?alibabaCloudAccessKeyId=YOUR_TEMP_ACCESSKEY_ID&alibabaCloudAccessKeySecret=YOUR_TEMP_ACCESSKEY_SECRET&alibabaCloudSecurityToken=YOUR_TEMP_SECURITY_TOKEN
Go SDK

Jika Anda menggunakan klien Nacos untuk Go, konfigurasikan kode aplikasi Anda sebagai berikut.

Catatan

Versi 2.3.3 atau lebih baru direkomendasikan.

	//create ServerConfig
	sc := []constant.ServerConfig{
		*constant.NewServerConfig("YOUR_MSE_NACOS_INSTANCE_DOMAIN", 8848, constant.WithContextPath("/nacos")),
	}
	ramConfig := constant.RamConfig{
		SecurityToken: "YOUR_TEMP_SECURITY_TOKEN",
	}
	//create ClientConfig
	cc := *constant.NewClientConfig(
		constant.WithNamespaceId(""),
		constant.WithTimeoutMs(5000),
		constant.WithAccessKey("YOUR_TEMP_ACCESSKEY_ID"),
		constant.WithSecretKey("YOUR_TEMP_ACCESSKEY_SECRET"),
		constant.WithNotLoadCacheAtStart(true),
		constant.WithLogDir("/tmp/nacos/log"),
		constant.WithCacheDir("/tmp/nacos/cache"),
		constant.WithRamConfig(&ramConfig),
	)
	// create config client
	configClient, err := clients.NewConfigClient(
		vo.NacosClientParam{
			ClientConfig:  &cc,
			ServerConfigs: sc,
		},
	)
	//create naming client
	serviceClient, err := clients.NewNamingClient(
		vo.NacosClientParam{
			ClientConfig:  &cc,
			ServerConfigs: sc,
		},
	)

Metode 4: Gunakan URI kredensial

Untuk memperoleh kredensial dari sistem eksternal tanpa mengelola kunci secara langsung, inisialisasi penyedia kredensial dengan URI kredensial. Klien Nacos mengambil token STS dari URI yang ditentukan, sehingga menghilangkan kebutuhan untuk memelihara AccessKey atau token STS secara manual.

Penting

Layanan backend untuk URI kredensial harus menyegarkan token STS secara otomatis untuk memastikan aplikasi Anda selalu menggunakan kredensial yang valid.

Langkah 1: Verifikasi respons URI kredensial

URI kredensial harus mengembalikan respons dalam format berikut agar klien Nacos dapat mengurai dan menggunakan token STS dengan benar:

  • Kode status respons: 200

  • Struktur isi respons:

    {
        "Code": "Success",
        "AccessKeySecret": "AccessKeySecret",
        "AccessKeyId": "AccessKeyId",
        "Expiration": "2021-09-26T03:46:38Z",
        "SecurityToken": "SecurityToken"
    }

Langkah 2: Berikan izin ke peran RAM

Berikan akses peran RAM yang menghasilkan token STS ke MSE Nacos dengan menyambungkan salah satu kebijakan sistem berikut. Kebijakan ini memberikan akses baca/tulis atau read-only kasar kepada peran RAM atas semua konfigurasi dan layanan instans Nacos. Untuk instruksi detail, lihat Kelola izin untuk peran RAM.

Kebijakan

Deskripsi

AliyunMSEFullAccess

Memberikan izin manajemen MSE penuh. Pengguna RAM dengan kebijakan ini memiliki izin operasional yang sama dengan Akun Alibaba Cloud.

AliyunMSEReadOnlyAccess

Memberikan izin MSE read-only. Pengguna RAM dengan kebijakan ini dapat melihat semua resource MSE di bawah Akun Alibaba Cloud.

Catatan

Langkah 3: Konfigurasikan otentikasi klien

Klien Nacos untuk Java

Jika Anda menggunakan klien Nacos untuk Java, tambahkan dependensi yang diperlukan dan konfigurasikan aplikasi Anda sebagai berikut.

Catatan

Klien Nacos harus versi 2.1.0 atau lebih baru. Untuk informasi lebih lanjut, lihat Versi klien Nacos yang mendukung otentikasi, enkripsi, dan dekripsi.

<!-- https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-client-mse-extension -->
<dependency>
    <groupId>com.alibaba.nacos</groupId>
    <artifactId>nacos-client-mse-extension</artifactId>
    <!-- Version 1.0.5 or later is required. -->
    <version>1.0.5</version>
</dependency>
properties.put(PropertyKeyConst.SERVER_ADDR, "${mse-nacos-instance-domain}");
# Alternatively, set the ALIBABA_CLOUD_CREDENTIALS_URI environment variable.
properties.put(ExtensionAuthPropertyKey.CREDENTIALS_URI.getKey(), "${credentials-service-uri}");
NamingService naming = NamingFactory.createNamingService(properties);
ConfigService configService = ConfigFactory.createConfigService(properties);
Framework Spring Cloud Alibaba

Jika Anda menggunakan framework Spring Cloud Alibaba, tambahkan dependensi yang diperlukan dan tambahkan properti berikut ke file konfigurasi aplikasi Anda.

Catatan
<!-- https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-client-mse-extension -->
<dependency>
    <groupId>com.alibaba.nacos</groupId>
    <artifactId>nacos-client-mse-extension</artifactId>
    <!-- Version 1.0.5 or later is required. -->
    <version>1.0.5</version>
</dependency>
## Registry
# Alternatively, set the ALIBABA_CLOUD_CREDENTIALS_URI environment variable.
spring.cloud.nacos.discovery.alibabaCloudCredentialsUri=${credentials-service-uri}
## Configuration center
# Alternatively, set the ALIBABA_CLOUD_CREDENTIALS_URI environment variable.
spring.cloud.nacos.config.alibabaCloudCredentialsUri=${credentials-service-uri}
Framework Dubbo

Jika Anda menggunakan framework Dubbo, tambahkan dependensi yang diperlukan dan tambahkan parameter berikut ke URL registri dalam file konfigurasi Dubbo Anda.

Catatan

Klien Nacos harus versi 2.1.0 atau lebih baru. Untuk informasi lebih lanjut, lihat Versi klien Nacos yang mendukung otentikasi, enkripsi, dan dekripsi.

<!-- https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-client-mse-extension -->
<dependency>
    <groupId>com.alibaba.nacos</groupId>
    <artifactId>nacos-client-mse-extension</artifactId>
    <!-- Version 1.0.5 or later is required. -->
    <version>1.0.5</version>
</dependency>
# Alternatively, set the ALIBABA_CLOUD_CREDENTIALS_URI environment variable.
dubbo.registry.address=nacos://${mse-nacos-instance-domain}:8848?alibabaCloudCredentialsUri=${credentials-service-uri}
Go SDK

Jika Anda menggunakan klien Nacos untuk Go, konfigurasikan aplikasi Anda sebagai berikut.

Catatan

Versi 2.3.3 atau lebih baru direkomendasikan.

	//create ServerConfig
	sc := []constant.ServerConfig{
		*constant.NewServerConfig("${mse-nacos-instance-domain}", 8848, constant.WithContextPath("/nacos")),
	}
	ramConfig := constant.RamConfig{
		CredentialsURI: "${credentials-service-uri}",
	}
	//create ClientConfig
	cc := *constant.NewClientConfig(
		constant.WithNamespaceId(""),
		constant.WithTimeoutMs(5000),
		constant.WithNotLoadCacheAtStart(true),
		constant.WithLogDir("/tmp/nacos/log"),
		constant.WithCacheDir("/tmp/nacos/cache"),
		constant.WithRamConfig(&ramConfig),
	)
	// create config client
	configClient, err := clients.NewConfigClient(
		vo.NacosClientParam{
			ClientConfig:  &cc,
			ServerConfigs: sc,
		},
	)
	//create naming client
	serviceClient, err := clients.NewNamingClient(
		vo.NacosClientParam{
			ClientConfig:  &cc,
			ServerConfigs: sc,
		},
	)

Metode 5: Gunakan RAMRoleARN

Jika aplikasi Anda memerlukan akses delegasi ke MSE Nacos, seperti untuk akses lintas akun, inisialisasi penyedia kredensial dengan RAMRoleARN. Klien Nacos mengambil token STS dari STS dan menyegarkannya secara otomatis sebelum kedaluwarsa. Anda juga dapat menggunakan parameter policy untuk membatasi lebih lanjut izin peran RAM.

Penting

Metode ini memerlukan AccessKey dengan izin untuk mengasumsikan peran. Sebagai praktik terbaik, berikan AccessKey ini hanya izin AssumeRole dan batasi peran mana yang dapat diasumsikannya. Untuk informasi lebih lanjut, lihat AssumeRole - Dapatkan kredensial keamanan sementara untuk peran.

Langkah 1 (Opsional): Buat pengguna RAM dan peran RAM

Langkah 2: Berikan izin RAM

  • Berikan izin kepada pengguna RAM dari Langkah 1 untuk mengasumsikan peran. Untuk informasi lebih lanjut, lihat AssumeRole - Dapatkan kredensial keamanan sementara untuk peran.

  • Berikan izin kepada peran RAM dari Langkah 1 dengan menyambungkan salah satu kebijakan sistem berikut. Kebijakan ini memberikan akses baca/tulis atau read-only kasar kepada peran RAM atas konfigurasi dan layanan semua instans Nacos. Untuk informasi lebih lanjut, lihat Kelola izin untuk peran RAM.

Nama kebijakan

Deskripsi

AliyunMSEFullAccess

Memberikan izin manajemen MSE penuh, setara dengan izin Akun Alibaba Cloud.

AliyunMSEReadOnlyAccess

Memberikan izin read-only untuk semua resource MSE di bawah Akun Alibaba Cloud.

Catatan

Langkah 3: Konfigurasikan otentikasi klien

Untuk menggunakan metode ini, konfigurasikan klien dengan AccessKey yang diperlukan dan RAMRoleARN peran target.

Klien Nacos untuk Java

Jika Anda menggunakan klien Nacos untuk Java, tambahkan dependensi yang diperlukan dan konfigurasikan kode aplikasi Anda sebagai berikut.

Catatan

Klien Nacos harus versi 2.1.0 atau lebih baru. Untuk informasi lebih lanjut, lihat Versi klien Nacos yang mendukung otentikasi dan enkripsi/dekripsi.

<!-- https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-client-mse-extension -->
<dependency>
    <groupId>com.alibaba.nacos</groupId>
    <artifactId>nacos-client-mse-extension</artifactId>
    <!-- Version 1.0.5 or later is required. -->
    <version>1.0.5</version>
</dependency>
properties.put(PropertyKeyConst.SERVER_ADDR, "${mse-nacos-instance-domain-name}");
# You can configure the ALIBABA_CLOUD_ACCESS_KEY_ID environment variable instead.
properties.put(ExtensionAuthPropertyKey.ACCESS_KEY_ID.getKey(), "${access-key-id-with-assume-role-permission}");
# You can configure the ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variable instead.
properties.put(ExtensionAuthPropertyKey.ACCESS_KEY_SECRET.getKey(), "${access-key-secret-with-assume-role-permission}");
# You can configure the ALIBABA_CLOUD_ROLE_ARN environment variable instead.
properties.put(ExtensionAuthPropertyKey.ROLE_ARN.getKey(), "${role-arn-to-assume}");
# You can configure the ALIBABA_CLOUD_ROLE_SESSION_NAME environment variable instead.
properties.put(ExtensionAuthPropertyKey.ROLE_SESSION_NAME.getKey(), "${custom-role-session-name}");
## The following parameters are optional.
# You can configure the ALIBABA_CLOUD_POLICY environment variable instead.
properties.put(ExtensionAuthPropertyKey.POLICY.getKey(), "${scoped-down-policy}");
# You can configure the ALIBABA_CLOUD_ROLE_SESSION_EXPIRATION environment variable instead.
properties.put(ExtensionAuthPropertyKey.ROLE_SESSION_EXPIRATION.getKey(), "${session-duration-in-seconds}");
NamingService naming = NamingFactory.createNamingService(properties);
ConfigService configService = ConfigFactory.createConfigService(properties);
Spring Cloud Alibaba

Jika Anda menggunakan framework Spring Cloud Alibaba, tambahkan dependensi yang diperlukan dan konfigurasi berikut ke file konfigurasi aplikasi Anda.

Catatan
<!-- https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-client-mse-extension -->
<dependency>
    <groupId>com.alibaba.nacos</groupId>
    <artifactId>nacos-client-mse-extension</artifactId>
    <!-- Version 1.0.5 or later is required. -->
    <version>1.0.5</version>
</dependency>
## Registry
# You can configure the ALIBABA_CLOUD_ACCESS_KEY_ID environment variable instead.
spring.cloud.nacos.discovery.alibabaCloudAccessKeyId=${access-key-id-with-assume-role-permission}
# You can configure the ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variable instead.
spring.cloud.nacos.discovery.alibabaCloudAccessKeySecret=${access-key-secret-with-assume-role-permission}
# You can configure the ALIBABA_CLOUD_ROLE_ARN environment variable instead.
spring.cloud.nacos.discovery.alibabaCloudRoleArn=${role-arn-to-assume}
# You can configure the ALIBABA_CLOUD_ROLE_SESSION_NAME environment variable instead.
spring.cloud.nacos.discovery.alibabaCloudRoleSessionName=${custom-role-session-name}
## Configuration center
# You can configure the ALIBABA_CLOUD_ACCESS_KEY_ID environment variable instead.
spring.cloud.nacos.config.alibabaCloudAccessKeyId=${access-key-id-with-assume-role-permission}
# You can configure the ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variable instead.
spring.cloud.nacos.config.alibabaCloudAccessKeySecret=${access-key-secret-with-assume-role-permission}
# You can configure the ALIBABA_CLOUD_ROLE_ARN environment variable instead.
spring.cloud.nacos.config.alibabaCloudRoleArn=${role-arn-to-assume}
# You can configure the ALIBABA_CLOUD_ROLE_SESSION_NAME environment variable instead.
spring.cloud.nacos.config.alibabaCloudRoleSessionName=${custom-role-session-name}
## The following parameters are optional.
# You can configure the ALIBABA_CLOUD_POLICY environment variable instead.
spring.cloud.nacos.discovery.alibabaCloudPolicy=${scoped-down-policy}
spring.cloud.nacos.config.alibabaCloudPolicy=${scoped-down-policy}
# You can configure the ALIBABA_CLOUD_ROLE_SESSION_EXPIRATION environment variable instead.
spring.cloud.nacos.discovery.alibabaCloudRoleSessionExpiration=${session-duration-in-seconds}
spring.cloud.nacos.config.alibabaCloudRoleSessionExpiration=${session-duration-in-seconds}
Dubbo

Jika Anda menggunakan framework Dubbo, tambahkan dependensi yang diperlukan dan konfigurasi berikut ke URL registri dalam file konfigurasi Dubbo Anda.

Catatan

Klien Nacos harus versi 2.1.0 atau lebih baru. Untuk informasi lebih lanjut, lihat Versi klien Nacos yang mendukung otentikasi dan enkripsi/dekripsi.

<!-- https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-client-mse-extension -->
<dependency>
    <groupId>com.alibaba.nacos</groupId>
    <artifactId>nacos-client-mse-extension</artifactId>
    <!-- Version 1.0.5 or later is required. -->
    <version>1.0.5</version>
</dependency>
# You can configure the ALIBABA_CLOUD_ACCESS_KEY_ID, ALIBABA_CLOUD_ACCESS_KEY_SECRET, ALIBABA_CLOUD_ROLE_ARN, and ALIBABA_CLOUD_ROLE_SESSION_NAME environment variables instead.
dubbo.registry.address=nacos://${mse-nacos-instance-domain-name}:8848?alibabaCloudAccessKeyId=${access-key-id-with-assume-role-permission}&alibabaCloudAccessKeySecret=${access-key-secret-with-assume-role-permission}&alibabaCloudRoleArn=${role-arn-to-assume}&alibabaCloudRoleSessionName=${custom-role-session-name}
## The following parameters are optional and are appended to the URL. You can configure the ALIBABA_CLOUD_POLICY and ALIBABA_CLOUD_ROLE_SESSION_EXPIRATION environment variables instead.
&alibabaCloudPolicy=${scoped-down-policy}&alibabaCloudRoleSessionExpiration=${session-duration-in-seconds}
Go SDK

Jika Anda menggunakan klien Nacos untuk Go, konfigurasikan kode aplikasi Anda sebagai berikut.

Catatan

Versi 2.3.3 atau lebih baru direkomendasikan.

	//create ServerConfig
	sc := []constant.ServerConfig{
		*constant.NewServerConfig("${mse-nacos-instance-domain-name}", 8848, constant.WithContextPath("/nacos")),
	}
	ramConfig := constant.RamConfig{
		RoleArn:         "${role-arn-to-assume}",
		RoleSessionName: "${custom-role-session-name}",
	}
	// The following parameters are optional.
	ramConfig.Policy = "${scoped-down-policy}"
	ramConfig.RoleSessionExpiration = "${session-duration-in-seconds}"
	//create ClientConfig
	cc := *constant.NewClientConfig(
		constant.WithNamespaceId(""),
		constant.WithTimeoutMs(5000),
		constant.WithAccessKey("${access-key-id-with-assume-role-permission}"),
		constant.WithSecretKey("${access-key-secret-with-assume-role-permission}"),
		constant.WithNotLoadCacheAtStart(true),
		constant.WithLogDir("/tmp/nacos/log"),
		constant.WithCacheDir("/tmp/nacos/cache"),
		constant.WithRamConfig(&ramConfig),
	)
	// create config client
	configClient, err := clients.NewConfigClient(
		vo.NacosClientParam{
			ClientConfig:  &cc,
			ServerConfigs: sc,
		},
	)
	//create naming client
	serviceClient, err := clients.NewNamingClient(
		vo.NacosClientParam{
			ClientConfig:  &cc,
			ServerConfigs: sc,
		},
	)

Metode 6: Gunakan AccessKey

Langkah 1 (Opsional): Buat pengguna RAM

Jika Anda perlu membuat pengguna RAM, lihat Buat pengguna RAM.

Langkah 2: Berikan izin kepada pengguna RAM

Berikan izin kepada pengguna RAM dari Langkah 1 dengan menyambungkan salah satu kebijakan sistem berikut. Kebijakan ini memberikan izin baca/tulis atau read-only kasar kepada pengguna RAM atas konfigurasi dan layanan semua instans Nacos. Untuk instruksi detail, lihat Kelola izin pengguna RAM.

Kebijakan

Deskripsi

AliyunMSEFullAccess

Memberikan izin penuh untuk mengelola MSE. Pengguna RAM dengan kebijakan ini memiliki izin operasional yang sama dengan Akun Alibaba Cloud.

AliyunMSEReadOnlyAccess

Memberikan izin read-only untuk MSE. Pengguna RAM dengan kebijakan ini memiliki akses read-only ke semua resource MSE di bawah Akun Alibaba Cloud.

Catatan

Langkah 3: Konfigurasikan otentikasi klien

AccessKey terdiri dari ID AccessKey dan Rahasia AccessKey, yang harus digunakan bersama. Setelah Anda mengaktifkan otentikasi untuk instans Nacos, Anda harus menyediakan ID AccessKey dan Rahasia AccessKey pengguna RAM di klien Nacos. Jika tidak, klien tidak dapat mengakses instans Nacos. Untuk mendapatkan AccessKey, lihat Buat AccessKey.

Klien Nacos untuk Java

Jika Anda menggunakan klien Nacos untuk Java, konfigurasikan kode aplikasi Anda sebagai berikut.

Catatan

Untuk menggunakan AccessKey dalam otentikasi, Anda harus meningkatkan klien ke versi yang didukung. Untuk informasi lebih lanjut, lihat Versi klien Nacos yang mendukung otentikasi dan enkripsi.

properties.put(PropertyKeyConst.SERVER_ADDR, "${mse-nacos-endpoint}");
properties.put(PropertyKeyConst.ACCESS_KEY, "${accessKey}");
properties.put(PropertyKeyConst.SECRET_KEY, "${secretKey}");
NamingService naming = NamingFactory.createNamingService(properties);
ConfigService configService = ConfigFactory.createConfigService(properties);
Framework Spring Cloud Alibaba

Jika Anda menggunakan framework Spring Cloud Alibaba, tambahkan konfigurasi berikut ke file konfigurasi aplikasi Anda.

Catatan

Framework Spring Cloud Alibaba harus versi 2.2.1.RELEASE atau lebih baru.

## registry
spring.cloud.nacos.discovery.accessKey=${accessKey}
spring.cloud.nacos.discovery.secretKey=${secretKey}
## configuration center
spring.cloud.nacos.config.accessKey=${accessKey}
spring.cloud.nacos.config.secretKey=${secretKey}
Framework Dubbo

Jika Anda menggunakan framework Dubbo, tambahkan parameter berikut ke URL registri dalam file konfigurasi Dubbo Anda.

dubbo.registry.address=nacos://${mse-nacos-endpoint}:8848?accessKey=${accessKey}&secretKey=${secretKey}
Klien Nacos untuk Go

Jika Anda menggunakan klien Nacos untuk Go, konfigurasikan kode aplikasi Anda sebagai berikut.

Catatan

Untuk menggunakan AccessKey dalam otentikasi, Anda harus meningkatkan klien ke versi yang didukung. Gunakan versi 2.3.3 atau lebih baru. Untuk informasi lebih lanjut, lihat Versi klien Nacos yang mendukung otentikasi dan enkripsi.

cc := constant.ClientConfig{
    AccessKey:   "${accessKey}",
    SecretKey:   "${secretKey}"
}
serverConfigs := []constant.ServerConfig{
    {
        IpAddr:      "${mse-nacos-endpoint}",
        Port:        8848
    }
}
namingClient, err := clients.NewNamingClient(
    vo.NacosClientParam{
        ClientConfig:  &clientConfig,
        ServerConfigs: serverConfigs,
    },
)
configClient, err := clients.NewConfigClient(
    vo.NacosClientParam{
        ClientConfig:  &clientConfig,
        ServerConfigs: serverConfigs,
    },
)
Klien Nacos untuk Python

Jika Anda menggunakan klien Nacos untuk Python, konfigurasikan kode aplikasi Anda sebagai berikut.

Catatan

Untuk menggunakan AccessKey dalam otentikasi, Anda harus meningkatkan klien ke versi yang didukung. Untuk informasi lebih lanjut, lihat Versi klien Nacos yang mendukung otentikasi dan enkripsi.

client = nacos.NacosClient("${mse-nacos-endpoint}", ak=${accessKey}, sk=${secretKey})

Metode 7: Gunakan AccessKey yang diputar secara otomatis

Jika aplikasi Anda memerlukan akses jangka panjang tetapi pasangan AccessKey berisiko dikompromikan, inisialisasi penyedia kredensial dengan ClientKey. Key Management Service (KMS) secara otomatis memutar pasangan AccessKey pengguna RAM terkelola pada interval reguler, mengubah kredensial statis menjadi kredensial dinamis. KMS juga mendukung rotasi sesuai permintaan untuk segera mengganti pasangan AccessKey yang dikompromikan. Hal ini menghilangkan pemeliharaan manual, mengurangi risiko keamanan dan kompleksitas operasional. Untuk mendapatkan ClientKey, lihat Buat titik akses aplikasi.

Langkah 1: Simpan kredensial RAM di KMS

Simpan kredensial pengguna RAM yang ada sebagai rahasia RAM di instans KMS. Untuk mempelajari cara mengaktifkan dan menggunakan rahasia RAM di KMS, lihat Kelola dan gunakan rahasia RAM.

Langkah 2: Berikan izin kepada pengguna RAM

Berikan izin kepada pengguna RAM dari Langkah 1 dengan menyambungkan salah satu kebijakan sistem berikut. Kebijakan ini memberikan izin baca/tulis atau read-only kasar kepada pengguna RAM atas konfigurasi dan layanan semua instans Nacos. Untuk instruksi detail, lihat Kelola izin pengguna RAM.

Kebijakan

Deskripsi

AliyunMSEFullAccess

Memberikan izin penuh untuk mengelola MSE. Pengguna RAM dengan kebijakan ini memiliki izin operasional yang sama dengan Akun Alibaba Cloud.

AliyunMSEReadOnlyAccess

Memberikan izin read-only untuk MSE. Pengguna RAM dengan kebijakan ini memiliki akses read-only ke semua resource MSE di bawah Akun Alibaba Cloud.

Catatan

Langkah 3: Buat file konfigurasi Secrets Manager

Buat file konfigurasi bernama secretsmanager.properties di direktori root proyek Anda atau classpath. File tersebut harus berisi konten berikut:

cache_client_dkms_config_info=[{"regionId":"<your-dkms-region>","endpoint":"<your-dkms-endpoint>","passwordFromFilePath":"<your-password-file-path>","clientKeyFile":"<your-ClientKey-file-path>","ignoreSslCerts":false,"caFilePath":"<your-ca-certificate-file-path>"}]
Catatan

Untuk deskripsi parameter dalam file konfigurasi, lihat Secrets Manager Client.

Langkah 4: Konfigurasikan otentikasi klien

Klien Nacos untuk Java

Jika Anda menggunakan Klien Nacos untuk Java, tambahkan dependensi yang diperlukan dan konfigurasikan kode aplikasi Anda sebagai berikut.

Catatan

Versi Klien Nacos harus 2.1.0 atau lebih baru. Untuk informasi lebih lanjut, lihat Versi Klien Nacos yang mendukung otentikasi dan enkripsi data.

<!-- https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-client-mse-extension -->
<dependency>
    <groupId>com.alibaba.nacos</groupId>
    <artifactId>nacos-client-mse-extension</artifactId>
    <!-- Version 1.0.5 or later is required. -->
    <version>1.0.5</version>
</dependency>
properties.put(PropertyKeyConst.SERVER_ADDR, "${mse-nacos-instance-domain}");
# This can be replaced by the ALIBABA_CLOUD_SECRET_NAME environment variable.
properties.put(ExtensionAuthPropertyKey.SECRET_NAME.getKey(), "${name-of-the-ram-secret}");
NamingService naming = NamingFactory.createNamingService(properties);
ConfigService configService = ConfigFactory.createConfigService(properties);
Spring Cloud Alibaba

Jika Anda menggunakan Spring Cloud Alibaba, tambahkan dependensi yang diperlukan dan konfigurasi berikut ke file konfigurasi aplikasi Anda.

Catatan
<!-- https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-client-mse-extension -->
<dependency>
    <groupId>com.alibaba.nacos</groupId>
    <artifactId>nacos-client-mse-extension</artifactId>
    <!-- Version 1.0.5 or later is required. -->
    <version>1.0.5</version>
</dependency>
## Registry
# This can be replaced by the ALIBABA_CLOUD_SECRET_NAME environment variable.
spring.cloud.nacos.discovery.alibabaCloudSecretName=${name-of-the-ram-secret}
## Configuration center
# This can be replaced by the ALIBABA_CLOUD_SECRET_NAME environment variable.
spring.cloud.nacos.config.alibabaCloudSecretName=${name-of-the-ram-secret}
Dubbo

Jika Anda menggunakan Dubbo, tambahkan dependensi yang diperlukan dan parameter berikut ke URL registri dalam file konfigurasi Dubbo Anda.

Catatan

Versi Klien Nacos harus 2.1.0 atau lebih baru. Untuk informasi lebih lanjut, lihat Versi Klien Nacos yang mendukung otentikasi dan enkripsi data.

<!-- https://mvnrepository.com/artifact/com.alibaba.nacos/nacos-client-mse-extension -->
<dependency>
    <groupId>com.alibaba.nacos</groupId>
    <artifactId>nacos-client-mse-extension</artifactId>
    <!-- Version 1.0.5 or later is required. -->
    <version>1.0.5</version>
</dependency>
# This can be replaced by the ALIBABA_CLOUD_SECRET_NAME environment variable.
dubbo.registry.address=nacos://${mse-nacos-instance-domain}:8848?alibabaCloudSecretName=${name-of-the-ram-secret}
Go SDK

Jika Anda menggunakan Klien Nacos untuk Go, konfigurasikan kode aplikasi Anda sebagai berikut.

Catatan

Versi 2.3.3 atau lebih baru direkomendasikan.

	//create ServerConfig
	sc := []constant.ServerConfig{
		*constant.NewServerConfig("${mse-nacos-instance-domain}", 8848, constant.WithContextPath("/nacos")),
	}
	ramConfig := constant.RamConfig{
		SecretName: "${name-of-the-ram-secret}",
	}
	//create ClientConfig
	cc := *constant.NewClientConfig(
		constant.WithNamespaceId(""),
		constant.WithTimeoutMs(5000),
		constant.WithNotLoadCacheAtStart(true),
		constant.WithLogDir("/tmp/nacos/log"),
		constant.WithCacheDir("/tmp/nacos/cache"),
		constant.WithRamConfig(&ramConfig),
	)
	// create config client
	configClient, err := clients.NewConfigClient(
		vo.NacosClientParam{
			ClientConfig:  &cc,
			ServerConfigs: sc,
		},
	)
	//create naming client
	serviceClient, err := clients.NewNamingClient(
		vo.NacosClientParam{
			ClientConfig:  &cc,
			ServerConfigs: sc,
		},
	)

Dokumen terkait

FAQ

T: Apakah MSE Nacos mendukung otentikasi klien dengan username dan password (misalnya, nacos/nacos)?

Tidak. Setelah Anda mengaktifkan otentikasi RAM untuk MSE Nacos, metode otentikasi bawaan Nacos tradisional berbasis username/password tidak lagi didukung. Kedua mekanisme otentikasi tersebut saling eksklusif.

Jika aplikasi klien Anda telah mengonfigurasi spring.cloud.nacos.username dan spring.cloud.nacos.password, server Nacos akan membuang permintaan tersebut, yang menyebabkan error Read timed out atau kegagalan koneksi. Bahkan jika koneksi jaringan normal, permintaan tersebut ditolak.

Pendekatan yang benar: Hapus atau biarkan kosong bidang username dan password dalam konfigurasi klien Anda, lalu beralih ke salah satu metode kredensial RAM yang didukung, seperti AccessKey/SecretKey atau Peran RAM ECS. Untuk informasi lebih lanjut tentang cara mengonfigurasi kredensial, lihat Konfigurasikan kredensial klien.

T: Klien Nacos saya melaporkan NacosException: Forbidden/no right atau accessKeyId can't be null. Bagaimana cara memecahkan masalah ini?

Pecahkan masalah berdasarkan error spesifik:

Skenario 1: Kesalahan “Dilarang”/“Tidak Ada Hak”

Penyebab: Konfigurasi otentikasi klien tidak memenuhi persyaratan. Bahkan ketika koneksi jaringan normal, error ini muncul jika versi SDK atau parameter otentikasi salah.

Resolusi:

  1. Verifikasi bahwa Anda telah meningkatkan SDK Klien Nacos ke versi yang kompatibel. Untuk versi klien yang diperlukan, lihat persyaratan versi dalam metode konfigurasi kredensial masing-masing dalam topik ini.

  2. Konfirmasi bahwa Anda telah mengonfigurasi semua parameter otentikasi yang diperlukan (misalnya, ID AccessKey, rahasia AccessKey, atau nama peran RAM) sesuai dengan petunjuk dalam topik ini.

Skenario 2: Error accessKeyId can't be null di kluster ACK yang menggunakan Peran RAM ECS

Error ini menunjukkan bahwa kredensial Peran RAM ECS tidak dapat diambil. Pecahkan masalah dengan urutan berikut:

  1. Periksa konektivitas jaringan VPC: Verifikasi bahwa Pod dapat menjangkau instans MSE pada port 8848. Jalankan perintah berikut dari dalam Pod:

    telnet <MSE Nacos instance domain> 8848
  2. Verifikasi pengikatan peran RAM: Jalankan perintah berikut di dalam Pod untuk mengonfirmasi bahwa layanan metadata mengembalikan nama peran (bukan error 404):

    curl http://100.100.100.200/latest/meta-data/ram/security-credentials/

    Jika perintah mengembalikan error 404 atau respons kosong, peran RAM tidak terikat dengan benar ke instans ECS atau node pekerja kluster ACK.

  3. Periksa izin peran RAM: Konfirmasi bahwa peran RAM telah diberikan izin akses MSE yang diperlukan, seperti AliyunMSEFullAccess atau AliyunMSEReadOnlyAccess. Untuk informasi tentang cara memberikan izin, lihat langkah otorisasi dalam Metode 1: Otentikasi dengan peran RAM dalam topik ini.

Catatan

Verifikasi sementara: Jika metode Peran RAM ECS terus melaporkan error setelah Anda menyelesaikan langkah-langkah di atas, alihkan sementara ke metode AccessKey/SecretKey untuk memverifikasi koneksi. Jika metode AK/SK berhasil, masalahnya spesifik pada konfigurasi Peran RAM (misalnya, pengikatan peran atau aksesibilitas layanan metadata).