Partilhar via


Configurar conexões de banco de dados sem senha para aplicativos Java no IBM WebSphere Application Server

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

Neste guia, você realiza as seguintes tarefas:

  • Provisione recursos de banco de dados usando a CLI do Azure.
  • Habilite o administrador do Microsoft Entra no banco de dados.
  • Provisione uma identidade gerenciada atribuída pelo usuário e crie um usuário de banco de dados para ela.
  • Configure uma conexão de banco de dados sem senha nas ofertas do IBM WebSphere Application Server com o portal do Azure.
  • Valide a conexão do banco de dados.

Este serviço suporta conexões sem senha para bancos de dados PostgreSQL, MySQL e SQL do Azure.

Pré-requisitos

Selecione uma região para a implantação

Selecione uma região que tenha SKUs disponíveis para o banco de dados desejado. O comando da CLI do Azure a seguir lista as SKUs disponíveis em uma determinada região. Continue tentando diferentes regiões até encontrar uma que tenha alguns resultados.

az mysql flexible-server list-skus --location "$REGION" --output table

Criar um grupo de recursos

Crie um grupo de recursos com az group create. Como os grupos de recursos devem ser exclusivos dentro de 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 nomeado abc1228rg no eastus local.

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

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 nomeado mysql20221201 com usuário azureuser admin e senha Secret123456admin . Substitua a senha pela sua. Para obter mais informações, consulte Criar um Banco de Dados do Azure para o Servidor Flexível 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 ${REGION} \
    --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, você precisa deixá-lo pronto para suportar 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, consulte O que são identidades gerenciadas para recursos do Azure?

Para obter informações sobre como o Servidor Flexível do MySQL interage com identidades gerenciadas, consulte a documentação do Banco de Dados do Azure para 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 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

Em seguida, defina o utilizador atual do Azure CLI 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 pelo usuário

Em seguida, na CLI do Azure, crie uma identidade em sua assinatura usando o comando az identity create. Você usa essa identidade gerenciada para se conectar ao seu 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 o ID do cliente da identidade 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 sua identidade gerenciada

Primeiro, é necessário criar uma regra de firewall para acessar o servidor de banco de dados a partir do cliente CLI. Execute os seguintes comandos para obter o seu endereço IP atual:

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

Se você estiver trabalhando no Windows Subsystem for Linux (WSL) com VPN habilitada, o comando a seguir pode retornar um endereço IPv4 incorreto. Uma maneira de obter seu endereço IPv4 é visitando whatismyipaddress.com. Defina a variável de ambiente MY_IP como o endereço IPv4 a partir do qual você deseja se conectar ao banco de dados. Configure o firewall do banco de dados com esse endereço IP mais tarde.

Conecte-se como o usuário administrador do Microsoft Entra ao seu banco de dados MySQL e crie um usuário MySQL para sua identidade gerenciada.

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 logon identity-contoso e concede ao usuário 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 recuperar 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"

Você pode ser solicitado a instalar a extensão rdbms-connect, conforme mostrado na saída a seguir. Pressione y para continuar. Se não estiver a trabalhar com o utilizador root, precisará de inserir a palavra-passe do utilizador.

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, sua saída será semelhante ao exemplo a seguir:

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

A identidade myManagedIdentity gerida agora tem acesso à base de dados ao autenticar com o nome de utilizador identity-contoso.

Se já não pretender aceder ao servidor a partir deste endereço IP, pode remover a regra de firewall utilizando o seguinte comando:

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

Finalmente, use o seguinte comando para obter a cadeia de conexão que você usa 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 IBM WebSphere Application Server em VMs do Azure

Antes de continuar, verifique se a identidade do Azure que você usa para entrar e concluir este artigo tem a função Proprietário na assinatura atual ou as funções de Colaborador e Administrador de Acesso de Usuário na assinatura atual. Para obter uma visão geral das funções do Azure, consulte O que é o controle de acesso baseado em função do Azure (Azure RBAC)? Para obter detalhes sobre as funções específicas exigidas pela oferta de mercado do Oracle WebLogic, consulte Funções internas do Azure.

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

Primeiro, comece o processo de implantação de uma oferta. O seguinte oferece suporte a conexões de banco de dados sem senha:

Insira as informações necessárias no painel Noções básicas e noutros painéis se quiser ativar as funcionalidades. Quando você chegar ao painel Banco de Dados , insira a configuração sem senha, conforme mostrado nas seguintes etapas:

  1. Em Conectar ao 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 SQL do Azure (com suporte para conexão sem senha).
  3. Para Nome JNDI, digite testpasswordless ou seu valor esperado.
  4. Para DataSource Connection String, insira a cadeia de conexão obtida na última seção.
  5. Selecione Usar conexão de fonte de dados sem senha.
  6. Em Identidade gerenciada atribuída ao usuário, selecione a identidade gerenciada criada na etapa anterior. Neste exemplo, seu nome é myManagedIdentity.
  7. Selecione Adicionar.

A seção Configurações de conexão deve se parecer com a seguinte captura de tela:

Captura de ecrã do portal do Azure que mostra a página Escolher tipo de base de dados.

Verificar a conexão do banco de dados

A conexão de banco de dados será configurada com êxito se a implantação da oferta for concluída sem erros.

Após a conclusão da implantação, siga estas etapas no portal do Azure para localizar a URL do Admin Console.

  1. Encontre o grupo de recursos no qual você implantou o WebSphere.
  2. Em Configurações, selecione Implantações.
  3. Selecione a implantação com a maior duração. Essa implantação deve estar na parte inferior da lista.
  4. Selecione Resultados.
  5. A URL do Integrated Solutions Console é o valor da saída adminSecuredConsole .
  6. Copie o valor da variável de saída adminSecuredConsole.
  7. Cole o valor na barra de endereço do navegador e pressione Enter para abrir a página de login do Integrated Solutions Console.

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

  1. Inicie sessão na Consola de Soluções Integradas com o nome de utilizador e palavra-passe fornecidos no painel Noções básicas .
  2. No painel de navegação, expanda Recursos e JDBC.
  3. Selecione Fontes de dados.
  4. Marque a caixa de seleção ao lado da linha com o valor do nome JNDI correspondente ao valor inserido na guia Banco de dados .
  5. Selecione Testar ligação.
  6. Você verá uma mensagem informando algo semelhante a The test connection operation for data source dataSource-sqlserver on server server1 at node was0aef4a-vmNode01 was successful.

A captura de tela a seguir destaca os elementos relevantes da interface do usuário:

Captura de tela do console de soluções integradas que mostra a página do banco de dados de teste.

Limpeza de recursos

Se você não precisar desses recursos, poderá excluí-los usando os seguintes comandos:

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

Próximos passos

Saiba mais sobre como executar o WebSphere Application Server em AKS, Azure RedHat OpenShift ou máquinas virtuais seguindo estes links: