Compartilhar via


Configurar conexões de banco de dados sem senha para aplicativos Java em Servidores Oracle WebLogic

Este artigo mostra como configurar conexões de banco de dados sem senha para aplicativos Java em ofertas do Oracle WebLogic Server com o portal do Azure.

Neste guia, você realizará as seguintes tarefas:

  • Provisionar recursos de banco de dados usando a CLI do Azure.
  • Habilitar o administrador do Microsoft Entra no banco de dados.
  • Provisionar uma identidade gerenciada atribuída pelo usuário e criar um usuário de banco de dados para ela.
  • Configurar uma conexão de banco de dados sem senha nas ofertas do Oracle WebLogic com o portal do Azure.
  • Validar a conexão de banco de dados.

As ofertas possibilitam conexões sem senha para bancos de dados PostgreSQL, MySQL e SQL do Azure.

Pré-requisitos

Criar um grupo de recursos

Crie um grupo de recursos com az group create. Como os grupos de recursos devem ser exclusivos em uma assinatura, escolha um nome exclusivo. Uma maneira fácil de ter nomes exclusivos é usar uma combinação de suas iniciais, a data de hoje e algum identificador. Por exemplo, abc1228rg. Este exemplo cria um grupo de recursos chamado abc1228rg na localização eastus:

export RESOURCE_GROUP_NAME="abc1228rg"
az group create \
    --name ${RESOURCE_GROUP_NAME} \
    --location eastus

Criar um servidor de banco de dados e um banco de dados

Crie um servidor flexível com o comando az mysql flexible-server create. Este exemplo cria um servidor flexível chamado mysql20221201 com usuário administrador azureuser e senha de administrador Secret123456. Substitua a senha pela sua. Para obter mais informações, consulte Criar um servidor flexível do Banco de Dados do Azure para MySQL usando a CLI do Azure.

export MYSQL_NAME="mysql20221201"
export MYSQL_ADMIN_USER="azureuser"
export MYSQL_ADMIN_PASSWORD="Secret123456"

az mysql flexible-server create \
    --resource-group $RESOURCE_GROUP_NAME \
    --name $MYSQL_NAME \
    --location eastus \
    --admin-user $MYSQL_ADMIN_USER \
    --admin-password $MYSQL_ADMIN_PASSWORD \
    --public-access 0.0.0.0 \
    --tier Burstable \
    --sku-name Standard_B1ms

Crie um banco de dados com az mysql flexible-server db create.

export DATABASE_NAME="contoso"

# create mysql database
az mysql flexible-server db create \
    --resource-group $RESOURCE_GROUP_NAME \
    --server-name $MYSQL_NAME \
    --database-name $DATABASE_NAME

Quando o comando for concluído, você verá uma saída semelhante ao exemplo a seguir:

Creating database with utf8 charset and utf8_general_ci collation
{
  "charset": "utf8",
  "collation": "utf8_general_ci",
  "id": "/subscriptions/contoso-hashcode/resourceGroups/abc1228rg/providers/Microsoft.DBforMySQL/flexibleServers/mysql20221201/databases/contoso",
  "name": "contoso",
  "resourceGroup": "abc1228rg",
  "systemData": null,
  "type": "Microsoft.DBforMySQL/flexibleServers/databases"
}

Configurar um administrador do Microsoft Entra para seu banco de dados

Agora que você criou o banco de dados, precisa prepará-lo para oferecer suporte a conexões sem senha. Uma conexão sem senha requer uma combinação de identidades gerenciadas para recursos do Azure e autenticação do Microsoft Entra. Para obter uma visão geral das identidades gerenciadas para recursos do Azure, confira O que são as identidades gerenciadas para recursos do Azure?

Para obter informações sobre como o Servidor Flexível do MySQL interage com identidades gerenciadas, consulte Usar o Microsoft Entra ID para autenticação com o MySQL.

O exemplo a seguir configura o usuário atual da CLI do Azure como uma conta de administrador do Microsoft Entra. Para habilitar a autenticação do Azure, é necessário atribuir uma identidade ao Servidor Flexível do MySQL.

Primeiro, crie uma identidade gerenciada com az identity create e atribua a identidade ao servidor MySQL com az mysql flexible-server identity assign.

export MYSQL_UMI_NAME="id-mysql-aad-20221205"

# create a User Assigned Managed Identity for MySQL to be used for AAD authentication
az identity create \
    --resource-group $RESOURCE_GROUP_NAME \
    --name $MYSQL_UMI_NAME

## assign the identity to the MySQL server
az mysql flexible-server identity assign \
    --resource-group $RESOURCE_GROUP_NAME \
    --server-name $MYSQL_NAME \
    --identity $MYSQL_UMI_NAME

Depois, defina o usuário atual da CLI do Azure como a conta de administrador do Microsoft Entra com az mysql flexible-server ad-admin create.

export CURRENT_USER=$(az account show --query user.name --output tsv)
export CURRENT_USER_OBJECTID=$(az ad signed-in-user show --query id --output tsv)

az mysql flexible-server ad-admin create \
    --resource-group $RESOURCE_GROUP_NAME \
    --server-name $MYSQL_NAME \
    --object-id $CURRENT_USER_OBJECTID \
    --display-name $CURRENT_USER \
    --identity $MYSQL_UMI_NAME

Criar uma identidade gerenciada atribuída ao usuário

Depois, na CLI do Azure, crie uma identidade na sua assinatura usando o comando az identity create. Use essa identidade gerenciada para se conectar ao banco de dados.

az identity create \
    --resource-group ${RESOURCE_GROUP_NAME} \
    --name myManagedIdentity

Para configurar a identidade nas etapas a seguir, use o comando az identity show para armazenar a ID do recurso da entidade em uma variável de shell.

# Get client ID of the user-assigned identity
export CLIENT_ID=$(az identity show \
    --resource-group ${RESOURCE_GROUP_NAME} \
    --name myManagedIdentity \
    --query clientId \
    --output tsv)

Criar um usuário de banco de dados para a sua identidade gerenciada

Agora, conecte-se como usuário administrador do Microsoft Entra ao banco de dados MySQL e crie um usuário MySQL para sua identidade gerenciada.

Primeiro, crie uma regra de firewall para acessar o servidor MySQL a partir do cliente CLI. Execute os seguintes comandos para obter o endereço IP atual.

export MY_IP=$(curl http://whatismyip.akamai.com)

Se você estiver trabalhando no WSL (Subsistema do Windows para Linux) com VPN habilitada, o comando a seguir poderá retornar um endereço IPv4 incorreto. Um jeito de obter o endereço IPv4 é acessando whatismyipaddress.com. Seja qual for o caso, defina a variável MY_IP de ambiente como o endereço IPv4 a partir do qual você deseja se conectar ao banco de dados.

Crie uma regra de firewall temporária com az mysql flexible-server firewall-rule create.

az mysql flexible-server firewall-rule create \
    --resource-group $RESOURCE_GROUP_NAME \
    --name $MYSQL_NAME \
    --rule-name AllowCurrentMachineToConnect \
    --start-ip-address ${MY_IP} \
    --end-ip-address ${MY_IP}

Em seguida, prepare um arquivo .sql para criar um usuário de banco de dados para a identidade gerenciada. O exemplo a seguir adiciona um usuário com nome de login identity-contoso e concede a ele privilégios para acessar o banco de dados contoso.

export IDENTITY_LOGIN_NAME="identity-contoso"

cat <<EOF >createuser.sql
SET aad_auth_validate_oids_in_tenant = OFF;
DROP USER IF EXISTS '${IDENTITY_LOGIN_NAME}'@'%';
CREATE AADUSER '${IDENTITY_LOGIN_NAME}' IDENTIFIED BY '${CLIENT_ID}';
GRANT ALL PRIVILEGES ON ${DATABASE_NAME}.* TO '${IDENTITY_LOGIN_NAME}'@'%';
FLUSH privileges;
EOF

Execute o arquivo .sql com o comando az mysql flexible-server execute. Você pode obter seu token de acesso com o comando az account get-access-token.

export RDBMS_ACCESS_TOKEN=$(az account get-access-token \
    --resource-type oss-rdbms \
    --query accessToken \
    --output tsv) 

az mysql flexible-server execute \
    --name ${MYSQL_NAME} \
    --admin-user ${CURRENT_USER} \
    --admin-password ${RDBMS_ACCESS_TOKEN} \
    --file-path "createuser.sql"

Talvez você precise instalar a extensão rdbms-connect, conforme mostrado no resultado a seguir. Pressione y para continuar. Se você não estiver trabalhando com o usuário root, precisará inserir a senha do usuário.

The command requires the extension rdbms-connect. Do you want to install it now? The command will continue to run after the extension is installed. (Y/n): y
Run 'az config set extension.use_dynamic_install=yes_without_prompt' to allow installing extensions without prompt.
This extension depends on gcc, libpq-dev, python3-dev and they will be installed first.
[sudo] password for user:

Se o arquivo .sql for executado com êxito, você encontrará um resultado semelhante ao exemplo a seguir:

Running *.sql* file 'createuser.sql'...
Successfully executed the file.
Closed the connection to mysql20221201

A identidade gerenciada myManagedIdentity agora tem acesso ao banco de dados quando faz a autenticação com o nome de usuário identity-contoso.

Se você não quiser mais acessar o servidor a partir desse endereço IP, poderá remover a regra de firewall usando o comando a seguir.

az mysql flexible-server firewall-rule delete \
    --resource-group $RESOURCE_GROUP_NAME \
    --name $MYSQL_NAME \
    --rule-name AllowCurrentMachineToConnect \
    --yes

Por fim, use o comando a seguir para obter a string de conexão que você usará na próxima seção.

export CONNECTION_STRING="jdbc:mysql://${MYSQL_NAME}.mysql.database.azure.com:3306/${DATABASE_NAME}?useSSL=true"
echo ${CONNECTION_STRING}

Configurar uma conexão de banco de dados sem senha para o Oracle WebLogic Server em VMs do Azure

Esta seção mostra como configurar a conexão da fonte de dados sem senha usando as ofertas do Azure Marketplace para o Oracle WebLogic Server.

Primeiro, inicie o processo de implantação de uma oferta. As seguintes ofertas permitem conexões de banco de dados sem senha:

Preencha as informações necessárias no painel Noções básicas e em outros painéis para habilitar os recursos. Quando você acessar o painel Banco de Dados, preencha a configuração sem senha, conforme mostrado nas etapas a seguir.

  1. Em Conectar a um banco de dados?, selecione Sim.
  2. Em Configurações de conexão, para Escolher tipo de banco de dados, abra o menu suspenso e selecione MySQL (com suporte para conexão sem senha).
  3. Para Nome JNDI, insira testpasswordless ou seu valor esperado.
  4. Para String de Conexão de Fonte de Dados, insira a string de conexão obtida na última seção.
  5. Em Nome de usuário do banco de dados, insira o nome de usuário do banco de dados da sua identidade gerenciada (o valor ${IDENTITY_LOGIN_NAME}). Neste exemplo, o valor é identity-contoso.
  6. Selecione Usar conexão de fonte de dados sem senha.
  7. Para Identidade gerenciada atribuída pelo usuário, selecione a identidade gerenciada que você criou anteriormente. Neste exemplo, o nome é myManagedIdentity.

A seção Configurações de conexão deve ser semelhante à captura de tela a seguir, que usa o Cluster do Oracle WebLogic Server em VMs como exemplo.

Captura de tela do portal do Azure mostrando o painel Configurar banco de dados, da página Criar Oracle WebLogic Server em VMs.

Você terminou de configurar a conexão sem senha. Você pode continuar a preencher os painéis a seguir ou selecionar Examinar + criar, depois, , Criar para implantar a oferta.

Verificar a conexão de banco de dados

A conexão do banco de dados será configurada corretamente se a implantação da oferta for concluída sem erro.

Ainda usando o Cluster do Oracle WebLogic Server em VMs como exemplo, depois de terminar a implantação, siga estas etapas no portal do Azure para localizar a URL do Console de Administração.

  1. Encontre o grupo de recursos em que você implantou o WLS.
  2. Em Configurações, selecione Implantações.
  3. Selecione a implantação com a Duração mais longa. Essa implantação deve aparecer na parte inferior da lista.
  4. Selecione Saídas.
  5. A URL do Console de Administração do WebLogic é o valor da saída adminConsoleUrl.
  6. Copie o valor da variável de saída adminConsoleUrl.
  7. Cole o valor na barra de endereço do navegador e pressione Enter para abrir a página de entrada do Console de Administração do WebLogic.

Use as seguintes etapas para verificar a conexão do banco de dados.

  1. Entre no Console de Administração do WebLogic com o nome de usuário e a senha fornecidos no painel Noções básicas.

  2. Em Estrutura de Domínio, selecione Serviços, Fontes de Dados e, em seguida, testpasswordless.

  3. Selecione a guia Monitoramento, em que o estado da fonte de dados é Em execução, conforme mostrado na captura de tela a seguir.

  4. Selecione a Teste e, em seguida, selecione o botão de opção ao lado do servidor desejado.

  5. Selecione Testar Fonte de Dados. Você deverá ver uma mensagem indicando que o teste foi bem-sucedido, conforme mostrado na captura de tela a seguir.

    Captura de tela do portal do WebLogic Console mostrando um teste bem-sucedido da fonte de dados.

Limpar os recursos

Se você não precisar desses recursos, poderá excluí-los executando os comandos a seguir:

az group delete --name ${RESOURCE_GROUP_NAME}
az group delete --name <resource-group-name-that-deploys-the-offer>

Próximas etapas

Saiba mais sobre como executar o WLS no AKS ou em máquinas virtuais seguindo estes links: