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
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.
-
Masuk ke MSE console, lalu pilih wilayah di bilah navigasi atas.
-
Di panel navigasi kiri, pilih Microservices Registry > Instances.
-
Pada halaman Instances, klik nama instans.
Di panel navigasi kiri, klik parameter settings. Pada halaman tersebut, klik Edit.
Pilih parameter ConfigAuthEnabled atau NamingAuthEnabled, klik Yes pada kolom Value untuk parameter tersebut, lalu klik Save and Restart Instance.
PentingSebelum 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 |
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 | |
Aplikasi tidak tepercaya yang dideploy pada node pekerja di Container Service for Kubernetes (ACK). | Tidak | Token STS | Temporary | Automatic refresh | |
Aplikasi di lingkungan tidak tepercaya yang memerlukan kontrol atas masa berlaku kredensial dan izin akses. | Ya | Token STS | Temporary | Manual refresh | |
Aplikasi yang memperoleh kredensial dari sistem eksternal. | Tidak | Token STS | Temporary | Automatic refresh | |
Aplikasi yang memerlukan akses delegasi ke layanan cloud, seperti untuk akses lintas akun. | Ya | Token STS | Temporary | Automatic refresh | |
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 | |
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.
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
(Opsional) Buat peran RAM yang menggunakan layanan Alibaba Cloud sebagai entitas tepercaya. Untuk informasi lebih lanjut, lihat Buat peran RAM untuk layanan Alibaba Cloud.
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.
CatatanAnda dapat menyambungkan maksimal lima kebijakan sekaligus. Untuk menyambungkan lebih banyak kebijakan, ulangi operasi tersebut.
Untuk memberikan izin detail halus ke instans, 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.
Masuk ke ECS console. Di panel navigasi kiri, pilih Instances & Images > Instance.
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.
Temukan instans ECS yang ingin Anda kelola, lalu pilih
> Instance Settings > Attach/Detach RAM Role.Pada kotak dialog, pilih peran RAM instans yang telah Anda buat dan klik OK.
Berikan izin ke peran RAM worker ACK
Saat Anda membuat kluster ACK, peran RAM worker dibuat secara otomatis. Anda dapat langsung memberikan izin ke peran ini tanpa membuat yang baru.
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" } } }
CatatanUntuk 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.
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.
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.
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.
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.
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. |
Anda dapat menyambungkan maksimal lima kebijakan sekaligus. Untuk menyambungkan lebih banyak kebijakan, ulangi operasi tersebut.
Untuk memberikan izin akses MSE detail halus ke instans, 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.
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.
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.
Tingkatkan framework Spring Cloud Alibaba ke versi 2.2.9.RELEASE atau lebih baru.
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>## 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.
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.
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.
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
Jika Anda perlu membuat pengguna RAM, lihat Buat pengguna RAM.
Jika Anda perlu membuat peran RAM dengan akun Alibaba Cloud sebagai entitas tepercaya, lihat Buat peran RAM untuk akun Alibaba Cloud.
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. |
Anda dapat menyambungkan maksimal lima kebijakan sekaligus. Untuk menyambungkan lebih banyak kebijakan, ulangi operasi tersebut.
Untuk memberikan izin detail halus ke instans, 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.
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.
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.
Framework Spring Cloud Alibaba harus versi 2.2.9.RELEASE atau lebih baru.
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>## 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_TOKENFramework Dubbo
Jika Anda menggunakan framework Dubbo, tambahkan dependensi yang diperlukan dan tambahkan parameter berikut ke URL registri dalam file konfigurasi Dubbo Anda.
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_TOKENGo SDK
Jika Anda menggunakan klien Nacos untuk Go, konfigurasikan kode aplikasi Anda sebagai berikut.
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.
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. |
Anda dapat menyambungkan maksimal lima kebijakan sekaligus. Untuk menyambungkan lebih banyak kebijakan, ulangi operasi tersebut.
Untuk memberikan izin detail halus ke instans, buat kebijakan kustom. Untuk informasi lebih lanjut, lihat Otentikasi detail halus untuk registri, Otentikasi detail halus untuk pusat konfigurasi, dan Contoh otorisasi kustom umum untuk registri dan pusat konfigurasi.
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.
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.
Framework Spring Cloud Alibaba harus versi 2.2.9.RELEASE atau lebih baru.
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>## 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.
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.
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.
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
Jika Anda belum memiliki pengguna RAM atau perlu membuatnya, lihat Buat pengguna RAM.
Jika Anda belum memiliki peran RAM atau perlu membuatnya yang memercayai akun Alibaba Cloud, lihat Buat peran RAM untuk akun Alibaba Cloud.
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. |
Anda dapat menyambungkan hingga lima kebijakan sekaligus. Untuk menyambungkan lebih banyak, ulangi operasi tersebut.
Untuk memberikan izin detail halus ke instans, buat kebijakan kustom. Untuk informasi lebih lanjut, lihat Otentikasi detail halus untuk registri, Otentikasi detail halus untuk pusat konfigurasi, dan Contoh kebijakan otorisasi kustom umum untuk registri dan pusat konfigurasi.
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.
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.
Framework Spring Cloud Alibaba harus versi 2.2.9.RELEASE atau lebih baru.
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>## 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.
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.
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. |
Anda dapat menyambungkan maksimal lima kebijakan sekaligus. Untuk menyambungkan lebih banyak kebijakan, ulangi operasi tersebut.
Untuk memberikan akses detail halus ke instans MSE, buat kebijakan kustom. Untuk informasi lebih lanjut, lihat Otentikasi detail halus untuk registri, Otentikasi detail halus untuk pusat konfigurasi, dan Contoh kebijakan otorisasi kustom umum untuk Microservices Registry dan Configuration Center.
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.
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.
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.
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.
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. |
Anda dapat menyambungkan maksimal lima kebijakan sekaligus. Untuk menyambungkan lebih banyak kebijakan, ulangi operasi tersebut.
Untuk memberikan akses detail halus ke instans MSE, buat kebijakan kustom. Untuk informasi lebih lanjut, lihat Otentikasi detail halus untuk registri, Otentikasi detail halus untuk pusat konfigurasi, dan Contoh kebijakan otorisasi kustom umum untuk Microservices Registry dan Configuration Center.
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>"}]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.
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.
Versi Spring Cloud Alibaba harus 2.2.9.RELEASE atau lebih baru.
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>## 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.
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.
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
Untuk mengakses instans MSE Nacos melalui internet, lihat Konfigurasikan daftar putih.
Untuk menyiapkan otorisasi detail halus, lihat Otentikasi detail halus untuk registri dan Otentikasi detail halus untuk pusat konfigurasi.
Untuk memberikan izin untuk MSE console, lihat Otorisasi registri dan pusat konfigurasi.
Untuk mempelajari tentang batasan SDK Nacos, lihat Panduan versi SDK Nacos untuk MSE.
Jika Anda memiliki pertanyaan tentang Nacos, lihat FAQ Nacos.
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.
Istilah pencarian terkait: setel kata sandi koneksi aplikasi, atur ulang kata sandi Nacos ke nacos asli, KMS menyebabkan masalah koneksi.
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:
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.
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:
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> 8848Verifikasi 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.
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.
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).