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.
Banco de Dados do Azure para MySQL é um serviço de banco de dados relacional alimentado pela edição da comunidade MySQL. Você pode usar o Servidor Único ou o Servidor Flexível para hospedar um banco de dados MySQL no Azure. É uma oferta de banco de dados como serviço totalmente gerenciada que pode lidar com cargas de trabalho de missão crítica com desempenho previsível e escalabilidade dinâmica.
A partir da versão 4.5.0, o Spring Cloud Azure dá suporte a vários tipos de credenciais para autenticação no Banco de Dados do Azure para o servidor MySQL Flexível.
Versão MySQL suportada
A versão atual do starter deve usar o Banco de Dados do Azure para MySQL Flexible Server versão 5.7 ou 8.0.
Principais características
Ligação sem palavra-passe
A conexão sem senha usa a autenticação do Microsoft Entra para se conectar aos serviços do Azure sem armazenar credenciais no aplicativo, em seus arquivos de configuração ou em variáveis de ambiente. A autenticação do Microsoft Entra é um mecanismo para se conectar ao Banco de Dados do Azure para MySQL usando identidades definidas na ID do Microsoft Entra. Com a autenticação do Microsoft Entra, você pode gerenciar identidades de usuário de banco de dados e outros serviços da Microsoft em um local central, o que simplifica o gerenciamento de permissões.
Como funciona
O Spring Cloud Azure primeiro criará um dos seguintes tipos de credenciais, dependendo da configuração de autenticação do aplicativo:
ClientSecretCredentialClientCertificateCredentialUsernamePasswordCredentialManagedIdentityCredentialDefaultAzureCredential
Se nenhum desses tipos de credenciais for encontrado, as credenciais DefaultAzureCredential serão obtidas das propriedades do aplicativo, variáveis de ambiente, identidades gerenciadas ou do IDE. Para obter mais informações, consulte de autenticação do Spring Cloud Azure .
O diagrama de alto nível a seguir resume como a autenticação funciona usando a autenticação de credenciais OAuth com o Banco de Dados do Azure para MySQL. As setas indicam vias de comunicação.
Configuração
O Spring Cloud Azure para MySQL suporta os seguintes dois níveis de opções de configuração:
As opções de configuração de autenticação global do
credentialeprofilecom prefixos despring.cloud.azure.Opções de configuração comuns do Spring Cloud Azure para MySQL.
A tabela a seguir mostra as opções de configuração comuns do Spring Cloud Azure para MySQL:
| Designação | Descrição |
|---|---|
| spring.datasource.azure.passwordless-enabled | Se é necessário habilitar conexões sem senha para bancos de dados do Azure usando credenciais de token OAuth2 Microsoft Entra. |
| spring.datasource.azure.credential.client-certificate-password | Senha do arquivo de certificado. |
| spring.datasource.azure.credential.client-certificate-path | Caminho de um arquivo de certificado PEM a ser usado ao executar a autenticação da entidade de serviço com o Azure. |
| spring.datasource.azure.credential.client-id | ID do cliente a ser usada ao executar a autenticação da entidade de serviço com o Azure. Esta é uma propriedade legada. |
| spring.datasource.azure.credential.client-secret | Segredo do cliente a ser usado ao executar a autenticação da entidade de serviço com o Azure. Esta é uma propriedade legada. |
| spring.datasource.azure.credential.managed-identity-enabled | Se a identidade gerenciada deve ser habilitada para autenticação com o Azure. Se true e o client-id estiver definido, usará o ID do cliente como ID do cliente de identidade gerenciada atribuído ao usuário. O valor padrão é false. |
| spring.datasource.azure.credential.password | Senha a ser usada ao executar a autenticação de nome de usuário/senha com o Azure. |
| spring.datasource.azure.credential.username | Nome de usuário a ser usado ao executar a autenticação de nome de usuário/senha com o Azure. |
| spring.datasource.azure.profile.cloud-type | Nome da nuvem do Azure à qual se conectar. |
| spring.datasource.azure.profile.environment.active-directory-endpoint | O ponto de extremidade do Microsoft Entra ao qual se conectar. |
| spring.datasource.azure.profile.tenant-id | ID do locatário para recursos do Azure. Os valores permitidos para tenant-id são: common, organizations, consumersou o ID do locatário. |
Configuração de dependência
Adicione a seguinte dependência ao seu projeto. Isso incluirá automaticamente a dependência spring-boot-starter em seu projeto transitivamente.
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter-jdbc-mysql</artifactId>
</dependency>
Observação
Conexões sem senha são suportadas desde a versão 4.5.0.
Lembre-se de adicionar a lista técnica spring-cloud-azure-dependencies juntamente com a dependência acima. Para obter mais informações, consulte a seção Introdução do guia do desenvolvedor do Spring Cloud Azure.
Utilização básica
As seções a seguir mostram os cenários clássicos de uso do aplicativo Spring Boot.
Importante
A conexão sem senha usa a autenticação do Microsoft Entra. Para usar a autenticação do Microsoft Entra, você deve definir o usuário administrador do Microsoft Entra primeiro. Somente um usuário administrador do Microsoft Entra pode criar e habilitar usuários para autenticação baseada em ID do Microsoft Entra. Para obter mais informações, consulte Usar o Spring Data JDBC com o Banco de Dados do Azure para MySQL.
Conectar-se ao Azure MySQL localmente sem senha
Para criar usuários e conceder permissão, consulte a seção Criar um usuário não administrador do MySQL e conceder permissão de Usar o JDBC do Spring Data com o Banco de Dados do Azure para MySQL.
Configure as seguintes propriedades no arquivo application.yml:
spring: datasource: url: jdbc:mysql://${AZURE_MYSQL_SERVER_NAME}.mysql.database.azure.com:3306/${AZURE_MYSQL_DATABASE_NAME} username: ${AZURE_MYSQL_AD_NON_ADMIN_USERNAME} azure: passwordless-enabled: true
Conectar-se ao Azure MySQL usando uma entidade de serviço
Crie um usuário do Microsoft Entra para a entidade de serviço e conceda permissão.
Primeiro, use os seguintes comandos para configurar algumas variáveis de ambiente.
export AZURE_MYSQL_AZURE_AD_SP_USERID=$(az ad sp list \ --display-name <service_principal-name> \ --query '[0].appId' --output tsv) export AZURE_MYSQL_AZURE_AD_SP_USERNAME=<YOUR_MYSQL_AZURE_AD_USERNAME> export AZURE_MYSQL_SERVER_NAME=<YOUR_MYSQL_SERVER_NAME> export AZURE_MYSQL_DATABASE_NAME=<YOUR_MYSQL_DATABASE_NAME> export CURRENT_USERNAME=$(az ad signed-in-user show \ --query userPrincipalName \ --output tsv)Em seguida, crie um script SQL chamado create_ad_user_sp.sql para criar um usuário não administrador. Adicione o seguinte conteúdo e salve-o localmente:
cat << EOF > create_ad_user_sp.sql SET aad_auth_validate_oids_in_tenant = OFF; CREATE AADUSER '$AZURE_MYSQL_AZURE_AD_SP_USERNAME' IDENTIFIED BY '$AZURE_MYSQL_AZURE_AD_SP_USERID'; GRANT ALL PRIVILEGES ON $AZURE_MYSQL_DATABASE_NAME.* TO '$AZURE_MYSQL_AZURE_AD_SP_USERNAME'@'%'; FLUSH privileges; EOFUse o seguinte comando para executar o script SQL para criar o usuário não administrador do Microsoft Entra:
mysql -h $AZURE_MYSQL_SERVER_NAME.mysql.database.azure.com --user $CURRENT_USERNAME --enable-cleartext-plugin --password=$(az account get-access-token --resource-type oss-rdbms --output tsv --query accessToken) < create_ad_user_sp.sqlAgora use o seguinte comando para remover o arquivo de script SQL temporário:
rm create_ad_user_sp.sql
Configure as seguintes propriedades no arquivo application.yml:
spring: cloud: azure: credential: client-id: ${AZURE_CLIENT_ID} client-secret: ${AZURE_CLIENT_SECRET} profile: tenant-id: <tenant> datasource: url: jdbc:mysql://${AZURE_MYSQL_SERVER_NAME}.mysql.database.azure.com:3306/${AZURE_MYSQL_DATABASE_NAME} username: ${AZURE_MYSQL_AD_SP_USERNAME} azure: passwordless-enabled: true
Observação
Os valores permitidos para tenant-id são: common, organizations, consumersou o ID do locatário. Para obter mais informações sobre esses valores, consulte a seção
Conectar-se ao Azure MySQL com identidade gerenciada no Azure Spring Apps
Para habilitar a identidade gerenciada, consulte a seção Atribuir a identidade gerenciada usando o portal do Azure de Migrar um aplicativo para usar conexões sem senha com o Banco de Dados do Azure para MySQL.
Para conceder permissões, consulte a seção Atribuir funções ao de identidade gerenciado de Migrar um aplicativo para usar conexões sem senha com o Banco de Dados do Azure para MySQL.
Configure as seguintes propriedades no arquivo application.yml:
spring: datasource: url: jdbc:mysql://${AZURE_MYSQL_SERVER_NAME}.mysql.database.azure.com:3306/${AZURE_MYSQL_DATABASE_NAME} username: ${AZURE_MYSQL_AD_MI_USERNAME} azure: passwordless-enabled: true
Amostras
Consulte o repositório azure-spring-boot-samples no GitHub.