Guia de início rápido: carregar segredos do aplicativo usando o Cofre da Chave
Nota
Os planos Basic, Standard e Enterprise serão preteridos a partir de meados de março de 2025, com um período de aposentadoria de 3 anos. Recomendamos a transição para os Aplicativos de Contêiner do Azure. Para obter mais informações, consulte o anúncio de aposentadoria do Azure Spring Apps.
O plano de consumo padrão e dedicado será preterido a partir de 30 de setembro de 2024, com um desligamento completo após seis meses. Recomendamos a transição para os Aplicativos de Contêiner do Azure. Para obter mais informações, consulte Migrar consumo padrão e plano dedicado do Azure Spring Apps para Aplicativos de Contêiner do Azure.
Este artigo aplica-se a:❌ Basic/Standard ✔️ Enterprise
Este guia de início rápido mostra como carregar segredos com segurança usando o Azure Key Vault para aplicativos que executam o plano Azure Spring Apps Enterprise.
Cada aplicativo tem propriedades que o conectam ao seu ambiente e serviços de suporte. Esses serviços incluem recursos como bancos de dados, ferramentas de registro e monitoramento, plataformas de mensagens e assim por diante. Cada recurso requer uma maneira de localizá-lo e acessá-lo, muitas vezes na forma de URLs e credenciais. Estas informações são frequentemente protegidas por lei e devem ser mantidas em segredo para proteger os dados dos clientes. No Azure Spring Apps, você pode configurar aplicativos para carregar diretamente esses segredos na memória do Cofre da Chave usando identidades gerenciadas e controle de acesso baseado em função do Azure.
Pré-requisitos
- Uma conta do Azure com uma subscrição ativa. Crie uma conta gratuitamente.
- Compreenda e cumpra a secção Requisitos do plano Enterprise no Azure Marketplace.
- A CLI do Azure versão 2.45.0 ou superior.
- Git.
- JQ
- A extensão do plano do Azure Spring Apps Enterprise. Use o comando a seguir para remover versões anteriores e instalar a extensão de plano Enterprise mais recente. Se você instalou
spring-cloud
a extensão anteriormente, desinstale-a para evitar incompatibilidades de configuração e versão.az extension add --upgrade --name spring az extension remove --name spring-cloud
- Conclua as etapas nos seguintes inícios rápidos:
Provisionar o Cofre de Chaves e armazenar segredos
As instruções a seguir descrevem como criar um Cofre de Chaves e salvar segredos de aplicativos com segurança.
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 RESOURCE_GROUP=<resource-group-name> export KEY_VAULT_NAME=<key-vault-name> export POSTGRES_SERVER_NAME=<postgres-server-name> export POSTGRES_USERNAME=<postgres-username> export POSTGRES_PASSWORD=<postgres-password> export REDIS_CACHE_NAME=<redis-cache-name> export AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME=<Azure-Spring-Apps-service-instance-name>
Use o seguinte comando para criar um Cofre de Chaves para armazenar segredos do aplicativo:
az keyvault create \ --resource-group ${RESOURCE_GROUP} \ --name ${KEY_VAULT_NAME}
Use o seguinte comando para armazenar o nome completo do servidor de banco de dados no Cofre da Chave:
az keyvault secret set \ --vault-name ${KEY_VAULT_NAME} \ --name "POSTGRES-SERVER-NAME" \ --value "${POSTGRES_SERVER_NAME}.postgres.database.azure.com"
Use o seguinte comando para armazenar o nome do banco de dados no Cofre da Chave para o aplicativo Serviço de Catálogo:
az keyvault secret set \ --vault-name ${KEY_VAULT_NAME} \ --name "CATALOG-DATABASE-NAME" \ --value "acmefit_catalog"
Use os seguintes comandos para armazenar as credenciais de login do banco de dados no Cofre da Chave:
az keyvault secret set \ --vault-name ${KEY_VAULT_NAME} \ --name "POSTGRES-LOGIN-NAME" \ --value "${POSTGRES_USERNAME}" az keyvault secret set \ --vault-name ${KEY_VAULT_NAME} \ --name "POSTGRES-LOGIN-PASSWORD" \ --value "${POSTGRES_PASSWORD}"
Use o seguinte comando para armazenar a cadeia de conexão do banco de dados no Cofre da Chave para o aplicativo Order Service:
az keyvault secret set \ --vault-name ${KEY_VAULT_NAME} \ --name "ConnectionStrings--OrderContext" \ --value "Server=${POSTGRES_SERVER_NAME};Database=acmefit_order;Port=5432;Ssl Mode=Require;User Id=${POSTGRES_USERNAME};Password=${POSTGRES_PASSWORD};"
Use os seguintes comandos para recuperar as propriedades de conexão Redis e armazená-las no Cofre da Chave:
export REDIS_HOST=$(az redis show \ --resource-group ${RESOURCE_GROUP} \ --name ${REDIS_CACHE_NAME} | jq -r '.hostName') export REDIS_PORT=$(az redis show \ --resource-group ${RESOURCE_GROUP} \ --name ${REDIS_CACHE_NAME} | jq -r '.sslPort') export REDIS_PRIMARY_KEY=$(az redis list-keys \ --resource-group ${RESOURCE_GROUP} \ --name ${REDIS_CACHE_NAME} | jq -r '.primaryKey') az keyvault secret set \ --vault-name ${KEY_VAULT_NAME} \ --name "CART-REDIS-CONNECTION-STRING" \ --value "rediss://:${REDIS_PRIMARY_KEY}@${REDIS_HOST}:${REDIS_PORT}/0"
Se você configurou o logon único, use o seguinte comando para armazenar o URI da chave da Web JSON (JWK) no Cofre da chave:
az keyvault secret set \ --vault-name ${KEY_VAULT_NAME} \ --name "SSO-PROVIDER-JWK-URI" \ --value <jwk-uri>
Conceder aos aplicativos acesso a segredos no Cofre da Chave
As instruções a seguir descrevem como conceder acesso aos segredos do Cofre da Chave para aplicativos implantados no plano do Azure Spring Apps Enterprise.
Use o seguinte comando para habilitar uma Identidade Atribuída ao Sistema para o aplicativo de Serviço de Carrinho:
az spring app identity assign \ --resource-group ${RESOURCE_GROUP} \ --name cart-service \ --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME}
Use os seguintes comandos para definir uma política de acesso do Cofre da Chave para o aplicativo Serviço de
get list
Carrinho:export CART_SERVICE_APP_IDENTITY=$(az spring app show \ --resource-group ${RESOURCE_GROUP} \ --name cart-service \ --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} | jq -r '.identity.principalId') az keyvault set-policy \ --name ${KEY_VAULT_NAME} \ --object-id ${CART_SERVICE_APP_IDENTITY} \ --resource-group ${RESOURCE_GROUP} \ --secret-permissions get list
Use o seguinte comando para habilitar uma Identidade Atribuída ao Sistema para o aplicativo Order Service:
az spring app identity assign \ --resource-group ${RESOURCE_GROUP} \ --name order-service \ --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME}
Use os seguintes comandos para definir uma política de acesso do Cofre da
get list
Chave para o aplicativo Order Service:export ORDER_SERVICE_APP_IDENTITY=$(az spring app show \ --resource-group ${RESOURCE_GROUP} \ --name order-service \ --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} | jq -r '.identity.principalId') az keyvault set-policy \ --name ${KEY_VAULT_NAME} \ --object-id ${ORDER_SERVICE_APP_IDENTITY} \ --resource-group ${RESOURCE_GROUP} \ --secret-permissions get list
Use o seguinte comando para habilitar uma Identidade Atribuída ao Sistema para o aplicativo Serviço de Catálogo:
az spring app identity assign \ --resource-group ${RESOURCE_GROUP} \ --name catalog-service \ --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME}
Use os seguintes comandos para definir uma política de acesso no Cofre da Chave para o aplicativo Serviço de
get list
Catálogo:export CATALOG_SERVICE_APP_IDENTITY=$(az spring app show \ --resource-group ${RESOURCE_GROUP} \ --name catalog-service \ --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} | jq -r '.identity.principalId') az keyvault set-policy \ --name ${KEY_VAULT_NAME} \ --object-id ${CATALOG_SERVICE_APP_IDENTITY} \ --resource-group ${RESOURCE_GROUP} \ --secret-permissions get list
Se você configurou o logon único, use o seguinte comando para habilitar uma Identidade Atribuída ao Sistema para o aplicativo do Serviço de Identidade:
az spring app identity assign \ --resource-group ${RESOURCE_GROUP} \ --name identity-service \ --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME}
Se você configurou o logon único, use os seguintes comandos para definir uma política de acesso no Cofre da Chave para o aplicativo do Serviço de
get list
Identidade:export IDENTITY_SERVICE_APP_IDENTITY=$(az spring app show \ --resource-group ${RESOURCE_GROUP} \ --name identity-service \ --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} | jq -r '.identity.principalId') az keyvault set-policy \ --name ${KEY_VAULT_NAME} \ --object-id ${IDENTITY_SERVICE_APP_IDENTITY} \ --resource-group ${RESOURCE_GROUP} \ --secret-permissions get list
Atualizar aplicativos para carregar segredos do Cofre da Chave
Depois de conceder acesso a segredos de leitura do Cofre de Chaves, use as etapas a seguir para atualizar os aplicativos para usar os novos valores secretos em suas configurações.
Use o seguinte comando para recuperar o URI do Cofre de Chaves a ser usado na atualização de aplicativos:
export KEYVAULT_URI=$(az keyvault show --name ${KEY_VAULT_NAME} --resource-group ${RESOURCE_GROUP} | jq -r '.properties.vaultUri')
Use o seguinte comando para recuperar a URL do Spring Cloud Gateway a ser usada na atualização de aplicativos:
export GATEWAY_URL=$(az spring gateway show \ --resource-group ${RESOURCE_GROUP} \ --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} | jq -r '.properties.url')
Use o comando a seguir para remover o Service Connector que vincula o aplicativo Order Service e o Banco de Dados do Azure para Servidor Flexível PostgreSQL:
az spring connection delete \ --resource-group ${RESOURCE_GROUP} \ --app order-service \ --connection order_service_db \ --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \ --deployment default \ --yes
Use o seguinte comando para atualizar o ambiente do Order Service com o URI para acessar o Cofre da Chave:
az spring app update \ --resource-group ${RESOURCE_GROUP} \ --name order-service \ --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \ --env "ConnectionStrings__KeyVaultUri=${KEYVAULT_URI}" "AcmeServiceSettings__AuthUrl=https://${GATEWAY_URL}" "DatabaseProvider=Postgres"
Use o seguinte comando para remover o Service Connector que vincula o aplicativo do Serviço de Catálogo e o Banco de Dados do Azure para Servidor Flexível PostgreSQL:
az spring connection delete \ --resource-group ${RESOURCE_GROUP} \ --app catalog-service \ --connection catalog_service_db \ --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \ --deployment default \ --yes
Use o seguinte comando para atualizar o ambiente do Serviço de Catálogo e o padrão de configuração para acessar o Cofre da Chave:
az spring app update \ --resource-group ${RESOURCE_GROUP} \ --name catalog-service \ --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \ --config-file-pattern catalog/default,catalog/key-vault \ --env "SPRING_CLOUD_AZURE_KEYVAULT_SECRET_PROPERTY_SOURCES_0_ENDPOINT=${KEYVAULT_URI}" "SPRING_CLOUD_AZURE_KEYVAULT_SECRET_PROPERTY_SOURCES_0_NAME='acme-fitness-store-vault'" "SPRING_PROFILES_ACTIVE=default,key-vault"
Use o seguinte comando para remover o Service Connector que vincula o aplicativo Cart Service e o Cache do Azure para Redis:
az spring connection delete \ --resource-group ${RESOURCE_GROUP} \ --app cart-service \ --connection cart_service_cache \ --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \ --deployment default \ --yes
Use o seguinte comando para atualizar o ambiente do Serviço de Carrinho para acessar o Cofre da Chave:
az spring app update \ --resource-group ${RESOURCE_GROUP} \ --name cart-service \ --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \ --env "CART_PORT=8080" "KEYVAULT_URI=${KEYVAULT_URI}" "AUTH_URL=https://${GATEWAY_URL}"
Se você configurou o logon único, use o seguinte comando para atualizar o ambiente do Serviço de Identidade e o padrão de configuração para acessar o Cofre da Chave:
az spring app update \ --resource-group ${RESOURCE_GROUP} \ --name identity-service \ --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} \ --config-file-pattern identity/default,identity/key-vault \ --env "SPRING_CLOUD_AZURE_KEYVAULT_SECRET_PROPERTY_SOURCES_0_ENDPOINT=${KEYVAULT_URI}" "SPRING_CLOUD_AZURE_KEYVAULT_SECRET_PROPERTY_SOURCES_0_NAME='acme-fitness-store-vault'" "SPRING_PROFILES_ACTIVE=default,key-vault"
Use os seguintes comandos para recuperar a URL do Spring Cloud Gateway:
export GATEWAY_URL=$(az spring gateway show \ --resource-group ${RESOURCE_GROUP} \ --service ${AZURE_SPRING_APPS_SERVICE_INSTANCE_NAME} | jq -r '.properties.url') echo "https://${GATEWAY_URL}"
Você pode abrir o URL de saída em um navegador para explorar o aplicativo atualizado.
Clean up resources (Limpar recursos)
Se você planeja continuar trabalhando com guias de início rápido e tutoriais subsequentes, convém deixar esses recursos no lugar. Quando não for mais necessário, exclua o grupo de recursos, que exclui os recursos do grupo de recursos. Para excluir o grupo de recursos usando a CLI do Azure, use os seguintes comandos:
echo "Enter the Resource Group name:" &&
read resourceGroupName &&
az group delete --name $resourceGroupName &&
echo "Press [ENTER] to continue ..."
Próximos passos
Continue para qualquer um dos seguintes inícios rápidos opcionais: