次の方法で共有


Oracle WebLogic Server で Java アプリのパスワードレス データベース接続を構成する

この記事では、Azure portal を使って Oracle WebLogic Server オファーで Java アプリのパスワードレス データベース接続を構成する方法について説明します。

このガイドでは、以下のタスクを実行します。

  • Azure CLI を使ってデータベース リソースをプロビジョニングします。
  • データベースで Microsoft Entra 管理者を有効にします。
  • ユーザーによって割り当てられたマネージド ID をプロビジョニングし、そのデータベース ユーザーを作成します。
  • Azure portal を使って Oracle WebLogic オファーでパスワードレス データベース接続を構成します。
  • データベース接続を検証します。

このプランでは、PostgreSQL、MySQL、Azure SQL データベースのパスワードレス接続がサポートされています。

前提条件

リソース グループを作成する

az group create でリソース グループを作成します。 リソース グループはサブスクリプション内で一意である必要があるため、一意の名前を選択します。 一意の名前を付ける簡単な方法は、自分の名前のイニシャル、今日の日付、何らかの識別子を組み合わせて使用することです (例: abc1228rg)。 この例では、 abc1228rg の場所に eastus という名前のリソース グループを作成します。

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

データベース サーバーとデータベースの作成

az mysql flexible-server create コマンドを使用してフレキシブル サーバーを作成します。 この例では、管理者ユーザー mysql20221201 と管理者パスワード azureuser を使用して、Secret123456 という名前のフレキシブル サーバーを作成します。 パスワードを自分のものに置き換えてください。 詳しくは、「Azure CLI を使用して Azure Database for MySQL フレキシブル サーバーを作成する」をご覧ください。

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

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

コマンドが完了すると、次の例のような出力が表示されます。

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

データベースの Microsoft Entra 管理者を構成する

データベースを作成したら、パスワードレス接続をサポートする準備を整える必要があります。 パスワードレス接続には、Azure リソースのマネージド ID と Microsoft Entra 認証の組み合わせが必要です。 Azure リソース用マネージド ID の概要は、「Azure リソース用マネージド ID とは」を参照してください。

MySQL フレキシブル サーバーがマネージド ID と対話する方法については、Azure Database for MySQL のドキュメントを参照してください。

次の例では、現在の Azure CLI ユーザーを Microsoft Entra 管理者アカウントとして構成します。 Azure 認証を有効にするには、MySQL フレキシブル サーバーに ID を割り当てる必要があります。

まず、az identity create を使用してマネージド ID を作成し、az mysql flexible-server identity assignを使用して MySQL サーバーに ID を割り当てます。

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

次に、現在の Azure CLI ユーザーを、az mysql flexible-server ad-admin createを使用して Microsoft Entra 管理者アカウントとして設定します。

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

ユーザー割り当てマネージド ID を作成する

次に、Azure CLI で、az identity create コマンドを使用してサブスクリプションに ID を作成します。 このマネージド ID を使って、データベースに接続します。

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

次の手順で ID を構成するには、az identity show コマンドを使用して、ID のクライアント ID をシェル変数に格納します。

# 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)

マネージド ID のデータベース ユーザーの作成

まず、CLI クライアントからデータベース サーバーにアクセスするためのファイアウォール規則を作成する必要があります。 次のコマンドを実行して、現在の IP アドレスを取得します。

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

VPN が有効になっている Windows Subsystem for Linux (WSL) で作業している場合、次のコマンドは正しくない IPv4 アドレスを返す可能性があります。 IPv4 アドレスを取得する 1 つの方法として、whatismyipaddress.com にアクセスできます。 環境変数 MY_IP データベースに接続する IPv4 アドレスとして設定します。 後で、この IP アドレスを使用してデータベース ファイアウォールを構成します。

Microsoft Entra 管理者ユーザーとして MySQL データベースに接続し、マネージド ID 用の MySQL ユーザーを作成します。

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}

次に、マネージド ID のデータベース ユーザーを作成する SQL ファイルを準備します。 次の例では、ログイン名 identity-contoso を持つユーザーを追加し、データベース 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

コマンド az mysql flexible-server executeを使用して SQL ファイルを実行します。 コマンド 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"

次の出力に示すように、rdbms-connect 拡張機能のインストールを求められる場合があります。 y を押して続行します。 root ユーザーを使用していない場合、ユーザー パスワードを入力する必要があります。

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:

SQL ファイルが正常に実行された場合、出力は次の例のようになります。

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

ユーザー名 myManagedIdentity を認証するとき、マネージド ID identity-contoso がデータベースにアクセスできるようになりました。

この IP アドレスからサーバーにアクセスする必要がなくなった場合は、次のコマンドを使用してファイアウォール規則を削除できます。

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

最後に、次のコマンドを使用して、次のセクションで使用する接続文字列を取得します。

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

Azure VM における Oracle WebLogic Server のパスワードレス データベース接続の構成

このセクションでは、Oracle WebLogic Server 用の Azure Marketplace オファーを使ってパスワードレス データ ソース接続を構成する方法について説明します。

まず、オファーをデプロイするプロセスを開始します。 以下のオファーでパスワードレス データベース接続がサポートされます。

機能を有効にする場合は、[基本] ウィンドウやその他のウィンドウに必要な情報を入力します。 Database ペインに到達したら、次の手順に示すようにパスワードなしの構成を入力します。

  1. [データベースに接続しますか?][はい] を選択します。
  2. [接続設定][データベースの種類の選択] で、ドロップダウン メニューから [MySQL (パスワードレス接続をサポート)] を選択します。
  3. [JNDI 名] に、「testpasswordless」または予期される値を入力します。
  4. DataSource 接続文字列に、最後のセクションで取得した接続文字列を入力します。
  5. データベース ユーザー名には、マネージド ID のデータベース ユーザー名 (${IDENTITY_LOGIN_NAME}の値) を入力します。 この例では、値は identity-contoso です。
  6. [パスワードレス データソース接続を使用する] を選択します。
  7. [ユーザーが割り当てたマネージド ID] で、前の手順で作成したマネージド ID を選択します。 この例では、名前は myManagedIdentity です。

[接続設定] セクションは、次のスクリーンショットのようになります。VM 上の Oracle WebLogic Server Cluster を例として使用しています。

[VM での Oracle WebLogic Server の作成] ページの [データベースの構成] ペインが表示されている Azure portal のスクリーンショット。

パスワードレス接続の構成が完了しました。 引き続き次のウィンドウに入力するか、[確認と作成] を選択した後 [作成] を選択してオファーをデプロイできます。

データベース接続の検証

オファーのデプロイがエラーなしで完了した場合、データベース接続は正常に構成されます。

引き続き、VM 上の Oracle WebLogic Server Cluster を例として使用します。デプロイが完了したら、Azure portal で次の手順に従って管理コンソール URL を見つけます。

  1. WLS をデプロイしたリソース グループを見つけます。
  2. [設定][デプロイ] を選択します。
  3. [期間] が最も長いデプロイを選択します。 このデプロイはリストの一番下に配置するべきです。
  4. [出力] を選択します。
  5. WebLogic 管理コンソールの URL は adminConsoleUrl 出力の値です。
  6. 出力変数の値を adminConsoleUrl コピーします。
  7. ブラウザーのアドレス バーに値を貼り付けて Enter キーを押すと、WebLogic 管理コンソールのサインイン ページが開きます。

次の手順を使用して、データベース接続を確認します。

  1. [基本] ウィンドウで指定したユーザー名とパスワードを使って、WebLogic 管理コンソールにサインインします。

  2. [ドメイン構造] で、[サービス][データ ソース][testpasswordless] の順に選択します。

  3. 次のスクリーンショットに示すように、[監視] タブを選択します。そのタブでは、データ ソースの状態が [実行中] です。

  4. テスト タブを選択し、目的のサーバーの横にあるラジオ ボタンを選択します。

  5. [データ ソースのテスト] を選択します。 次のスクリーンショットに示すように、テストが成功したことを示すメッセージが表示されます。

    データソースのテストが成功したことを示す WebLogic Console ポータルのスクリーンショット。

リソースをクリーンアップする

これらのリソースが不要な場合は、次のコマンドを使用して削除できます。

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

次のステップ

AKS または仮想マシンで WLS を実行する方法の詳細については、次のリンクを参照してください。