Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье рассказывается, как использовать подключения без пароля к базам данных Azure в приложениях Spring Boot, развернутых в Приложения Azure Spring.
В этом руководстве вы выполните следующие действия с помощью портала Azure или Azure CLI. Оба метода описаны в следующих процедурах.
- Создайте экземпляр Приложения Azure Spring.
- Создание и развертывание приложений в Приложения Azure Spring.
- Запустите приложения, подключенные к базам данных Azure, используя управляемую идентичность.
Заметка
Это руководство не работает для R2DBC.
Необходимые условия
- Подписка Azure. Если у вас еще нет учетной записи, создайте бесплатную учетную запись.
- Azure CLI версии 2.45.0 или более поздней.
- Расширение Приложения Azure Spring. Установите расширение с помощью команды:
az extension add --name spring - пакет средств разработки Java (JDK), версии 8, 11 или 17.
- Клиент Git.
- cURL или аналогичную программу HTTP для тестирования функциональных возможностей.
- Клиент командной строки MySQL, если вы решили запустить База данных Azure для MySQL. Вы можете подключиться к серверу через Azure Cloud Shell с помощью популярного клиентского средства — программы командной строки mysql.exe. Кроме того, можно использовать командную строку
mysqlв локальной среде. - драйвер ODBC 18 для SQL Server, если вы решили запустить базу данных SQL Azure.
Подготовка рабочей среды
Сначала настройте некоторые переменные среды с помощью следующих команд:
export AZ_RESOURCE_GROUP=passwordless-tutorial-rg
export AZ_DATABASE_SERVER_NAME=<YOUR_DATABASE_SERVER_NAME>
export AZ_DATABASE_NAME=demodb
export AZ_LOCATION=<YOUR_AZURE_REGION>
export AZ_SPRING_APPS_SERVICE_NAME=<YOUR_AZURE_SPRING_APPS_SERVICE_NAME>
export AZ_SPRING_APPS_APP_NAME=hellospring
export AZ_DB_ADMIN_USERNAME=<YOUR_DB_ADMIN_USERNAME>
export AZ_DB_ADMIN_PASSWORD=<YOUR_DB_ADMIN_PASSWORD>
export AZ_USER_IDENTITY_NAME=<YOUR_USER_ASSIGNED_MANAGEMED_IDENTITY_NAME>
Замените заполнители следующими значениями, которые используются в этой статье:
-
<YOUR_DATABASE_SERVER_NAME>: имя сервера базы данных Azure, который должен быть уникальным в Azure. -
<YOUR_AZURE_REGION>. Регион Azure, который вы хотите использовать. Вы можете использоватьeastusпо умолчанию, но настроить регион ближе к месту жизни. Полный список доступных регионов можно посмотреть с помощьюaz account list-locations. -
<YOUR_AZURE_SPRING_APPS_SERVICE_NAME>: имя вашего экземпляра Приложения Azure Spring. Имя должно быть от 4 до 32 символов длиной и может содержать только строчные буквы, цифры и дефисы. Первый символ имени службы должен быть буквой, а последний символ должен быть буквой или числом. -
<AZ_DB_ADMIN_USERNAME>: имя администратора сервера базы данных Azure. -
<AZ_DB_ADMIN_PASSWORD>: пароль администратора сервера базы данных Azure. -
<YOUR_USER_ASSIGNED_MANAGEMED_IDENTITY_NAME>: имя назначаемого пользователем управляемого сервера удостоверений, которое должно быть уникальным в Azure.
Подготовьте экземпляр Приложения Azure Spring
Чтобы подготовить экземпляр Приложения Azure Spring, выполните следующие действия.
Обновите Azure CLI с помощью расширения Приложения Azure Spring с помощью следующей команды:
az extension update --name springВойдите в Azure CLI и выберите активную подписку с помощью следующих команд:
az login az account list --output table az account set --subscription <name-or-ID-of-subscription>Используйте следующие команды, чтобы создать группу ресурсов для хранения службы Приложения Azure Spring и экземпляра службы Приложения Azure Spring:
az group create \ --name $AZ_RESOURCE_GROUP \ --location $AZ_LOCATION az spring create \ --resource-group $AZ_RESOURCE_GROUP \ --name $AZ_SPRING_APPS_SERVICE_NAME
Создание экземпляра базы данных Azure
Чтобы подготовить экземпляр базы данных Azure, выполните следующие действия.
Создайте сервер Базы данных Azure для MySQL с помощью следующей команды:
az mysql flexible-server create \ --resource-group $AZ_RESOURCE_GROUP \ --name $AZ_DATABASE_SERVER_NAME \ --location $AZ_LOCATION \ --admin-user $AZ_DB_ADMIN_USERNAME \ --admin-password $AZ_DB_ADMIN_PASSWORD \ --yes
Заметка
Если вы не предоставляете admin-user или admin-password параметры, система создает пользователя администратора по умолчанию или случайный пароль администратора.
Создайте базу данных с помощью следующей команды:
az mysql flexible-server db create \ --resource-group $AZ_RESOURCE_GROUP \ --database-name $AZ_DATABASE_NAME \ --server-name $AZ_DATABASE_SERVER_NAME
Создание приложения с назначенной общедоступной конечной точкой
Чтобы создать приложение, используйте следующую команду.
az spring app create \
--resource-group $AZ_RESOURCE_GROUP \
--service $AZ_SPRING_APPS_SERVICE_NAME \
--name $AZ_SPRING_APPS_APP_NAME \
--runtime-version=Java_17
--assign-endpoint true
Подключение Приложения Azure Spring к базе данных Azure
Сначала установите для Azure CLI расширение Service Connector для беспарольной аутентификации:
az extension add --name serviceconnector-passwordless --upgrade
Затем используйте следующую команду, чтобы создать управляемое удостоверение, назначаемое пользователем для проверки подлинности Microsoft Entra. Для получения дополнительной информации см. статью Настройка проверки подлинности Microsoft Entra для гибкого сервера базы данных Azure для MySQL.
export AZ_IDENTITY_RESOURCE_ID=$(az identity create \
--name $AZ_USER_IDENTITY_NAME \
--resource-group $AZ_RESOURCE_GROUP \
--query id \
--output tsv)
Важный
После создания назначенного пользователем удостоверения, попросите глобального администратора или администратора привилегированных ролей предоставить следующие разрешения для этого удостоверения: User.Read.All, GroupMember.Read.Allи Application.Read.ALL. Дополнительные сведения см. в разделе "Разрешения" проверки подлинности Active Directory .
Затем используйте следующую команду, чтобы создать бессерверное подключение к базе данных.
az spring connection create mysql-flexible \
--resource-group $AZ_RESOURCE_GROUP \
--service $AZ_SPRING_APPS_SERVICE_NAME \
--app $AZ_SPRING_APPS_APP_NAME \
--target-resource-group $AZ_RESOURCE_GROUP \
--server $AZ_DATABASE_SERVER_NAME \
--database $AZ_DATABASE_NAME \
--system-identity mysql-identity-id=$AZ_IDENTITY_RESOURCE_ID
Эта команда Соединителя служб выполняет следующие задачи в фоновом режиме:
Включает системно назначенную управляемую идентификацию для приложения
$AZ_SPRING_APPS_APP_NAME, размещенного в Приложения Azure Spring.Назначает текущего вошедшего в систему пользователя администратором Microsoft Entra.
Добавляет пользователя базы данных с именем
$AZ_SPRING_APPS_SERVICE_NAME/apps/$AZ_SPRING_APPS_APP_NAMEдля управляемой идентичности, созданной на шаге 1, и предоставляет этому пользователю все привилегии базы данных$AZ_DATABASE_NAME.Добавляет две конфигурации в приложение
$AZ_SPRING_APPS_APP_NAME:spring.datasource.urlиspring.datasource.username.Заметка
Если появится сообщение
The subscription is not registered to use Microsoft.ServiceLinkerоб ошибке, выполните командуaz provider register --namespace Microsoft.ServiceLinker, чтобы зарегистрировать поставщика ресурсов соединителя служб, а затем снова выполните команду подключения.
Создание и развертывание приложения
Ниже описано, как скачать, настроить, создать и развернуть пример приложения.
Используйте следующую команду, чтобы клонировать пример репозитория кода:
git clone https://github.com/Azure-Samples/quickstart-spring-data-jdbc-mysql passwordless-sampleДобавьте в файл pom.xml следующую зависимость:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-jdbc-mysql</artifactId> </dependency>Эта зависимость добавляет поддержку стартера Spring Cloud Azure.
Заметка
Дополнительные сведения об управлении версиями библиотеки Spring Cloud Azure с помощью списка BOM (Bill of Materials) см. в разделе "Начало работы" раздела руководства разработчика Spring Cloud Azure.
Используйте следующую команду для обновления файла application.properties:
cat << EOF > passwordless-sample/src/main/resources/application.properties logging.level.org.springframework.jdbc.core=DEBUG spring.datasource.azure.passwordless-enabled=true spring.sql.init.mode=always EOFИспользуйте следующие команды для создания проекта с помощью Maven:
cd passwordless-sample ./mvnw clean package -DskipTestsИспользуйте следующую команду, чтобы развернуть файл целевого объекта /demo-0.0.1-SNAPSHOT.jar для приложения:
az spring app deploy \ --name $AZ_SPRING_APPS_APP_NAME \ --service $AZ_SPRING_APPS_SERVICE_NAME \ --resource-group $AZ_RESOURCE_GROUP \ --artifact-path target/demo-0.0.1-SNAPSHOT.jarЗапросите состояние приложения после развертывания с помощью следующей команды:
az spring app list \ --service $AZ_SPRING_APPS_SERVICE_NAME \ --resource-group $AZ_RESOURCE_GROUP \ --output tableВы увидите выходные данные, аналогичные следующему примеру.
Name Location ResourceGroup Production Deployment Public Url Provisioning Status CPU Memory Running Instance Registered Instance Persistent Storage ----------------- ---------- --------------- ----------------------- --------------------------------------------------- --------------------- ----- -------- ------------------ --------------------- -------------------- <app name> eastus <resource group> default Succeeded 1 2 1/1 0/1 -
Тестирование приложения
Чтобы протестировать приложение, используйте cURL. Сначала создайте новый элемент todo в базе данных с помощью следующей команды:
curl --header "Content-Type: application/json" \
--request POST \
--data '{"description":"configuration","details":"congratulations, you have set up JDBC correctly!","done": "true"}' \
https://${AZ_SPRING_APPS_SERVICE_NAME}-hellospring.azuremicroservices.io
Эта команда возвращает созданный элемент, как показано в следующем примере:
{"id":1,"description":"configuration","details":"congratulations, you have set up JDBC correctly!","done":true}
Затем получите данные с помощью следующего запроса cURL:
curl https://${AZ_SPRING_APPS_SERVICE_NAME}-hellospring.azuremicroservices.io
Эта команда возвращает список задач "todo", включая созданный вами элемент, как показано в следующем примере:
[{"id":1,"description":"configuration","details":"congratulations, you have set up JDBC correctly!","done":true}]
Очистка ресурсов
Чтобы очистить все ресурсы, используемые в этом руководстве, удалите группу ресурсов с помощью следующей команды:
az group delete \
--name $AZ_RESOURCE_GROUP \
--yes