Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Приложения, размещенные вне Azure, например, локально или в стороннем центре обработки данных, должны использовать учетную запись службы приложения через Microsoft Entra ID для аутентификации в службах Azure. В следующих разделах вы узнаете:
- Как зарегистрировать приложение с помощью Microsoft Entra для создания сервисного принципала.
- Как назначать роли в рамках разрешений области.
- Как пройти проверку подлинности с помощью сервисного принципала из кода приложения.
Используя специальные служебные принципалы приложений, вы можете следовать принципу наименьших привилегий при доступе к ресурсам Azure. Ограничьте разрешения определенным требованиям приложения во время разработки, чтобы предотвратить случайный доступ к ресурсам Azure, предназначенным для других приложений или служб. Этот подход также помогает избежать проблем при перемещении приложения в рабочую среду, гарантируя, что приложение не является более привилегированным в среде разработки.
Создайте другую регистрацию приложения для каждой среды, в которой размещается приложение. Вы можете настроить разрешения ресурсов для каждого субъекта-службы для конкретной среды и убедиться, что приложение, развернутое в одной среде, не обращается к ресурсам Azure в другой среде.
Регистрация приложения в Azure
Объекты основного сервиса приложения создаются посредством регистрации приложения в Azure через портал Azure или Azure CLI.
На портале Azure используйте строку поиска, чтобы перейти на страницу App registrations.
На странице App registrations выберите + Новая регистрация.
На странице Зарегистрировать приложение:
- В поле Имя введите описательное значение, включающее имя приложения и целевую среду.
- Для поддерживаемых типов учетных записейвыберите учетные записи только в этом каталоге организации (только клиент Майкрософт — один клиент)или любой вариант, который лучше всего соответствует вашим требованиям.
Выберите Регистрация, чтобы зарегистрировать приложение и создать служебный принципал.
На странице регистрации приложений скопируйте идентификатор приложения (клиента) и идентификатор каталога (клиента) и вставьте их во временное расположение для последующего использования в конфигурациях кода приложения.
Выберите Добавить сертификат или секрет, чтобы установить учетные данные для приложения.
На странице "Сертификаты и секреты" выберите "+ Новый секрет клиента".
На панели, открывающейся для добавления секрета клиента, выполните следующие действия:
- В поле "Описание" введите значение
Current. - Для значения "Срок действия" оставьте рекомендуемое значение
180 daysпо умолчанию. - Нажмите кнопку "Добавить ", чтобы добавить секрет.
- В поле "Описание" введите значение
На странице сертификатов & секретов скопируйте свойство значения секрета клиента для использования в следующем шаге.
Замечание
Значение секрета клиента отображается только один раз после создания регистрации приложения. Вы можете добавить дополнительные секреты клиента, не отменив этот секрет клиента, но невозможно снова отобразить это значение.
Назначение ролей для служебного принципала приложения
Затем определите, какие роли (разрешения) приложению требуются для каких ресурсов, и назначьте эти роли созданному субъекту-службе. Роли можно назначать на уровне ресурса, группы ресурсов или подписки. В этом примере показано, как назначать роли в области группы ресурсов, так как большинство приложений группируют все свои Azure ресурсы в единую группу ресурсов.
На портале Azure перейдите на страницу Overview группы ресурсов, содержащей приложение.
Выберите управление доступом (IAM) в левой панели навигации.
На странице управления доступом (IAM) выберите +Добавить , а затем выберите "Добавить назначение ролей " в раскрывающемся меню. Страница "Добавление назначения ролей " предоставляет несколько вкладок для настройки и назначения ролей.
На вкладке "Роль" используйте поле поиска, чтобы найти роль, которую вы хотите назначить. Выберите роль и нажмите кнопку "Далее".
На вкладке "Члены" :
- Чтобы назначить доступ к значению , выберите "Пользователь", "Группа" или "Субъект-служба ".
- Для значения "Члены" нажмите кнопку "Выбрать участников ", чтобы открыть панель всплывающего меню "Выбор участников ".
- Найдите служебный принципал, созданный ранее, и выберите его из отфильтрованных результатов. Выберите команду "Выбрать ", чтобы выбрать группу и закрыть панель всплывающего меню.
- Выберите Обзор + Назначение внизу вкладки Члены.
На вкладке "Обзор и назначение" выберите "Обзор и назначение" в нижней части страницы.
Установите переменные среды приложения
Во время выполнения определенные учетные данные из библиотеки удостоверений Azure Identity, такие как DefaultAzureCredential, EnvironmentCredential, и ClientSecretCredential, выполняют поиск информации о служебном объекте в переменных среды в соответствии с соглашением. При работе с Java можно настроить переменные среды несколькими способами в зависимости от инструментов и среды.
Независимо от выбранного подхода настройте следующие переменные среды для субъекта-службы:
-
AZURE_CLIENT_ID: используется для идентификации зарегистрированного приложения в Azure. -
AZURE_TENANT_ID: идентификатор клиента Microsoft Entra. -
AZURE_CLIENT_SECRET: секретные учетные данные, созданные для приложения.
- Bash
- Visual Studio Code
- IntelliJ IDEA
- Windows
Задайте следующие переменные среды. Замените значения заполнителей фактическими значениями из регистрации приложения:
export AZURE_CLIENT_ID="<your-client-id>"
export AZURE_TENANT_ID="<your-tenant-id>"
export AZURE_CLIENT_SECRET="<your-client-secret>"
Для приложения Java, работающего в качестве системной службы на рабочем сервере, определите переменные среды в файле и сослаться на него с директивой EnvironmentFile в файле единицы обслуживания:
[Unit]
Description=Java application service
After=network.target
[Service]
User=app-user
WorkingDirectory=/path/to/java-app
EnvironmentFile=/path/to/java-app/app-environment-variables
ExecStart=/usr/bin/java -jar app.jar
[Install]
WantedBy=multi-user.target
Файл среды должен содержать список переменных среды со своими значениями:
AZURE_CLIENT_ID=<your-client-id>
AZURE_TENANT_ID=<your-tenant-id>
AZURE_CLIENT_SECRET=<your-client-secret>
Аутентификация для подключения к службам Azure из вашего приложения
Библиотека Azure Identity предоставляет различные учетные данные — реализации TokenCredential для поддержки различных сценариев и потоков аутентификации Microsoft Entra. Ниже показано, как использовать ClientSecretCredential при работе с субъектами-службами локально и в рабочей среде.
Реализация кода
Добавьте зависимость azure-identity в ваш pom.xml файл:
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity</artifactId>
</dependency>
Доступ к службам Azure используется с помощью специализированных клиентских классов из различных клиентских библиотек Azure SDK. Для любого кода Java, создающего в приложении объект клиента Azure SDK, выполните следующие действия.
-
ClientSecretCredentialBuilderИмпортируйте класс изcom.azure.identityпакета. - Создайте объект с помощью
ClientSecretCredentialBuilder, используяtenantId,clientIdиclientSecret. - Передайте экземпляр
ClientSecretCredentialв методcredentialобъекта-создателя клиента Azure SDK.
Пример этого подхода показан в следующем сегменте кода:
import com.azure.identity.ClientSecretCredential;
import com.azure.identity.ClientSecretCredentialBuilder;
import com.azure.storage.blob.BlobServiceClient;
import com.azure.storage.blob.BlobServiceClientBuilder;
String tenantId = System.getenv("AZURE_TENANT_ID");
String clientId = System.getenv("AZURE_CLIENT_ID");
String clientSecret = System.getenv("AZURE_CLIENT_SECRET");
ClientSecretCredential credential = new ClientSecretCredentialBuilder()
.tenantId(tenantId)
.clientId(clientId)
.clientSecret(clientSecret)
.build();
BlobServiceClient blobServiceClient = new BlobServiceClientBuilder()
.endpoint("https://<account-name>.blob.core.windows.net")
.credential(credential)
.buildClient();