Поделиться через


Настройка подключений к базе данных без пароля для приложений Java на сервере Oracle WebLogic Server

В этой статье показано, как настроить подключения к базе данных без пароля для приложений Java на Oracle WebLogic Server с помощью портал Azure.

В этом руководстве вы выполняете следующие задачи:

  • Подготовка ресурсов базы данных с помощью Azure CLI.
  • Включите администратора Microsoft Entra в базе данных.
  • Предоставьте управляемую идентификацию, назначенную пользователем, и создайте для нее пользователя базы данных.
  • Настройте подключение к базе данных без пароля в Oracle WebLogic через портал Azure.
  • Проверьте подключение к базе данных.

Предлагается поддержка подключений без паролей для баз данных PostgreSQL, MySQL и Azure SQL.

Предпосылки

Выбор региона для развертывания

Выберите регион с доступными номерами SKU для требуемой базы данных. Следующая команда Azure CLI содержит доступные номера SKU в определенном регионе. Продолжайте пытаться использовать разные регионы, пока не найдете один из них с некоторыми результатами.

az mysql flexible-server list-skus --location "$REGION" --output table

Создайте группу ресурсов

Создайте группу ресурсов с помощью az group create. Так как группы ресурсов должны быть уникальными в пределах подписки, выберите уникальное имя. Простой способ использовать уникальные имена — использовать сочетание инициалов, сегодняшней даты и некоторых идентификаторов, например abc1228rg. В этом примере создается группа ресурсов с именем abc1228rg в расположении eastus.

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

Создайте сервер базы данных и базу данных

Создайте гибкий сервер с помощью команды az mysql flexible-server create. В этом примере создается гибкий сервер с именем mysql20221201 администратора azureuser и паролем Secret123456администратора. Замените пароль вашими. Дополнительные сведения см. в статье "Создание гибкого сервера База данных Azure для MySQL с помощью 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 ${REGION} \
    --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 для MySQL.

Пример ниже настраивает текущего пользователя Azure CLI как учетную запись администратора Microsoft Entra. Чтобы включить проверку подлинности Azure, необходимо назначить удостоверение для MySQL Flexible Server.

Сначала создайте управляемое удостоверение с помощью az identity create и назначьте это удостоверение серверу MySQL с помощью 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

Затем установите текущего пользователя Azure CLI в качестве учетной записи администратора Microsoft Entra с помощью 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

Создание управляемой идентичности, назначаемой пользователем

Затем в 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)

Если вы работаете с подсистемой Windows для Linux (WSL) с поддержкой VPN, следующая команда может вернуть неверный 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

Выполните SQL-файл с помощью команды az mysql flexible-server execute. Маркер доступа можно получить с помощью команды 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}

Настройка подключения к базе данных без пароля для Oracle WebLogic Server на виртуальных машинах Azure

Прежде чем продолжить, убедитесь, что удостоверение Azure, используемое для входа, имеет роль Владельца в текущей подписке или роли Участника и Администратора доступа пользователей в текущей подписке. Общие сведения о ролях Azure см. в статье "Что такое управление доступом на основе ролей Azure" (Azure RBAC)? Дополнительные сведения о конкретных ролях, необходимых предложению Oracle WebLogic Marketplace, см. в статье о встроенных ролях Azure.

В этом разделе показано, как настроить подключение к источнику данных без пароля с помощью предложений Azure Marketplace для Oracle WebLogic Server.

Сначала начните процесс развертывания предложения. Следующие предложения поддерживают подключения к базе данных без пароля.

Введите необходимые сведения в области "Основные " и других панелях, если вы хотите включить функции. Когда вы достигнете области базы данных , введите конфигурацию без пароля, как показано на следующих шагах:

  1. Для подключения к базе данных нажмите кнопку "Да".
  2. В разделе "Параметры подключения" для параметра "Выбор типа базы данных" в раскрывающемся меню выберите MySQL (с поддержкой подключения без пароля).
  3. В поле "Имя JNDI" введите testpasswordless или ожидаемое значение.
  4. Для DataSource Connection String введите строку подключения, полученную в последнем разделе.
  5. Для имени пользователя базы данных введите имя пользователя базы данных управляемого удостоверения, которое является значением ${IDENTITY_LOGIN_NAME}. В этом примере значение — identity-contoso.
  6. Выберите "Использовать подключение к источнику данных без пароля".
  7. Для управляемого удостоверения пользователя выберите ранее созданное управляемое удостоверение. В этом примере его имя — myManagedIdentity.

В разделе параметров подключения должен выглядеть следующий снимок экрана, в котором в качестве примера используется кластер Oracle WebLogic Server на виртуальных машинах .

Снимок экрана: портал Azure с панелью

Вы завершили настройку подключения без пароля. Вы можете продолжить заполнение следующих областей или выбрать "Просмотр и создание", а затем Создать для развертывания предложения.

Проверка подключения к базе данных

Подключение к базе данных успешно настроено, если развертывание приложения завершается без ошибок.

Продолжая использовать кластер Oracle WebLogic Server на виртуальных машинах в качестве примера после завершения развертывания, выполните следующие действия в портал Azure, чтобы найти URL-адрес консоли администрирования.

  1. Найдите группу ресурсов, в которой вы развернули WLS.
  2. В разделе "Параметры" выберите "Развертывания".
  3. Выберите развертывание с максимальной продолжительностью. Это развертывание должно быть расположено в нижней части списка.
  4. Выберите Выходные данные.
  5. URL-адрес консоли администрирования WebLogic — это значение выходных данных adminConsoleUrl .
  6. Скопируйте значение выходной переменной adminConsoleUrl.
  7. Вставьте значение в адресную строку браузера и нажмите клавишу ВВОД , чтобы открыть страницу входа в консоль администрирования 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>

Дальнейшие шаги

Дополнительные сведения о запуске WLS на AKS или виртуальных машинах см. по следующим ссылкам: