在 Oracle WebLogic Server 上設定 Java 應用程式的無密碼資料庫連線
本文說明如何使用 Azure 入口網站,在 Oracle WebLogic Server 上設定 Java 應用程式的無密碼資料庫連線。
在本指南中,您會完成下列工作:
- 使用 Azure CLI 布建資料庫資源。
- 在資料庫中啟用Microsoft Entra 系統管理員。
- 布建使用者指派的受控識別,併為它建立資料庫使用者。
- 使用 Azure 入口網站 在 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 身分識別具有目前訂用帳戶中的擁有者角色或目前訂用帳戶中的參與者和使用者存取系統管理員角色,並完成本文。 如需 Azure 角色的概觀,請參閱 什麼是 Azure 角色型存取控制 (Azure RBAC)? 如需 Oracle WebLogic Marketplace 供應專案所需特定角色的詳細資訊,請參閱 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 建立 適用於 MySQL 的 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
使用 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 資源和Microsoft Entra 驗證的受控識別組合。 如需 Azure 資源的受控識別概觀,請參閱 什麼是 Azure 資源的受控識別?
如需瞭解 MySQL 彈性伺服器如何與受管理的身份互動,請參閱 Azure Database for MySQL 文件。
下列範例會將目前的 Azure CLI 使用者設定為 Microsoft Entra 系統管理員帳戶。 若要啟用 Azure 驗證,必須將身分識別指派給 MySQL 彈性伺服器。
首先,使用 az identity create
建立受控識別,並使用 az mysql flexible-server identity assign
將身分識別指派給 MySQL 伺服器。
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
建立使用者指派的受控識別
接下來,在 Azure CLI 中,使用 az identity create
命令,在您的訂用帳戶中建立身分識別。 您可以使用此受控識別來連線到您的資料庫。
az identity create \
--resource-group ${RESOURCE_GROUP_NAME} \
--name myManagedIdentity
若要在下列步驟中設定身分識別,請使用 az identity show
命令,將身分識別的用戶端標識元儲存在殼層變數中。
# 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)
為您的受控識別建立資料庫使用者
首先,您必須建立防火牆規則,才能從 CLI 用戶端存取資料庫伺服器。 執行下列命令以取得您目前的 IP 位址:
export MY_IP=$(curl http://whatismyip.akamai.com)
如果您正在使用已啟用 VPN 的 Windows 子系統 Linux 子系統 (WSL),下列命令可能會傳回不正確的 IPv4 位址。 取得 IPv4 位址的其中一種方式是流覽 whatismyipaddress.com。 將環境變數 MY_IP
設定為您要從中聯機到資料庫的 IPv4 位址。 您稍後會使用此IP位址來設定資料庫防火牆。
以 Microsoft Entra 系統管理員使用者身分連線到 MySQL 資料庫,為您的受控識別建立 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}
接下來,準備 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
現在具有資料庫的存取權 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 上的 Oracle WebLogic Server (AKS)
- VM 上的 Oracle WebLogic Server 叢集
- 在 VM 上使用系統管理伺服器的 Oracle WebLogic Server
- VM 上的 Oracle WebLogic Server 動態叢集
如果您想要啟用功能,請在 [基本] 窗格和其他窗格中輸入必要資訊。 當您到達 [資料庫] 窗格時,請輸入無密碼設定,如下列步驟所示:
- 針對 [ 連線到資料庫?],選取 [ 是]。
- 在 [連線設定] 底下,針對 [選擇資料庫類型],從下拉功能表中選取 [MySQL [支援無密碼連線]。
- 針對JNDI 名稱,輸入testpasswordless 或您預期的值。
- 針對 DataSource 連接字串,輸入您在上一節中取得的連接字串。
- 針對 資料庫使用者名稱,請輸入受控識別的資料庫用戶名稱,這是
${IDENTITY_LOGIN_NAME}
的值。 在這個範例中,此值是 identity-contoso。 - 選取 [ 使用無密碼數據源連線]。
- 針對 [ 使用者指派的受控識別],選取您先前建立的受控識別。 在這裡範例中,其名稱 myManagedIdentity。
[連線設定] 區段看起來應該類似下列螢幕快照,其使用 VM 上的 Oracle WebLogic Server 叢集作為範例。
您已完成設定無密碼連線。 您可以繼續填寫下列窗格,或選取 [檢閱 + 建立],然後選取 [建立] 來部署供應專案。
確認資料庫連線
如果供應專案部署完成且沒有錯誤,資料庫連線就會成功設定。
繼續以 VM 上的 Oracle WebLogic Server 叢集為例,部署完成之後,請遵循 Azure 入口網站 中的下列步驟來尋找管理控制台 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: