Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Not
Temel, Standardve Enterprise planları 17 Mart 2025'te kullanımdan kaldırma dönemine girdi. Daha fazla bilgi için bkz . Azure Spring Apps kullanımdan kaldırma duyurusu.
Bu makale şunlar için geçerlidir:✅ Java ❎ C#
Bu makalede, Azure Spring Apps'e dağıtılan bir uygulama için sistem tarafından atanan veya kullanıcı tarafından atanan yönetilen kimliğin nasıl oluşturulacağı ve Azure Key Vault'a erişmek için nasıl kullanılacağı gösterilmektedir.
Azure Key Vault, uygulamanız için belirteçlere, parolalara, sertifikalara, API anahtarlarına ve diğer gizli dizilere erişimi güvenli bir şekilde depolamak ve sıkı bir şekilde denetlemek için kullanılabilir. Microsoft Entra Id'de yönetilen kimlik oluşturabilir ve kodunuzda kimlik bilgilerini görüntülemek zorunda kalmadan Key Vault dahil olmak üzere Microsoft Entra kimlik doğrulamasını destekleyen herhangi bir hizmette kimlik doğrulaması yapabilirsiniz.
Aşağıdaki videoda Azure Key Vault kullanarak gizli bilgilerin nasıl yönetileceği açıklanmaktadır.
Önkoşullar
Her kaynak için ad sağlayın
Aşağıdaki komutları kullanarak kaynak adlarını tutmak için değişkenler oluşturun. Yer tutucuları kendi değerlerinizle değiştirmeyi unutmayın.
export LOCATION=<location>
export RESOURCE_GROUP=myresourcegroup
export SPRING_APPS=myasa
export APP=springapp-system
export KEY_VAULT=<your-keyvault-name>
Kaynak grubu oluşturma
Kaynak grubu, Azure kaynaklarının dağıtıldığı ve yönetildiği bir mantıksal kapsayıcıdır. Aşağıdaki örnekte gösterildiği gibi az group create komutunu kullanarak hem Key Vault'u hem de Spring Cloud'u içerecek bir kaynak grubu oluşturun:
az group create --name ${RESOURCE_GROUP} --location ${LOCATION}
Key Vault'unuzu ayarlama
Key Vault oluşturmak için aşağıdaki örnekte gösterildiği gibi az keyvault create komutunu kullanın:
Önemli
Her Key Vault'un benzersiz bir adı olmalıdır.
az keyvault create \
--resource-group ${RESOURCE_GROUP} \
--name ${KEY_VAULT}
Uygulama URL'sini göstermek için aşağıdaki komutu kullanın ve ardından biçimindeki https://${KEY_VAULT}.vault.azure.netdöndürülen URL'yi not edin. Aşağıdaki adımda bu değeri kullanın.
az keyvault show \
--resource-group ${RESOURCE_GROUP} \
--name ${KEY_VAULT} \
--query properties.vaultUri --output tsv
Artık aşağıdaki örnekte gösterildiği gibi az keyvault secret set komutunu kullanarak Key Vault'unuza bir gizli bilgi ekleyebilirsiniz.
az keyvault secret set \
--vault-name ${KEY_VAULT} \
--name "connectionString" \
--value "jdbc:sqlserver://SERVER.database.windows.net:1433;database=DATABASE;"
Azure Spring Apps hizmeti ve uygulaması oluşturma
Karşılık gelen tüm uzantıları yükledikten sonra aşağıdaki komutu kullanarak bir Azure Spring Apps örneği oluşturun:
az extension add --upgrade --name spring
az spring create \
--resource-group ${RESOURCE_GROUP} \
--sku Enterprise \
--name ${SPRING_APPS}
Aşağıdaki örnek, parametresi tarafından --system-assigned istendiği gibi sistem tarafından atanan yönetilen kimlikle uygulamayı oluşturur:
az spring app create \
--resource-group ${RESOURCE_GROUP} \
--service ${SPRING_APPS} \
--name ${APP} \
--assign-endpoint true \
--system-assigned
export MANAGED_IDENTITY_PRINCIPAL_ID=$(az spring app show \
--resource-group ${RESOURCE_GROUP} \
--service ${SPRING_APPS} \
--name ${APP} \
--query identity.principalId --output tsv)
az extension add --upgrade --name spring
az spring create \
--resource-group ${RESOURCE_GROUP} \
--name ${SPRING_APPS}
Aşağıdaki örnek, springapp parametresi tarafından istendiği gibi sistem tarafından atanan yönetilen bir kimlikle --system-assigned adlı bir uygulama oluşturur.
az spring app create \
--resource-group ${RESOURCE_GROUP} \
--service ${SPRING_APPS} \
--name ${APP} \
--assign-endpoint true \
--runtime-version Java_17 \
--system-assigned
export MANAGED_IDENTITY_PRINCIPAL_ID=$(az spring app show \
--resource-group ${RESOURCE_GROUP} \
--service ${SPRING_APPS} \
--name ${APP} \
--query identity.principalId --output tsv)
Uygulamanıza Key Vault erişimi verme
Uygulamanız için Key Vault'ta düzgün erişim vermek için aşağıdaki komutu kullanın:
az keyvault set-policy \
--name ${KEY_VAULT} \
--object-id ${MANAGED_IDENTITY_PRINCIPAL_ID} \
--secret-permissions set get list
Not
Sistem tarafından atanan yönetilen kimlik devre dışı bırakıldığında, uygulamanızın erişimini kaldırmak için az keyvault delete-policy --name ${KEY_VAULT} --object-id ${MANAGED_IDENTITY_PRINCIPAL_ID} kullanın.
Spring Boot starter ile örnek bir Spring Boot uygulaması oluşturma
Bu uygulamanın, Azure Key Vault'tan gizli bilgilere erişimi vardır. Azure Key Vault Sırlarını Spring Boot Starter kullanın. Azure Key Vault, Spring PropertySource örneği olarak eklenir. Azure Key Vault'ta depolanan gizli dizilere kolayca erişilebilir ve dosyalardaki özellikler gibi herhangi bir dışlaştırılmış yapılandırma özelliği gibi kullanılabilir.
Azure Key Vault Spring Starter ile örnek
start.spring.ioproje oluşturmak için aşağıdaki komutu kullanın.curl https://start.spring.io/starter.tgz -d dependencies=web,azure-keyvault -d baseDir=springapp -d bootVersion=3.2.1 -d javaVersion=17 -d type=maven-project | tar -xzvf -Uygulamanızda Key Vault'unuzu belirtin.
cd springapp vim src/main/resources/application.propertiesAzure Spring Apps'e dağıtılan bir uygulamada yönetilen kimliği kullanmak için src/main/resources/application.properties dosyasına aşağıdaki içeriğe sahip özellikler ekleyin.
spring.cloud.azure.keyvault.secret.property-sources[0].endpoint=<your-keyvault-url> spring.cloud.azure.keyvault.secret.property-sources[0].credential.managed-identity-enabled=trueNot
Daha önce gösterildiği gibi key vault URL'sini application.properties dosyasına eklemeniz gerekir. Aksi takdirde, anahtar kasası URL'si çalışma zamanı sırasında yakalanamayabilir.
src/main/java/com/example/demo/DemoApplication.java aşağıdaki kod örneğiyle güncelleştirin. Bu kod, bağlantı metnini Key Vault'tan alır.
package com.example.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.CommandLineRunner; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @SpringBootApplication @RestController public class DemoApplication implements CommandLineRunner { @Value("${connectionString}") private String connectionString; public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } @GetMapping("get") public String get() { return connectionString; } public void run(String... args) throws Exception { System.out.println(String.format("\nConnection String stored in Azure Key Vault:\n%s\n",connectionString)); } }pom.xml dosyasını açarsanız, aşağıdaki örnekte gösterildiği gibi bağımlılığı görebilirsiniz
spring-cloud-azure-starter-keyvault:<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-keyvault</artifactId> </dependency>
Uygulamanızı Azure Spring Apps'e dağıtmak için aşağıdaki komutu kullanın:
az spring app deploy \ --resource-group ${RESOURCE_GROUP} \ --service ${SPRING_APPS} \ --name ${APP} \ --source-path
Uygulamanızı Azure Spring Apps'e dağıtmak için aşağıdaki komutu kullanın:
az spring app deploy \ --resource-group ${RESOURCE_GROUP} \ --service ${SPRING_APPS} \ --name ${APP} \ --source-path \ --build-env BP_JVM_VERSION=17
Uygulamanızı test etmek için aşağıdaki komutu kullanarak genel uç noktaya veya test uç noktasına erişin:
curl https://${SPRING_APPS}-${APP}.azuremicroservices.io/getYanıt gövdesinde aşağıdaki ileti döndürülür:
jdbc:sqlserver://SERVER.database.windows.net:1433;database=DATABASE;.
Kaynakları temizleme
Yeni oluşturulan hizmet örneği de dahil olmak üzere kaynak grubunun tamamını silmek için aşağıdaki komutu kullanın:
az group delete --name ${RESOURCE_GROUP} --yes