Configurer des connexions aux bases de données sans mot de passe pour les applications Java sur des serveurs Oracle WebLogic

Cet article vous montre comment configurer des connexions de base de données sans mot de passe pour les applications Java sur les offres Oracle WebLogic Server avec le portail Azure.

Dans ce guide, vous accomplirez les tâches suivantes :

  • Approvisionner des ressources de base de données en utilisant Azure CLI.
  • Activer l’administrateur Microsoft Entra dans la base de données.
  • Approvisionner une identité managée affectée à un utilisateur et créer un utilisateur de base de données pour celle-ci.
  • Configurer une connexion de base de données sans mot de passe dans les offres Oracle WebLogic avec le portail Azure.
  • Valider la connexion à la base de données.

Les offres prennent en charge les connexions sans mot de passe pour les bases de données PostgreSQL, MySQL et Azure SQL.

Prérequis

Créer un groupe de ressources

Créez un groupe de ressources avec la commande az group create. Étant donné que les groupes de ressources doivent être uniques au sein d’un abonnement, choisissez un nom unique. Un moyen simple d’avoir des noms uniques consiste à utiliser une combinaison de vos initiales, de la date d’aujourd’hui et de certains identificateurs. Par exemple, abc1228rg. Cet exemple crée un groupe de ressources nommé abc1228rg à l’emplacementeastus :

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

Créer un serveur de base de données et une base de données

Créez un serveur flexible avec la commande az mysql flexible-server create. Cet exemple crée un serveur flexible nommé mysql20221201 avec l’utilisateur admin azureuser et le mot de passe admin Secret123456. Remplacez le mot de passe par le vôtre. Pour plus d’informations, consultez Créer une base de données Azure pour MySQL Flexible Server en utilisant Azure CLI.

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

Créez une base de données avec 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

Lorsque la commande est terminée, vous devriez voir une sortie similaire à l’exemple suivant :

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

Configurer un administrateur Microsoft Entra pour votre base de données

Maintenant que vous avez créé la base de données, vous devez la préparer pour prendre en charge les connexions sans mot de passe. Une connexion sans mot de passe nécessite une combinaison d’identités managées pour les ressources Azure et d’authentification Microsoft Entra. Pour une vue d’ensemble des identités managées pour les ressources Azure, consultez Qu’est-ce que les identités managées pour les ressources Azure?

Pour obtenir des informations sur la façon dont MySQL Flexible Server interagit avec les identités managées, consultez Utiliser Microsoft Entra ID pour l’authentification avec MySQL.

L’exemple suivant configure l’utilisateur actuel d’Azure CLI comme compte administrateur Microsoft Entra. Pour activer l’authentification Azure, il est nécessaire d’assigner une identité au serveur MySQL Flexible.

Tout d’abord, créez une identité managée avec az identity create et assignez l’identité au serveur MySQL avec 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

Ensuite, définissez l’utilisateur actuel d’Azure CLI comme compte administrateur Microsoft Entra avec 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

Créer une identité managée attribuée par l’utilisateur

Ensuite, dans Azure CLI, créez une identité dans votre abonnement en utilisant la commande az identity create. Vous utilisez cette identité managée pour vous connecter à votre base de données.

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

Pour configurer l’identité dans les étapes suivantes, utilisez la commande az identity show pour stocker l’ID client de l’identité dans une variable 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)

Créer un utilisateur de base de données pour votre identité managée

Maintenant, connectez-vous en tant qu’utilisateur administrateur Microsoft Entra à votre base de données MySQL, et créez un utilisateur MySQL pour votre identité managée.

Tout d’abord, vous devez créer une règle de pare-feu pour accéder au serveur MySQL depuis votre client CLI. Exécutez les commandes suivantes pour obtenir votre adresse IP actuelle.

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

Si vous travaillez sur Windows Subsystem for Linux (WSL) avec un VPN activé, la commande suivante peut renvoyer une adresse IPv4 incorrecte. Une façon d’obtenir votre adresse IPv4 est de visiter whatismyipaddress.com. Dans tous les cas, définissez la variable d’environnement MY_IP comme l’adresse IPv4 à partir de laquelle vous souhaitez vous connecter à la base de données.

Créez une règle de pare-feu temporaire avec 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}

Ensuite, préparez un fichier .sql pour créer un utilisateur de base de données pour l’identité managée. L’exemple suivant ajoute un utilisateur avec le nom de connexion identity-contoso et accorde à l’utilisateur des privilèges pour accéder à la base de données 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

Exécutez le fichier .sql avec la commande az mysql flexible-server execute. Vous pouvez obtenir votre jeton d’accès avec la commande 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"

Il est possible que vous soyez invité à installer l’extension rdbms-connect, comme montré dans la sortie suivante. Appuyez sur y pour continuer. Si vous ne travaillez pas avec l’utilisateur root, vous devez entrer le mot de passe de l’utilisateur.

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:

Si le fichier .sql s’exécute avec succès, vous verrez une sortie similaire à l’exemple suivant :

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

L’identité managée myManagedIdentity a maintenant accès à la base de données lors de l’authentification avec le nom d’utilisateur identity-contoso.

Si vous ne souhaitez plus accéder au serveur depuis cette adresse IP, vous pouvez supprimer la règle de pare-feu en utilisant la commande suivante.

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

Enfin, utilisez la commande suivante pour obtenir la chaîne de connexion que vous utiliserez dans la section suivante.

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

Configurer une connexion de base de données sans mot de passe pour Oracle WebLogic Server sur les machines virtuelles Azure

Cette section vous montre comment configurer la connexion à la source de données sans mot de passe en utilisant les offres de la place de marché Azure pour Oracle WebLogic Server.

Tout d’abord, commencez le processus de déploiement d’une offre. Les offres suivantes prennent en charge les connexions de base de données sans mot de passe :

Remplissez les informations requises dans le volet Principes de base et dans d’autres volets si vous souhaitez activer les fonctionnalités. Lorsque vous atteignez le volet Base de données, remplissez la configuration sans mot de passe comme indiqué dans les étapes suivantes.

  1. Pour Se connecter à la base de données, sélectionnez Oui.
  2. Sous Paramètres de connexion, pour Choisir le type de base de données, ouvrez le menu déroulant puis sélectionnez MySQL (avec prise en charge de la connexion sans mot de passe).
  3. Pour Nom JNDI, entrez testpasswordless ou la valeur que vous souhaitez.
  4. Pour Chaîne de connexion DataSource, entrez la chaîne de connexion que vous avez obtenue dans la dernière section.
  5. Pour Nom d’utilisateur de la base de données, entrez le nom d’utilisateur de votre identité managée (la valeur de ${IDENTITY_LOGIN_NAME}). Dans cet exemple, la valeur est identity-contoso.
  6. Sélectionnez Utiliser la connexion à la source de données sans mot de passe.
  7. Pour Identité managée affectée par l’utilisateur, sélectionnez l’identité managée que vous avez créée précédemment. Dans cet exemple, son nom est myManagedIdentity.

La section Paramètres de connexion devrait ressembler à la capture d’écran suivante, qui utilise Oracle WebLogic Server Cluster sur VMs comme exemple.

Capture d’écran du portail Azure montrant le volet Configurer la base de données de la page Créer Oracle WebLogic Server sur VMs.

Vous avez maintenant terminé la configuration de la connexion sans mot de passe. Vous pouvez continuer à remplir les volets suivants ou sélectionner Revoir + créer, puis Créer pour déployer l’offre.

Vérifier la connexion à la base de données

La connexion à la base de données est configurée avec succès si le déploiement de l’offre se termine sans erreur.

En continuant de prendre Oracle WebLogic Server Cluster sur VMs comme exemple, après la fin du déploiement, suivez ces étapes dans le portail Azure pour trouver l’URL de la console d’administration.

  1. Trouvez le groupe de ressources dans lequel vous avez déployé WLS.
  2. Sous Paramètres, sélectionnez Déploiements.
  3. Sélectionnez le déploiement avec la Durée la plus longue. Ce déploiement devrait se trouver en bas de la liste.
  4. Sélectionnez Sorties.
  5. L’URL de la console d’administration WebLogic est la valeur de la sortie adminConsoleUrl.
  6. Copiez la valeur de la variable de sortie adminConsoleUrl.
  7. Collez la valeur dans la barre d’adresse de votre navigateur et appuyez sur Entrée pour ouvrir la page de connexion de la console d’administration WebLogic.

Utilisez les étapes suivantes pour vérifier la connexion à la base de données.

  1. Connectez-vous à la console d’administration WebLogic avec le nom d’utilisateur et le mot de passe que vous avez fournis dans le volet Principes de base.

  2. Sous la Structure du domaine, sélectionnez Services, Sources de données, puis testpasswordless.

  3. Sélectionnez l’onglet Surveillance (Monitoring), où l’état de la source de données est En cours d’exécution, comme montré dans la capture d’écran suivante.

  4. Sélectionnez l’onglet Test, puis sélectionnez le bouton radio à côté du serveur souhaité.

  5. Sélectionnez Tester la source de données. Vous devriez voir un message indiquant un test réussi, comme montré dans la capture d’écran suivante.

    Capture d’écran du portail de la console WebLogic montrant un test réussi de la source de données.

Nettoyer les ressources

Si vous n’avez pas besoin de ces ressources, vous pouvez les supprimer en exécutant les commandes suivantes :

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

Étapes suivantes

Pour en savoir plus sur l’exécution de WLS sur AKS ou sur des machines virtuelles, suivez ces liens :