Condividi tramite


Configurare connessioni di database senza password per le app Java in Oracle WebLogic Servers

Questo articolo illustra come configurare connessioni di database senza password per le app Java in Oracle WebLogic Server con il portale di Azure.

In questa guida vengono eseguite le attività seguenti:

  • Effettuare il provisioning delle risorse del database usando l'interfaccia della riga di comando di Azure.
  • Abilitare l'amministratore di Microsoft Entra nel database.
  • Effettuare il provisioning di un'identità gestita assegnata dall'utente e crearne uno.
  • Configurare una connessione di database senza password in Oracle WebLogic con il portale di Azure.
  • Convalidare la connessione al database.

Offre il supporto di connessioni senza password per i database PostgreSQL, MySQL e SQL di Azure.

Prerequisiti

Creare un gruppo di risorse

Come prima cosa creare un gruppo di risorse con az group create. Poiché i gruppi di risorse devono essere univoci all'interno di una sottoscrizione, selezionare un nome univoco. Un modo semplice per avere nomi univoci consiste nell'usare una combinazione di iniziali, data odierna e identificatore. Ad esempio, abc1228rg. Questo esempio crea un gruppo di risorse denominato abc1228rg nel eastus percorso:

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

Creare un server di database e un database

Creare un server flessibile con il comando az mysql flexible-server create. In questo esempio viene creato un server flessibile denominato mysql20221201 con l'utente azureuser amministratore e la password Secret123456amministratore . Sostituire la password con il proprio. Per altre informazioni, vedere Creare un server flessibile Database di Azure per MySQL usando l'interfaccia della riga di comando di 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

Creare un database con 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

Al termine del comando, verrà visualizzato un output simile all'esempio seguente:

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"
}

Configurare un amministratore di Microsoft Entra nel database

Dopo aver creato il database, è necessario prepararlo per supportare le connessioni senza password. Una connessione senza password richiede una combinazione di identità gestite per le risorse di Azure e l'autenticazione di Microsoft Entra. Per una panoramica delle identità gestite per le risorse di Azure, vedere Che cosa sono le identità gestite per le risorse di Azure?

Per informazioni sull'interazione del server flessibile MySQL con le identità gestite, vedere Usare l'ID Microsoft Entra per l'autenticazione con MySQL.

L'esempio seguente configura l'utente corrente dell'interfaccia della riga di comando di Azure come account amministratore di Microsoft Entra. Per abilitare l'autenticazione di Azure, è necessario assegnare un'identità al server flessibile MySQL.

Creare prima di tutto un'identità gestita con az identity create e assegnare l'identità al server MySQL con 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

Impostare quindi l'utente corrente dell'interfaccia della riga di comando di Azure come account amministratore di Microsoft Entra con 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

Creare un'identità gestita assegnata dall'utente

Successivamente, nell'interfaccia della riga di comando di Azure creare un'identità nella sottoscrizione usando il comando az identity create . Usare questa identità gestita per connettersi al database.

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

Per configurare l'identità nei passaggi seguenti, usare il comando az identity show per archiviare l'ID client dell'identità in una variabile della 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)

Creare un utente di database per l'identità gestita

Connettersi ora come utente amministratore di Microsoft Entra al database MySQL e creare un utente MySQL per l'identità gestita.

Prima di tutto, è necessario creare una regola del firewall per accedere al server MySQL dal client dell'interfaccia della riga di comando. Eseguire i comandi seguenti per ottenere l'indirizzo IP corrente.

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

Se si usa sottosistema Windows per Linux (WSL) con VPN abilitata, il comando seguente potrebbe restituire un indirizzo IPv4 non corretto. Un modo per ottenere l'indirizzo IPv4 consiste nel visitare whatismyipaddress.com. In ogni caso, impostare la variabile MY_IP di ambiente come indirizzo IPv4 da cui connettersi al database.

Creare una regola del firewall temporanea con 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}

Preparare quindi un file .sql per creare un utente di database per l'identità gestita. Nell'esempio seguente viene aggiunto un utente con nome identity-contoso di accesso e vengono concessi i privilegi utente per accedere al database 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

Eseguire il file .sql con il comando az mysql flexible-server execute. È possibile ottenere il token di accesso con il 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"

Potrebbe essere richiesto di installare l'estensione rdbms-connect , come illustrato nell'output seguente. Premere y per continuare. Se non si lavora con l'utente root , è necessario immettere la password dell'utente.

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 il file .sql viene eseguito correttamente, l'output è simile all'esempio seguente:

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

L'identità myManagedIdentity gestita ha ora accesso al database durante l'autenticazione con il nome utente identity-contoso.

Se non si vuole più accedere al server da questo indirizzo IP, è possibile rimuovere la regola del firewall usando il comando seguente.

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

Usare infine il comando seguente per ottenere il stringa di connessione usato nella sezione successiva.

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

Configurare una connessione di database senza password per Oracle WebLogic Server in macchine virtuali di Azure

Questa sezione illustra come configurare la connessione all'origine dati senza password usando le offerte di Azure Marketplace per Oracle WebLogic Server.

Iniziare prima di tutto il processo di distribuzione di un'offerta. Le offerte seguenti supportano connessioni di database senza password:

Immettere le informazioni necessarie nel riquadro Informazioni di base e in altri riquadri se si desidera abilitare le funzionalità. Quando si raggiunge il riquadro Database , compilare la configurazione senza password, come illustrato nei passaggi seguenti.

  1. Per Connetti al database? selezionare .
  2. In Impostazioni di connessione aprire il menu a discesa in Scegliere il tipo di database e quindi selezionare MySQL (con supporto per la connessione senza password).
  3. Per Nome JNDI, immettere testpasswordless o il valore previsto.
  4. Per Stringa di connessione DataSource immettere il stringa di connessione ottenuto nell'ultima sezione.
  5. Per Nome utente database immettere il nome utente del database dell'identità gestita (il valore di ${IDENTITY_LOGIN_NAME}). In questo esempio il valore è identity-contoso.
  6. Selezionare Usa connessione origine dati senza password.
  7. Per Identità gestita assegnata dall'utente selezionare l'identità gestita creata in precedenza. In questo esempio il nome è myManagedIdentity.

La sezione Impostazioni di connessione dovrebbe essere simile alla schermata seguente, che usa il cluster Oracle WebLogic Server nelle macchine virtuali come esempio.

Screenshot del portale di Azure che mostra il riquadro Configura database della pagina Crea Oracle WebLogic Server nelle macchine virtuali.

La configurazione della connessione senza password è stata completata. È possibile continuare a compilare i riquadri seguenti o selezionare Rivedi e crea, quindi Crea per distribuire l'offerta.

Verificare la connessione al database

La connessione al database viene configurata correttamente se la distribuzione dell'offerta viene completata senza errori.

Continuando a usare Oracle WebLogic Server Cluster in macchine virtuali come esempio, al termine della distribuzione, seguire questa procedura nella portale di Azure per trovare l'URL della console di amministrazione.

  1. Trovare il gruppo di risorse in cui è stato distribuito WLS.
  2. Selezionare Distribuzioni in Impostazioni.
  3. Selezionare la distribuzione con la durata più lunga. Questa distribuzione deve trovarsi nella parte inferiore dell'elenco.
  4. Selezionare Output.
  5. L'URL della console di amministrazione di WebLogic è il valore dell'output adminConsoleUrl .
  6. Copiare il valore della variabile adminConsoleUrldi output .
  7. Incollare il valore nella barra degli indirizzi del browser e premere INVIO per aprire la pagina di accesso della Console di amministrazione WebLogic.

Per verificare la connessione al database, seguire questa procedura.

  1. Accedere alla console di amministrazione di WebLogic con il nome utente e la password specificati nel riquadro Informazioni di base.

  2. In Struttura di dominio selezionare Servizi, Origini dati e quindi testpasswordless.

  3. Selezionare la scheda Monitoraggio , in cui lo stato dell'origine dati è In esecuzione, come illustrato nello screenshot seguente.

  4. Selezionare la scheda Test e quindi selezionare il pulsante di opzione accanto al server desiderato.

  5. Selezionare Origine dati di test. Verrà visualizzato un messaggio che indica un test riuscito, come illustrato nello screenshot seguente.

    Screenshot del portale di WebLogic Console che mostra un test dell'origine dati con esito positivo.

Pulire le risorse

Se queste risorse non sono necessarie, è possibile eliminarle eseguendo i comandi seguenti:

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

Passaggi successivi

Per altre informazioni sull'esecuzione di WLS in servizio Azure Kubernetes o nelle macchine virtuali, vedere i collegamenti seguenti: