Microservices Engine (MSE) içindeki Microservices Registry'de saklanan yapılandırma verileri düz metin olarak tutulur. MSE, Key Management Service (KMS) ile entegre çalışarak veri kaynakları, belirteçler, kullanıcı adları ve parolalar gibi yapılandırma verilerini şifrelemenize ve şifresini çözmenize olanak tanır. Bu sayede hassas verilerin sızma riski azaltılır.
Ön koşullar
Developer Edition, Professional Edition veya Serverless Edition kullanan bir Nacos motoru oluşturdunuz. Daha fazla bilgi için bkz. Örnek oluşturun.
Key Management Service (KMS) hizmetini etkinleştirdiniz.
Bir KMS örneği satın aldınız ve etkinleştirdiniz. KMS örneğinin görüntü sürümü dkms-3.0.0 değerinden yüksek olmalıdır. Daha fazla bilgi için bkz. KMS örneği satın alın ve etkinleştirin ve KMS örneğinin görüntü sürümünü yükseltin.
Bir anahtar oluşturdunuz. Daha fazla bilgi için bkz. Anahtar yönetimine giriş
Veri güvenliğini sağlamak amacıyla MSE, verileri şifrelemek ve şifresini çözmek için Alibaba Cloud KMS kullanır. KMS, Shared KMS ve Dedicated KMS olmak üzere iki türe ayrılır. Shared KMS artık kullanılamamaktadır. Daha fazla bilgi için bkz. [[Duyuru] Shared KMS için EOFS ve EOS](t2811231.xdita#). Shared KMS kullanıyorsanız bunu Dedicated KMS'e yükseltmeniz önerilir. 31 Mart 2022 tarihinden sonra KMS'i etkinleştiriyorsanız Dedicated KMS satın almanız gerekir. Daha fazla bilgi için bkz. [[Yükseltme Duyurusu] KMS, Dedicated KMS'e yükseltildi](t2165677.xdita#concept-2165677). KMS faturalandırması hakkında daha fazla bilgi için bkz. KMS 1.0 faturalandırması.
Bu konuda Dedicated KMS örnekleri kullanılmaktadır. 31 Mart 2022 tarihinden önce Shared KMS'i etkinleştirdiyseniz bkz. SSS.
Şifrelenmiş yapılandırmalar oluşturun
MSE konsolunda şifrelenmiş yapılandırmalar oluşturmak için aşağıdaki adımları izleyin:
MSE konsolu adresinde oturum açın ve üst gezinme çubuğundan bir bölge seçin.
Sol gezinme bölmesinde Microservices Registry > Instances seçeneklerini seçin.
Instances sayfasında örneğin adına tıklayın.
Sol gezinme bölmesinde Configuration Management > Configurations seçeneklerini seçin.
Configurations sayfasının sol üst köşesinde Namespace açılır listesinden bir ad alanı seçin ve Add Configuration seçeneğine tıklayın.
-
Create Configuration panelinde bir Data ID ve Group girin. Ardından Data Encryption anahtarını açın ve bir KMS Key seçin. Henüz bir KMS Key oluşturmadıysanız Create seçeneğine tıklayın. Key Management Service konsolunda bir anahtar oluşturabilirsiniz. Anahtarı oluşturduktan sonra yeni KMS anahtarının görünmesi için Create Configuration panelini yenileyin.
Önemli31 Mart 2022 tarihinden sonra Dedicated KMS'i etkinleştiriyorsanız şifreleme için kullanılan bir anahtarın kimliğini seçmeli ve bu anahtarı MSE Nacos örneğiyle ilişkilendirmelisiniz. Bu sayede sonraki tüm yapılandırmalar bu anahtar kullanılarak şifrelenir.
KMS'i 31 Mart 2022 tarihinden önce etkinleştirdiyseniz Dedicated KMS örneğinin anahtar kimliğini bağlamanızı isteyen bir istem görüntülenmez ve Shared KMS'i kullanabilirsiniz. Uygulamaların Shared KMS'e erişim yöntemleri farklıdır.
-
Dedicated KMS kullanan kullanıcılar için KMS AES-256 görüntülenir. Shared KMS kullanan kullanıcılar için sürüm uyumluluğu göz önünde bulundurularak üç şifreleme yöntemi görüntülenir. KMS veya KMS AES-128 seçmemeniz önerilir.
KMS AES-256: KMS'in zarf şifreleme ve şifre çözme yöntemidir. Bu yöntem, yüksek şifreleme gücüne sahip 256 bitlik bir anahtar kullanır. Şifrelenmiş yapılandırma içeriği 50 KB'yi aşamaz. Düz metin halindeki yapılandırma verileri KMS'e iletilmez. Daha yüksek güvenlik için bu seçeneği seçmeniz önerilir. İş gereksinimlerinize göre bir şifreleme yöntemi seçin.
KMS AES-128: 128 bitlik anahtar kullanan ve orta düzeyde şifreleme gücüne sahip şifreleme yöntemidir. Şifrelenmiş yapılandırma içeriğinin boyutu 50 KB'yi aşamaz.
KMS: Bu seçeneği seçmemeniz önerilir. Çünkü özel karakterler uyumluluk sorunlarına neden olabilir. Örneğin, bir
ampersand (&)karakteri\u0026olarak kaçışlanır. Şifrelenmiş yapılandırma içeriğinin boyutu 6 KB'yi aşamaz.
Bağlama işleminden sonra anahtarı değiştiremezsiniz. Anahtarı silerseniz şifreleme yapılandırmalarına erişemezsiniz.
Configuration Format bölümünde bir veri biçimi seçin, sağ taraftaki Configuration Content düzenleyicisine yapılandırma içeriğini girin ve ardından Release seçeneğine tıklayın.
Java için Nacos SDK'da şifrelenmiş bir yapılandırma kullanın
-
Projedeki pom.xml dosyasına aşağıdaki bağımlılıkları ekleyin:
<dependency> <groupId>com.alibaba.nacos</groupId> <artifactId>nacos-client</artifactId> <version>{nacos-client-version}</version> </dependency> <dependency> <groupId>com.alibaba.nacos</groupId> <artifactId>nacos-client-mse-extension</artifactId> <version>{nacos-client-mse-extension-version}</version> </dependency>Sürüm açıklaması
Nacos istemci ana sürümü
Nacos istemci sürümü
Önerilen eklenti sürümü
1.x
V1.4.3 veya üzeri
V1.0.6 veya üzeri
2.x
V2.1.1 veya üzeri
V1.0.6 veya üzeriÖnemliŞifreleme ve şifre çözme eklentisi sürümü Nacos istemci sürümüyle eşleşmezse kararlılık sorunları oluşabilir. Önerilen sürümleri kullanmanız önerilir.
-
Kullandığınız çerçeve türüne göre yapılandırmak istediğiniz geçerli kodu seçin.
Nacos istemci çerçevesini kullanın
Yapılandırmaları almak için Nacos istemci çerçevesini kullanıyorsanız aşağıdaki örnek kodu yapılandırmanız gerekir.
try { Properties properties = new Properties(); // The address of your Nacos server. properties.put("serverAddr", "{serverAddr}"); // Configure the RAM role of the ECS instance as the access credential. properties.put("ramRoleName", "{ramRoleName}"); // The endpoint of the KMS instance. properties.put("kmsEndpoint", "{kmsEndpoint}"); ConfigService configService = NacosFactory.createConfigService(properties); System.out.println("content:::"+configService.getConfig("{dataId}", "{group}", 6000)); } catch (Exception e) { e.printStackTrace(); }kmsEndpoint, KMS örneğinin uç noktasını belirtir. Erişim ortamı ve KMS örneği aynı VPC'deyse kmsEndpoint değeri örneğin VPC uç noktasıdır. KMS örneğine İnternet üzerinden erişiyorsanız kmsEndpoint değeri genel ağ geçidinin genel uç noktası veya VPC uç noktasıdır. Uç noktanın nasıl alınacağı hakkında daha fazla bilgi için bkz. KMS örneğinin uç noktasını nasıl alırım?
KMS örneğine erişmek için kimlik bilgisi olarak bir AccessKey çifti kullanıyorsanız aşağıdaki yapılandırmayı değiştirin:
properties.put("ramRoleName", "{ramRoleName}");Aşağıdaki yapılandırmayı kullanın:
properties.put("accessKey", "{accessKey}"); properties.put("secretKey", "{secretKey}");Java için Nacos SDK, Security Token Service (STS) belirteçleri ve bir RAM rolünün Alibaba Cloud Resource Name (ARN) adı gibi birden çok erişim kimlik bilgisi kullanarak şifrelenmiş yapılandırmaları kullanabilir. Desteklenen erişim kimlik bilgileri ve istemci yapılandırma yöntemleri hakkında daha fazla bilgi için bkz. Java için Nacos SDK yapılandırma şifrelemesi için desteklenen erişim kimlik bilgileri.
KMS'iniz 31 Mart 2022 tarihinden sonra etkinleştirildiyse ve SDK'da şifrelenmiş yapılandırmaları yayınlamak istiyorsanız aşağıdaki kodu ekleyin:
properties.put("keyId", "{keyId}");Kodda yer alan serverAddr, ramRoleName, accessKey, secretKey, kmsEndpoint, dataId, group ve keyId parametrelerini gerçek hizmet parametreleriyle değiştirin.
Spring Cloud Nacos Config çerçevesini kullanın
NotSpring Cloud Alibaba 2022.x veya 2023.x kullanıyorsanız sürümü 2023.0.1.2'ye yükseltin.
Spring Cloud Alibaba 2021.x kullanıyorsanız sürümü 2021.0.6.1'e yükseltin.
Spring Cloud Alibaba 2.x kullanıyorsanız sürümü 2.2.10'a yükseltin.
Spring Cloud Alibaba, Spring Cloud ve Spring Boot sürümlerinin uyumlu olduğundan emin olun. Sürüm uyumluluğu hakkında daha fazla bilgi için resmi Spring Cloud Alibaba web sitesindeki sürüm notlarına bakın.
Yapılandırmaları almak için Spring Cloud Nacos Config çerçevesini kullanıyorsanız aşağıdaki yapılandırmaları eklemeniz gerekir:
spring.cloud.nacos.config.server-addr={serverAddr} spring.config.import=nacos:{dataId}?group={group}&refreshEnabled=true # Use the RAM role of an ECS instance as the access credential. spring.cloud.nacos.config.ramRoleName={ramRoleName} spring.cloud.nacos.config.kmsEndpoint={kmsEndpoint}kmsEndpoint, KMS örneğinin uç noktasını belirtir. Erişim ortamı ve KMS örneği aynı VPC'deyse kmsEndpoint değeri örneğin VPC uç noktasıdır. KMS örneğine İnternet üzerinden erişiyorsanız kmsEndpoint değeri genel ağ geçidinin genel uç noktası veya VPC uç noktasıdır. Uç noktanın nasıl alınacağı hakkında daha fazla bilgi için bkz. KMS örneğinin uç noktasını nasıl alırım?
KMS örneğine erişmek için kimlik bilgisi olarak bir AccessKey çifti kullanıyorsanız aşağıdaki yapılandırmayı değiştirin:
spring.cloud.nacos.config.ramRoleName={ramRoleName}Aşağıdaki yapılandırmaları kullanın:
spring.cloud.nacos.config.accesskey={accessKey} spring.cloud.nacos.config.secretkey={secretKey} # If you use an AccessKey pair to access Nacos, we recommend specifying it # by using JVM parameters or environment variables due to its sensitive nature. # JVM parameters -Dspring.cloud.nacos.config.accessKey={accessKey} -Dspring.cloud.nacos.config.secretKey={secretKey} # Environment variables spring_cloud_nacos_config_accessKey={accessKey} spring_cloud_nacos_config_secretKey={secretKey}Java için Nacos SDK, Security Token Service (STS) belirteçleri ve bir RAM rolünün Alibaba Cloud Resource Name (ARN) adı gibi birden çok erişim kimlik bilgisi kullanarak şifrelenmiş yapılandırmaları kullanabilir. Desteklenen erişim kimlik bilgileri ve istemci yapılandırma yöntemleri hakkında daha fazla bilgi için bkz. Java için Nacos SDK yapılandırma şifrelemesi için desteklenen erişim kimlik bilgileri.
KMS'iniz 31 Mart 2022 tarihinden sonra etkinleştirildiyse ve SDK'da şifrelenmiş yapılandırmaları yayınlamak istiyorsanız aşağıdaki kodu ekleyin:
spring.cloud.nacos.config.keyId={keyId}Kodda yer alan serverAddr, ramRoleName, accessKey, secretKey, kmsEndpoint, dataId, group ve keyId parametrelerini gerçek hizmet parametreleriyle değiştirin.
Açıklama
Aşağıdaki tabloda parametreler açıklanmaktadır. Yapılandırdığınız değerlerin geçerli olduğundan emin olun.
Parametre
Açıklama
serverAddr
MSE örneğinizin IP adresi. Örnek:mse-*****.nacos-ans.mse.aliyuncs.com.
ramRoleName
ECS örneğine veya ACK kümesine atanmış RAM rolü.
accessKey ve secretKeyGeçerli Alibaba Cloud hesabının AccessKey ID'si ve AccessKey gizli anahtarı.
accessKey ve secretKey parametrelerini belirtmeniz gerekir. Aksi takdirde ramRoleName parametresini belirtmeniz gerekir.
kmsEndpoint
KMS örneğinin uç noktası. Erişim ortamı ve KMS örneği aynı VPC'deyse kmsEndpoint değeri örneğin VPC uç noktasıdır. KMS örneğine İnternet üzerinden erişiyorsanız kmsEndpoint değeri genel ağ geçidinin genel uç noktası veya VPC uç noktasıdır. Uç noktanın nasıl alınacağı hakkında daha fazla bilgi için bkz. KMS örneğinin uç noktasını nasıl alırım?
dataId
Şifrelenmiş yapılandırmanın veri kimliği. Örnek:cipher-kms-aes-256-****.properties.
group
Şifrelenmiş yapılandırmanın grup adı.
keyIdYapılandırmaları şifrelemek için kullanılan KMS anahtarının kimliği. Konsolda bir KMS anahtarı oluşturup kullanabilirsiniz.
Örnek:
alia/***veyakey-***.
Go için Nacos SDK'da şifrelenmiş bir yapılandırma kullanın
-
Go için Nacos istemci SDK'sıiçindeki bağımlılıkları indirmek içingo getkomutunu çalıştırın.go get -u github.com/nacos-group/nacos-sdk-go/v2@v2.2.8 -
Nacos istemcisinin ilk yapılandırmalarını değiştirin.
Go için Nacos SDK'da KMS örneğine erişmek için kimlik bilgisi olarak yalnızca bir AccessKey çifti kullanılabilir. Kodda yer alan serverAddr, accessKey, secretKey ve kmsEndpoint parametrelerini işinizde kullanılan parametrelerle değiştirin ve yapılandırma şifrelemesi için
OpenKMSparametresinin true olarak ayarlandığından emin olun.sc := []constant.ServerConfig{ { IpAddr: "{serverAddr}", // Replace with the endpoint of your MSE instance. Port: 8848, }, } var accessKey = "{accessKey}" var secretKey = "{secretKey}" cc := constant.ClientConfig{ NamespaceId: "public", // The namespace ID. OpenKMS: true, // Enable KMS for configuration encryption. AccessKey: accessKey, SecretKey: secretKey, KMSConfig: &constant.KMSConfig{Endpoint: "{kmsEndpoint}",}, TimeoutMs: 5000, NotLoadCacheAtStart: true, LogDir: "/tmp/nacos/log", CacheDir: "/tmp/nacos/cache", RotateTime: "1h", MaxAge: 3, }kmsEndpoint, KMS örneğinin uç noktasını belirtir. Erişim ortamı ve KMS örneği aynı VPC'deyse kmsEndpoint değeri örneğin VPC uç noktasıdır. KMS örneğine İnternet üzerinden erişiyorsanız kmsEndpoint değeri genel ağ geçidinin genel uç noktası veya VPC uç noktasıdır. Uç noktanın nasıl alınacağı hakkında daha fazla bilgi için bkz. KMS örneğinin uç noktasını nasıl alırım?
-
Şifrelenmiş yapılandırmaları yayınlayın.
keyId: Yapılandırmaları şifrelemek için kullanılan KMS anahtarının kimliği.configParam := vo.ConfigParam{ DataId: "{dataId}", Group: "{group}", Content: "content", KmsKeyId: "{keyId}", // The ID of the KMS key for encryption. You can create and use a key in the KMS console. } published, err := client.PublishConfig(configParam) if published && err == nil { fmt.Printf("successfully publish: group[%s], dataId[%s], data[%s]\n", configParam.Group, configParam.DataId, configParam.Content) } else { fmt.Printf("failed to publish: group[%s], dataId[%s], data[%s]\n with error: %s\n", configParam.Group, configParam.DataId, configParam.Content, err) }
Parametreler
Aşağıdaki tabloda parametreler açıklanmaktadır. Yapılandırdığınız değerlerin geçerli olduğundan emin olun.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Yapılandırmaları şifrelemek için kullanılan KMS anahtarının kimliği. KMS konsolunda bir KMS anahtarı oluşturup kullanabilirsiniz. Örnek: |
Java için Nacos SDK yapılandırma şifrelemesi için desteklenen erişim kimlik bilgileri
Java için Nacos SDK, yapılandırmaları şifrelemek için birden çok erişim kimlik bilgisini destekler. İş senaryonuzun kimlik doğrulama ve yetkilendirme gereksinimlerine bağlı olarak kimlik bilgisi sağlayıcısını başlatmak için bir yöntem seçebilirsiniz.
Desteklenen erişim kimlik bilgileri:
-
Not
Serverless App Engine (SAE) ortamları için MSE şifrelenmiş yapılandırmalarına erişmek üzere bir STS belirteci kullanmanız önerilir. Daha fazla bilgi için Nacos istemcisi tarafından erişim kimlik doğrulaması konusundaki "STS belirteci kullanın" bölümüne bakın.
-
ECS örneğinin RAM rolünü kullanın
NotBu yöntem (ECSRAMRole) yalnızca ECS, Elastic Container Instance (ECI) ve ACK ortamlarında uygulanabilir. Serverless App Engine (SAE), MSE şifrelenmiş yapılandırmalarına erişmek için bir ECS örneğinin RAM rolünün kullanılmasını desteklemez.
İstemcide erişim kimlik bilgilerinin nasıl yapılandırılacağı hakkında daha fazla bilgi için Nacos istemcisi tarafından erişim kimlik doğrulaması konusundaki "İstemcide erişim kimlik bilgilerini yapılandırın" bölümüne bakın. Aşağıdaki sistem ilkesini seçerek erişim kimlik bilgisiyle ilgili izni verin. Bu şekilde, tüm KMS örneklerinde okuma ve yazma izinlerini vermek için geniş kapsamlı bir yetkilendirme işlemi gerçekleştirilir.
|
|
|
|
|
|
SSS
31 Mart 2022 tarihinden önce etkinleştirilen Shared KMS kullanılıyorsa parametreler nasıl yapılandırılır?
Shared KMS'i 31 Mart 2022 tarihinden önce etkinleştirdiyseniz kmsEndpoint parametresini kmsRegionId ile değiştirmeniz yeterlidir. kmsRegionId, KMS örneğinin bulunduğu bölgeyi (örneğin cn-hangzhou) belirtir. Kullandığınız çerçeveye göre istemci yapılandırmasını değiştirmek için aşağıdaki adımları izleyin.
Java için Nacos istemci SDK'sında şifrelenmiş bir yapılandırma kullanın
Koddaki aşağıdaki yapılandırmayı değiştirin:
properties.put("kmsEndpoint", "{kmsEndpoint}");
Aşağıdaki yapılandırmayı kullanın:
properties.put("kms_region_id", "{kmsRegionId}");
Java için Nacos SDK'da Spring Cloud Nacos Config çerçevesini kullanarak şifrelenmiş bir yapılandırma kullanın
Koddaki aşağıdaki yapılandırmayı değiştirin:
spring.cloud.nacos.config.kmsEndpoint={kmsEndpoint}
Aşağıdaki yapılandırmaları kullanın:
spring.cloud.nacos.config.kms_region_id={kmsRegionId}
Go için Nacos SDK'da şifrelenmiş bir yapılandırma kullanın
ClientConfig içine RegionId parametresini ekleyin. Koddaki aşağıdaki yapılandırmaları değiştirin:
cc := constant.ClientConfig{
NamespaceId: "public",
OpenKMS: true,
AccessKey: accessKey,
SecretKey: secretKey,
KMSConfig: &constant.KMSConfig{Endpoint: "{kmsEndpoint}",},
TimeoutMs: 5000,
NotLoadCacheAtStart: true,
LogDir: "/tmp/nacos/log",
CacheDir: "/tmp/nacos/cache",
RotateTime: "1h",
MaxAge: 3,
}
Aşağıdaki yapılandırmaları kullanın:
cc := constant.ClientConfig{
NamespaceId: "public",
OpenKMS: true,
AccessKey: accessKey,
SecretKey: secretKey,
TimeoutMs: 5000,
NotLoadCacheAtStart: true,
LogDir: "/tmp/nacos/log",
CacheDir: "/tmp/nacos/cache",
RotateTime: "1h",
MaxAge: 3,
RegionId: "{kmsRegionId}",
}
KMS örneğinin uç noktasını nasıl alırım?
Erişim ortamınız ve KMS örneğiniz aynı VPC'deyse
kmsEndpointdeğerini örneğin VPC uç noktası olarak ayarlayın. KMS konsolunda Instance Management sayfasına gidin, hedef örneğe tıklayarak ayrıntılarını görüntüleyin ve Basic Information bölümünden örneğin VPC endpoint of the instance değerini alın.-
KMS örneğine İnternet üzerinden erişiyorsanız KMS örneği ayrıntıları sayfasında Internet Access Status anahtarını açmanız gerekir.
Genel erişim etkinleştirildikten sonra genel ağ geçidinin genel uç noktası
kms.cn-hangzhou.aliyuncs.comve genel ağ geçidinin VPC uç noktasıkms-vpc.cn-hangzhou.aliyuncs.comolur. Genel erişim için KMS SDK gerekir ve simetrik şifreleme ile şifre çözme için performans sınırı saniyede 750 işlemdir. Güvenliği artırmak için ince ayarlı erişim kontrol ilkeleri yapılandırmanız önerilir. KMS örneğine bir VPC üzerinden erişiyorsanız kmsEndpoint değeri genel ağ geçidinin VPC uç noktasıdır.
SSS
Yaygın hataların giderilmesi
Aşağıdaki adımları izleyin:
-
Uygulama çalışma zamanı ortamının MSE örneğinin bulunduğu VPC'ye ve KMS örneğinin bulunduğu VPC'ye bağlanıp bağlanamadığını kontrol edin.
NotMSE örneği ile KMS örneği arasında bağlantı kurulmasını sağlamaya gerek yoktur.
-
KMS
V1.0veyaV3.0kullanılıp kullanılmadığını kontrol edin. KMS V1.0 kullanılıyorsa KMS'in 31 Mart 2022 tarihinden önce etkinleştirildiğinden emin olmanız gerekir.Not31 Mart 2022 tarihinden sonra KMS'i etkinleştiriyorsanız Dedicated KMS satın almanız gerekir. KMS V1.0'ın şifreleme özelliği yeni kullanıcılar için artık kullanılamamaktadır.
Nacos istemci sürümünün şifreleme ve şifre çözme eklentisi sürümüyle eşleşip eşleşmediğini kontrol edin. Daha fazla bilgi için bu konudaki sürüm açıklamalarına bakın.
Java için Nacos SDK sorunlarının giderilmesi
Nacos günlüklerindeki istisna yığınlarının anahtar kelimeleri | Nedenler |
| Başlatma parametresi |
| Başlatma parametresi |
| Başlatma parametresi |
| Başlatma parametresi |
| Başlatma parametresi |
| Başlatma parametresi |
| Başlatma parametresi |
|
|
| Başlatma parametresi |
| Başlatma parametresi |