Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Este artigo mostra como usar conexões sem senha para bancos de dados do Azure em aplicativos Spring Boot implantados no Azure Spring Apps.
Neste tutorial, realiza as seguintes tarefas utilizando o portal Azure ou a CLI do Azure. Ambos os métodos são explicados nos procedimentos a seguir.
- Provisione uma instância do Azure Spring Apps.
- Crie e implante aplicativos no Azure Spring Apps.
- Executar aplicações ligadas a bases de dados Azure usando identidade gerida.
Observação
Este tutorial não funciona para R2DBC.
Pré-requisitos
- Uma assinatura do Azure. Se ainda não tens uma, cria uma conta gratuita.
- CLI do Azure versão 2.45.0 ou superior.
- A extensão Azure Spring Apps. Instale a extensão usando o comando:
az extension add --name spring. - Java Development Kit (JDK), versão 8, 11 ou 17.
- Um Git cliente.
- cURL ou um utilitário HTTP semelhante para testar a funcionalidade.
- Cliente de linha de comandos MySQL se optar por executar o Base de Dados do Azure para MySQL. Pode ligar-se ao seu servidor com Azure Cloud Shell usando uma ferramenta cliente popular, a mysql.exe ferramenta de linha de comandos. Como alternativa, você pode usar a linha de comando
mysqlem seu ambiente local. - Driver ODBC 18 para SQL Server se você optar por executar o Banco de Dados SQL do Azure.
Preparar o ambiente de trabalho
Primeiro, configure algumas variáveis de ambiente usando os seguintes comandos:
export AZ_RESOURCE_GROUP=passwordless-tutorial-rg
export AZ_DATABASE_SERVER_NAME=<YOUR_DATABASE_SERVER_NAME>
export AZ_DATABASE_NAME=demodb
export AZ_LOCATION=<YOUR_AZURE_REGION>
export AZ_SPRING_APPS_SERVICE_NAME=<YOUR_AZURE_SPRING_APPS_SERVICE_NAME>
export AZ_SPRING_APPS_APP_NAME=hellospring
export AZ_DB_ADMIN_USERNAME=<YOUR_DB_ADMIN_USERNAME>
export AZ_DB_ADMIN_PASSWORD=<YOUR_DB_ADMIN_PASSWORD>
export AZ_USER_IDENTITY_NAME=<YOUR_USER_ASSIGNED_MANAGEMED_IDENTITY_NAME>
Substitua os marcadores de posição pelos seguintes valores, que são usados ao longo deste artigo:
-
<YOUR_DATABASE_SERVER_NAME>: O nome do seu servidor de Banco de Dados do Azure, que deve ser exclusivo no Azure. -
<YOUR_AZURE_REGION>: A região do Azure que você deseja usar. Podes usareastuspor defeito, mas configura uma região mais próxima de onde vives. Consulte a lista completa de regiões disponíveis usandoaz account list-locations. -
<YOUR_AZURE_SPRING_APPS_SERVICE_NAME>: O nome da sua instância do Azure Spring Apps. O nome deve ter entre 4 e 32 caracteres e pode conter apenas letras minúsculas, números e hífenes. O primeiro caractere do nome do serviço deve ser uma letra e o último caractere deve ser uma letra ou um número. -
<AZ_DB_ADMIN_USERNAME>: O nome de usuário admin do seu servidor de banco de dados do Azure. -
<AZ_DB_ADMIN_PASSWORD>: A senha de administrador do seu servidor de banco de dados do Azure. -
<YOUR_USER_ASSIGNED_MANAGEMED_IDENTITY_NAME>: O nome do servidor de identidade gerenciado atribuído ao usuário, que deve ser exclusivo no Azure.
Provisionar uma instância do Azure Spring Apps
Use as etapas a seguir para provisionar uma instância do Azure Spring Apps.
Atualize a CLI do Azure com a extensão Azure Spring Apps usando o seguinte comando:
az extension update --name springEntre na CLI do Azure e escolha sua assinatura ativa usando os seguintes comandos:
az login az account list --output table az account set --subscription <name-or-ID-of-subscription>Use os seguintes comandos para criar um grupo de recursos para conter seu serviço Azure Spring Apps e uma instância do serviço Azure Spring Apps:
az group create \ --name $AZ_RESOURCE_GROUP \ --location $AZ_LOCATION az spring create \ --resource-group $AZ_RESOURCE_GROUP \ --name $AZ_SPRING_APPS_SERVICE_NAME
Criar uma instância de banco de dados do Azure
Use as etapas a seguir para provisionar uma instância do Banco de Dados do Azure.
- Banco de Dados do Azure para MySQL
- Banco de Dados do Azure para PostgreSQL
- Banco de Dados SQL do Azure
Crie um Banco de Dados do Azure para o servidor MySQL usando o seguinte comando:
az mysql flexible-server create \ --resource-group $AZ_RESOURCE_GROUP \ --name $AZ_DATABASE_SERVER_NAME \ --location $AZ_LOCATION \ --admin-user $AZ_DB_ADMIN_USERNAME \ --admin-password $AZ_DB_ADMIN_PASSWORD \ --yes
Observação
Se não fornecer os parâmetros admin-user ou admin-password, o sistema gera um utilizador administrador por defeito ou uma palavra-passe de administrador aleatória.
Crie um novo banco de dados usando o seguinte comando:
az mysql flexible-server db create \ --resource-group $AZ_RESOURCE_GROUP \ --database-name $AZ_DATABASE_NAME \ --server-name $AZ_DATABASE_SERVER_NAME
Criar uma app com um endpoint público atribuído
Use o comando a seguir para criar o aplicativo.
az spring app create \
--resource-group $AZ_RESOURCE_GROUP \
--service $AZ_SPRING_APPS_SERVICE_NAME \
--name $AZ_SPRING_APPS_APP_NAME \
--runtime-version=Java_17
--assign-endpoint true
Conectar o Azure Spring Apps ao banco de dados do Azure
Primeiro, instale o Service Connector extensão sem senha para a CLI do Azure:
az extension add --name serviceconnector-passwordless --upgrade
- Banco de Dados do Azure para MySQL
- Banco de Dados do Azure para PostgreSQL
- Banco de Dados SQL do Azure
Em seguida, use o seguinte comando para criar uma identidade gerenciada atribuída pelo usuário para autenticação do Microsoft Entra. Para obter mais informações, consulte Configurar a autenticação do Microsoft Entra para o Banco de Dados do Azure para MySQL - Servidor Flexível.
export AZ_IDENTITY_RESOURCE_ID=$(az identity create \
--name $AZ_USER_IDENTITY_NAME \
--resource-group $AZ_RESOURCE_GROUP \
--query id \
--output tsv)
Importante
Depois de criar a identidade atribuída ao usuário, peça ao Administrador Global ou ao Administrador de Função Privilegiada para conceder as seguintes permissões para essa identidade: User.Read.All, GroupMember.Read.Alle Application.Read.ALL. Para obter mais informações, consulte a secção Permissões
Em seguida, use o comando a seguir para criar uma conexão sem senha com o banco de dados.
az spring connection create mysql-flexible \
--resource-group $AZ_RESOURCE_GROUP \
--service $AZ_SPRING_APPS_SERVICE_NAME \
--app $AZ_SPRING_APPS_APP_NAME \
--target-resource-group $AZ_RESOURCE_GROUP \
--server $AZ_DATABASE_SERVER_NAME \
--database $AZ_DATABASE_NAME \
--system-identity mysql-identity-id=$AZ_IDENTITY_RESOURCE_ID
Este comando Service Connector executa as seguintes tarefas em segundo plano:
Ativa a identidade gerida atribuída ao sistema para a aplicação
$AZ_SPRING_APPS_APP_NAMEalojada pelo Azure Spring Apps.Define o administrador do Microsoft Entra como o utilizador com sessão iniciada atualmente.
Adiciona um utilizador da base de dados com o nome
$AZ_SPRING_APPS_SERVICE_NAME/apps/$AZ_SPRING_APPS_APP_NAMEda identidade gerida criada no passo 1 e concede todos os privilégios da base de dados$AZ_DATABASE_NAMEa esse utilizador.Adiciona duas configurações à aplicação
$AZ_SPRING_APPS_APP_NAME:spring.datasource.urlespring.datasource.username.Observação
Se vires a mensagem
The subscription is not registered to use Microsoft.ServiceLinkerde erro, executa o comandoaz provider register --namespace Microsoft.ServiceLinkerpara registar o fornecedor de recursos do Service Connector e depois executa novamente o comando de conexão.
Criar e implantar o aplicativo
As etapas a seguir descrevem como baixar, configurar, compilar e implantar o aplicativo de exemplo.
Use o seguinte comando para clonar o repositório de código de exemplo:
- Banco de Dados do Azure para MySQL
- Banco de Dados do Azure para PostgreSQL
- Banco de Dados SQL do Azure
git clone https://github.com/Azure-Samples/quickstart-spring-data-jdbc-mysql passwordless-sampleAdicione a seguinte dependência ao seu arquivo pom.xml:
- Banco de Dados do Azure para MySQL
- Banco de Dados do Azure para PostgreSQL
- Banco de Dados SQL do Azure
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-jdbc-mysql</artifactId> </dependency>Essa dependência adiciona suporte para o Spring Cloud Azure starter.
Observação
Para obter mais informações sobre como gerenciar versões da biblioteca do Azure do Spring Cloud usando uma lista de materiais (BOM), consulte a seção Introdução do guia do desenvolvedor do Spring Cloud Azure.
Use o seguinte comando para atualizar o arquivo application.properties
: - Banco de Dados do Azure para MySQL
- Banco de Dados do Azure para PostgreSQL
- Banco de Dados SQL do Azure
cat << EOF > passwordless-sample/src/main/resources/application.properties logging.level.org.springframework.jdbc.core=DEBUG spring.datasource.azure.passwordless-enabled=true spring.sql.init.mode=always EOFUse os seguintes comandos para construir o projeto usando o Maven:
cd passwordless-sample ./mvnw clean package -DskipTestsUse o seguinte comando para implantar o arquivo de destino/demo-0.0.1-SNAPSHOT.jar para o aplicativo:
az spring app deploy \ --name $AZ_SPRING_APPS_APP_NAME \ --service $AZ_SPRING_APPS_SERVICE_NAME \ --resource-group $AZ_RESOURCE_GROUP \ --artifact-path target/demo-0.0.1-SNAPSHOT.jarConsulte o status do aplicativo após a implantação usando o seguinte comando:
az spring app list \ --service $AZ_SPRING_APPS_SERVICE_NAME \ --resource-group $AZ_RESOURCE_GROUP \ --output tableVocê vê uma saída semelhante ao exemplo a seguir.
Name Location ResourceGroup Production Deployment Public Url Provisioning Status CPU Memory Running Instance Registered Instance Persistent Storage ----------------- ---------- --------------- ----------------------- --------------------------------------------------- --------------------- ----- -------- ------------------ --------------------- -------------------- <app name> eastus <resource group> default Succeeded 1 2 1/1 0/1 -
Testar a aplicação
Para testar a aplicação, use cURL. Primeiro, crie um novo item "todo" na base de dados utilizando o seguinte comando:
curl --header "Content-Type: application/json" \
--request POST \
--data '{"description":"configuration","details":"congratulations, you have set up JDBC correctly!","done": "true"}' \
https://${AZ_SPRING_APPS_SERVICE_NAME}-hellospring.azuremicroservices.io
Este comando retorna o item criado, conforme mostrado no exemplo a seguir:
{"id":1,"description":"configuration","details":"congratulations, you have set up JDBC correctly!","done":true}
Em seguida, recupere os dados usando a seguinte solicitação cURL:
curl https://${AZ_SPRING_APPS_SERVICE_NAME}-hellospring.azuremicroservices.io
Este comando devolve a lista de itens "todo", incluindo o item que criou, conforme mostrado no exemplo seguinte:
[{"id":1,"description":"configuration","details":"congratulations, you have set up JDBC correctly!","done":true}]
Limpar recursos
Para limpar todos os recursos usados durante este tutorial, exclua o grupo de recursos usando o seguinte comando:
az group delete \
--name $AZ_RESOURCE_GROUP \
--yes