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
Una sottoscrizione di Azure. Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.
Usare Azure Cloud Shell usando l'ambiente Bash. Assicurarsi che la versione dell'interfaccia della riga di comando di Azure sia 2.43.0 o successiva.
Se si preferisce, installare l'interfaccia della riga di comando di Azure 2.43.0 o versione successiva per eseguire i comandi dell'interfaccia della riga di comando di Azure.
- Se si usa un'installazione locale, accedere all'interfaccia della riga di comando usando il comando az login. Per completare il processo di autenticazione, seguire la procedura visualizzata nel terminale. Per altre opzioni di accesso, vedere Accedere con l'interfaccia della riga di comando di Azure.
- Quando richiesto, installare le estensioni dell'interfaccia della riga di comando di Azure al primo utilizzo. Per altre informazioni sulle estensioni, vedere Usare le estensioni con l'interfaccia della riga di comando di Azure.
- Eseguire az version per trovare la versione e le librerie dipendenti installate. Per eseguire l'aggiornamento alla versione più recente, eseguire az upgrade.
Verificare che l'identità di Azure usata per accedere e completare questo articolo abbia il ruolo Proprietario nella sottoscrizione corrente o i ruoliCollaboratore e Amministratore accesso utenti nella sottoscrizione corrente. Per una panoramica dei ruoli di Azure, vedere Che cos'è il controllo degli accessi in base al ruolo di Azure? Per informazioni dettagliate sui ruoli specifici richiesti dall'offerta oracle WebLogic marketplace, vedere Ruoli predefiniti di Azure.
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 Secret123456
amministratore . 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:
- Oracle WebLogic Server in servizio Azure Kubernetes (AKS)
- Cluster Oracle WebLogic Server nelle macchine virtuali
- Oracle WebLogic Server con server di amministrazione nelle macchine virtuali
- Cluster dinamico oracle WebLogic Server nelle macchine virtuali
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.
- Per Connetti al database? selezionare Sì.
- 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).
- Per Nome JNDI, immettere testpasswordless o il valore previsto.
- Per Stringa di connessione DataSource immettere il stringa di connessione ottenuto nell'ultima sezione.
- 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
. - Selezionare Usa connessione origine dati senza password.
- 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.
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.
- Trovare il gruppo di risorse in cui è stato distribuito WLS.
- Selezionare Distribuzioni in Impostazioni.
- Selezionare la distribuzione con la durata più lunga. Questa distribuzione deve trovarsi nella parte inferiore dell'elenco.
- Selezionare Output.
- L'URL della console di amministrazione di WebLogic è il valore dell'output adminConsoleUrl .
- Copiare il valore della variabile
adminConsoleUrl
di output . - 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.
Accedere alla console di amministrazione di WebLogic con il nome utente e la password specificati nel riquadro Informazioni di base.
In Struttura di dominio selezionare Servizi, Origini dati e quindi testpasswordless.
Selezionare la scheda Monitoraggio , in cui lo stato dell'origine dati è In esecuzione, come illustrato nello screenshot seguente.
Selezionare la scheda Test e quindi selezionare il pulsante di opzione accanto al server desiderato.
Selezionare Origine dati di test. Verrà visualizzato un messaggio che indica un test riuscito, come illustrato nello screenshot seguente.
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: