Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você 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 Servidor Único ou 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 críticas com desempenho previsível e escalabilidade dinâmica.
Na versão 4.5.0, o Spring Cloud Azure dá suporte a vários tipos de credenciais para autenticação no servidor flexível do Banco de Dados do Azure para MySQL.
Versão do MySQL com suporte
A versão atual do início deve usar a versão do Servidor Flexível do Banco de Dados do Azure para MySQL 5.7 ou 8.0.
Principais recursos
Conexão sem senha
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, 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 criará primeiro 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 de DefaultAzureCredential serão obtidas das propriedades do aplicativo, das variáveis de ambiente, das 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 credencial OAuth com o Banco de Dados do Azure para MySQL. As setas indicam caminhos de comunicação.
Configuração
O Spring Cloud Azure para MySQL dá suporte aos dois níveis de opções de configuração a seguir:
As opções de configuração de autenticação global de
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 Azure para MySQL do Spring Cloud:
| Nome | Descrição |
|---|---|
| spring.datasource.azure.passwordless-enabled | Se deseja habilitar conexões sem senha para bancos de dados do Azure usando as credenciais de token do Microsoft Entra OAuth2. |
| 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 herdada. |
| 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 herdada. |
| spring.datasource.azure.credential.managed-identity-enabled | Se deseja habilitar a identidade gerenciada para autenticar com o Azure. Se true e o client-id estiver definido, usará a ID do cliente como ID do cliente de identidade gerenciada atribuída pelo 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 a ID do locatário. |
Configuração de dependência
Adicione a dependência a seguir 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>
Nota
Há suporte para conexões sem senha desde a versão 4.5.0.
Lembre-se de adicionar o bom spring-cloud-azure-dependencies junto com a dependência acima. Para obter mais informações, consulte a seção Introdução do guia do desenvolvedor do Spring Cloud Azure.
Uso básico
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 JDBC do Spring Data com o Banco de Dados do Azure para MySQL.
Conectar-se ao MySQL do Azure localmente sem senha
Para criar usuários e conceder permissão, consulte o Criar um usuário não administrador do MySQL e conceder permissão seção de Usar o Spring Data JDBC com o Banco de Dados do Azure para MySQL.
Configure as seguintes propriedades em seu arquivo de 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 MySQL do Azure 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 comandos a seguir 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 em seu arquivo de 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
Nota
Os valores permitidos para tenant-id são: common, organizations, consumersou a ID do locatário. Para obter mais informações sobre esses valores, consulte a seção Usado no ponto de extremidade incorreto (contas pessoais e de organização) da Error AADSTS50020 – A conta de usuário do provedor de identidade não existe node locatário. Para obter informações sobre como converter seu aplicativo de locatário único, consulte Converter aplicativo de locatário único em multilocatário no Microsoft Entra ID.
Conectar-se ao MySQL do Azure com a Identidade Gerenciada no Azure Spring Apps
Para habilitar a identidade gerenciada, consulte o Atribuir a identidade gerenciada usando o portal do Azure seção 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 à identidade gerenciada seção do Migrar um aplicativo para usar conexões sem senha com o Banco de Dados do Azure para MySQL.
Configure as seguintes propriedades em seu arquivo de 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.