Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Note
Os planos Basic, Standarde Enterprise entraram em um período de aposentadoria em 17 de março de 2025. Para obter mais informações, consulte o anúncio de aposentadoria do Azure Spring Apps.
Este artigo aplica-se a:✅ Java ❎ C#
Este artigo mostra como criar uma identidade gerenciada atribuída pelo sistema ou pelo usuário para um aplicativo implantado no Azure Spring Apps e usá-la para acessar o Azure Key Vault.
O Azure Key Vault pode ser usado para armazenar com segurança e controlar rigorosamente o acesso a tokens, senhas, certificados, chaves de API e outros segredos para seu aplicativo. Pode criar uma identidade gerida no Microsoft Entra ID e autenticar-se em qualquer serviço que suporte a autenticação do Microsoft Entra, incluindo o Cofre da Chave, sem ter de apresentar credenciais no seu código.
O vídeo a seguir descreve como gerenciar segredos usando o Cofre da Chave do Azure.
Prerequisites
Fornecer nomes para cada recurso
Crie variáveis para manter os nomes dos recursos usando os comandos a seguir. Certifique-se de substituir os espaços reservados pelos seus próprios valores.
export LOCATION=<location>
export RESOURCE_GROUP=myresourcegroup
export SPRING_APPS=myasa
export APP=springapp-system
export KEY_VAULT=<your-keyvault-name>
Criar um grupo de recursos
Um grupo de recursos é um contêiner lógico no qual os recursos do Azure são implantados e gerenciados. Crie um grupo de recursos para conter o Key Vault e o Spring Cloud usando o comando az group create , conforme mostrado no exemplo a seguir:
az group create --name ${RESOURCE_GROUP} --location ${LOCATION}
Configurar o Cofre da Chave
Para criar um Cofre de Chaves, use o comando az keyvault create , conforme mostrado no exemplo a seguir:
Important
Cada Cofre de Chaves deve ter um nome exclusivo.
az keyvault create \
--resource-group ${RESOURCE_GROUP} \
--name ${KEY_VAULT}
Use o comando a seguir para mostrar a URL do aplicativo e, em seguida, anote a URL retornada, que está no formato https://${KEY_VAULT}.vault.azure.net. Use esse valor na etapa a seguir.
az keyvault show \
--resource-group ${RESOURCE_GROUP} \
--name ${KEY_VAULT} \
--query properties.vaultUri --output tsv
Agora você pode colocar um segredo em seu Cofre de Chaves usando o comando az keyvault secret set , conforme mostrado no exemplo a seguir:
az keyvault secret set \
--vault-name ${KEY_VAULT} \
--name "connectionString" \
--value "jdbc:sqlserver://SERVER.database.windows.net:1433;database=DATABASE;"
Criar serviço e aplicativo do Azure Spring Apps
Depois de instalar todas as extensões correspondentes, use o seguinte comando para criar uma instância do Azure Spring Apps:
az extension add --upgrade --name spring
az spring create \
--resource-group ${RESOURCE_GROUP} \
--sku Enterprise \
--name ${SPRING_APPS}
O exemplo a seguir cria o aplicativo com uma identidade gerenciada atribuída ao --system-assigned sistema, conforme solicitado pelo parâmetro:
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}
O exemplo a seguir cria um aplicativo nomeado springapp com uma identidade gerenciada atribuída ao --system-assigned sistema, conforme solicitado pelo parâmetro.
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)
Conceda ao seu aplicativo acesso ao Cofre da Chave
Use o seguinte comando para conceder acesso adequado no Cofre da Chave para seu aplicativo:
az keyvault set-policy \
--name ${KEY_VAULT} \
--object-id ${MANAGED_IDENTITY_PRINCIPAL_ID} \
--secret-permissions set get list
Note
Para identidade gerenciada atribuída ao sistema, use az keyvault delete-policy --name ${KEY_VAULT} --object-id ${MANAGED_IDENTITY_PRINCIPAL_ID} para remover o acesso ao seu aplicativo depois que a identidade gerenciada atribuída pelo sistema for desabilitada.
Crie um aplicativo Spring Boot de exemplo com o Spring Boot starter
Este aplicativo tem acesso para obter segredos do Azure Key Vault. Utilize o Azure Key Vault Secrets Spring Boot Starter. O Azure Key Vault é adicionado como uma instância do Spring PropertySource. Os segredos armazenados no Cofre da Chave do Azure podem ser convenientemente acessados e usados como qualquer propriedade de configuração externalizada, como propriedades em arquivos.
Use o seguinte comando para gerar um projeto de exemplo a partir de
start.spring.iocom o Azure Key Vault Spring Starter.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 -Especifique o Cofre de Chaves na sua aplicação.
cd springapp vim src/main/resources/application.propertiesPara usar a identidade gerenciada para um aplicativo implantado no Azure Spring Apps, adicione propriedades com o seguinte conteúdo ao arquivo src/main/resources/application.properties .
spring.cloud.azure.keyvault.secret.property-sources[0].endpoint=<your-keyvault-url> spring.cloud.azure.keyvault.secret.property-sources[0].credential.managed-identity-enabled=trueNote
Você deve adicionar o URL do cofre da chave no arquivo application.properties , conforme mostrado anteriormente. Caso contrário, a URL do cofre de chaves pode não ser capturada durante o tempo de execução.
Atualize src/main/java/com/example/demo/DemoApplication.java com o exemplo de código a seguir. Este código recupera a string de conexão do Key Vault.
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)); } }Se você abrir o arquivo pom.xml , poderá ver a
spring-cloud-azure-starter-keyvaultdependência, conforme mostrado no exemplo a seguir:<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-keyvault</artifactId> </dependency>
Use o seguinte comando para implantar seu aplicativo no Azure Spring Apps:
az spring app deploy \ --resource-group ${RESOURCE_GROUP} \ --service ${SPRING_APPS} \ --name ${APP} \ --source-path
Use o seguinte comando para implantar seu aplicativo no Azure Spring Apps:
az spring app deploy \ --resource-group ${RESOURCE_GROUP} \ --service ${SPRING_APPS} \ --name ${APP} \ --source-path \ --build-env BP_JVM_VERSION=17
Para testar seu aplicativo, acesse o ponto de extremidade público ou o ponto de extremidade de teste usando o seguinte comando:
curl https://${SPRING_APPS}-${APP}.azuremicroservices.io/getA seguinte mensagem é retornada no corpo da resposta:
jdbc:sqlserver://SERVER.database.windows.net:1433;database=DATABASE;.
Limpeza de recursos
Use o seguinte comando para excluir todo o grupo de recursos, incluindo a instância de serviço recém-criada:
az group delete --name ${RESOURCE_GROUP} --yes
Próximos passos
- Como acessar o blob de armazenamento com identidade gerenciada no Azure Spring Apps
- Habilitar a identidade gerenciada atribuída pelo sistema para aplicativos no Azure Spring Apps
- O que são identidades gerenciadas para recursos do Azure?
- Autenticar aplicativos do Azure Spring com o Key Vault em ações do GitHub