Oracle WebLogic Servers で Java アプリのパスワードレス データベース接続を構成する
この記事では、Azure portal を使って Oracle WebLogic Server オファーで Java アプリのパスワードレス データベース接続を構成する方法について説明します。
このガイドでは、以下のタスクを実行します。
- Azure CLI を使ってデータベース リソースをプロビジョニングします。
- データベースで Microsoft Entra 管理者を有効にします。
- ユーザーによって割り当てられたマネージド ID をプロビジョニングし、そのデータベース ユーザーを作成します。
- Azure portal を使って Oracle WebLogic オファーでパスワードレス データベース接続を構成します。
- データベース接続を検証します。
このオファーでは、PostgreSQL、MySQL、Azure SQL データベースのパスワードレス接続がサポートされます。
前提条件
Azure サブスクリプション。 Azure サブスクリプションをお持ちでない場合は、開始する前に無料アカウントを作成してください。
Bash 環境 を使用して Azure Cloud Shell を使用する。Azure CLI のバージョンが 2.43.0 以降であることを確認します。
必要に応じて、Azure CLI 2.43.0 以上をインストールして、Azure CLI コマンドを実行してください。
- ローカル インストールを使用する場合は、az login コマンドを使用して Azure CLI でサインインします。 認証プロセスを完了するには、ターミナルに表示される手順に従います。 他のサインイン オプションについては、「Azure CLI を使用してサインインする」を参照してください。
- 初回使用時にインストールを求められたら、Azure CLI 拡張機能をインストールします。 拡張機能の詳細については、「Azure CLI で拡張機能を使用する」を参照してください。
- az version を実行し、インストールされているバージョンおよび依存ライブラリを検索します。 最新バージョンにアップグレードするには、az upgrade を実行します。
サインインしてこの記事を完了するために使用する Azure ID に、現在のサブスクリプションの所有者ロールか、現在のサブスクリプションの共同作成者ロールとユーザー アクセス管理者ロールがあることを確認します。 Azure のロールの概要については、「Azure ロールベースのアクセス制御 (Azure RBAC) とは」をご覧ください。Oracle WebLogic マーケットプレース オファーに必要な特定のロールについて詳しくは、「Azure 組み込みロール」をご覧ください。
リソース グループを作成する
az group create を使用して、リソース グループを作成します。 リソース グループはサブスクリプション内で一意である必要があるため、一意の名前を選択します。 一意の名前を付ける簡単な方法は、自分の名前のイニシャル、今日の日付、何らかの識別子を組み合わせて使用することです。 たとえば、 abc1228rgです。 この例では、 eastus
の場所に abc1228rg
という名前のリソース グループを作成します。
export RESOURCE_GROUP_NAME="abc1228rg"
az group create \
--name ${RESOURCE_GROUP_NAME} \
--location eastus
データベース サーバーとデータベースの作成
az mysql flexible-server create コマンドを使用して、フレキシブル サーバーを作成します。 この例では、管理者ユーザー azureuser
と管理者パスワード Secret123456
を使用して、mysql20221201
という名前のフレキシブル サーバーを作成します。 パスワードは実際のパスワードに置き換えます。 詳しくは、「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 を使用する方法については、「MySQL での認証に Microsoft Entra ID を使用する」をご覧ください。
次の例では、現在の 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
次に、az mysql flexible-server ad-admin create を使って、現在の Azure CLI ユーザーを 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 のデータベース ユーザーの作成
次に、Microsoft Entra 管理者ユーザーとして MySQL データベースに接続し、マネージド ID 用の MySQL ユーザーを作成します。
まず、CLI クライアントから MySQL サーバーにアクセスするためのファイアウォール規則を作成する必要があります。 次のコマンドを実行し、現在の IP アドレスを取得します。
export MY_IP=$(curl http://whatismyip.akamai.com)
VPN が有効になっている Linux 用 Windows サブシステム (WSL) で作業している場合、以下のコマンドは正しくない IPv4 アドレスを返す可能性があります。 IPv4 アドレスを取得する 1 つの方法として、whatismyipaddress.com にアクセスできます。 いずれの場合も、データベースへの接続元 IPv4 アドレスとして環境変数 MY_IP
を設定します。
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
ユーザー名 identity-contoso
を認証するとき、マネージド ID myManagedIdentity
がデータベースにアクセスできるようになりました。
この 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 オファーを使ってパスワードレス データ ソース接続を構成する方法について説明します。
まず、オファーをデプロイするプロセスを開始します。 以下のオファーでパスワードレス データベース接続がサポートされます。
- Azure Kubernetes Service (AKS) 上の Oracle WebLogic Server
- VM 上の Oracle WebLogic Server Cluster
- VM 上の Oracle WebLogic Server with Admin Server
- VM 上の Oracle WebLogic Server Dynamic Cluster
機能を有効にする場合、[基本] ウィンドウと他のウィンドウに必要な情報を入力します。 [データベース] ウィンドウまで到達したら、次の手順に示すようにパスワードレス構成を入力します。
- [データベースに接続しますか?] で [はい] を選択します。
- [接続設定] の [データベースの種類の選択] でドロップダウン メニューを開き、[MySQL (パスワードレス接続をサポート)] を選択します。
- [JNDI 名] に、「testpasswordless」または予期される値を入力します。
- [DataSource 接続文字列] に、前回のセクションで取得した接続文字列を入力します。
- [データベース ユーザー名] に、マネージド ID のデータベース ユーザー名 (値
${IDENTITY_LOGIN_NAME}
) を入力します。 この例では、値はidentity-contoso
です。 - [パスワードレス データソース接続を使用する] を選択します。
- [ユーザーが割り当てたマネージド ID] で、前の手順で作成したマネージド ID を選択します。 この例では、その名前は
myManagedIdentity
です。
[接続設定] セクションは、次のスクリーンショットのようになります。VM 上の Oracle WebLogic Server Cluster を例として使用しています。
これで、パスワードレス接続の構成が完了しました。 引き続き次のウィンドウに入力するか、[確認と作成] を選択した後 [作成] を選択してオファーをデプロイできます。
データベース接続の検証
オファーのデプロイがエラーなしで完了した場合、データベース接続は正常に構成されます。
引き続き、VM 上の Oracle WebLogic Server Cluster を例として使用します。デプロイが完了したら、Azure portal で次の手順に従って管理コンソール URL を見つけます。
- WLS をデプロイしたリソース グループを見つけます。
- [設定] で [デプロイ] を選択します。
- [期間] が最も長いデプロイを選択します。 このデプロイは、リストの一番下にあります。
- [出力] を選択します。
- WebLogic 管理コンソールの URL は adminConsoleUrl 出力の値です。
- 出力変数
adminConsoleUrl
の値をコピーします。 - ブラウザーのアドレス バーに値を貼り付けて Enter キーを押すと、WebLogic 管理コンソールのサインイン ページが開きます。
次の手順を使って、データベース接続を検証できます。
[基本] ウィンドウで指定したユーザー名とパスワードを使って、WebLogic 管理コンソールにサインインします。
[ドメイン構造] で、[サービス]、[データ ソース]、[testpasswordless] の順に選択します。
次のスクリーンショットに示すように、データ ソースの状態が [実行中] になっている [監視] タブを選択します。
[テスト] タブを選択し、目的のサーバーの横にあるラジオ ボタンをオンにします。
[データ ソースのテスト] を選択します。 次のスクリーンショットに示すように、テストが成功したことを示すメッセージが表示されます。
リソースをクリーンアップする
これらのリソースが不要な場合は、以下のコマンドを実行することでこれらを削除できます。
az group delete --name ${RESOURCE_GROUP_NAME}
az group delete --name <resource-group-name-that-deploys-the-offer>
次のステップ
AKS または仮想マシンで WLS を実行する方法の詳細については、次のリンクを参照してください。