Oracle WebLogic Server で 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
)。 この例では、 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 オファーを使ってパスワードレス データ ソース接続を構成する方法について説明します。
まず、オファーをデプロイするプロセスを開始します。 以下のオファーでパスワードレス データベース接続がサポートされます。
- Azure Kubernetes Service (AKS) 上の Oracle WebLogic Server
- VM 上の Oracle WebLogic Server Cluster
- VM 上の Oracle WebLogic Server と管理サーバー
- VM 上の Oracle WebLogic Server Dynamic Cluster
機能を有効にする場合は、[基本] ウィンドウやその他のウィンドウに必要な情報を入力します。 Database ペインに到達したら、次の手順に示すようにパスワードなしの構成を入力します。
- [データベースに接続しますか?] で [はい] を選択します。
- [接続設定] の [データベースの種類の選択] で、ドロップダウン メニューから [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 を実行する方法の詳細については、次のリンクを参照してください。