Проверка подлинности Spring Cloud Azure
Эта статья относится к:✅ версии 4.19.0 ✅ версии 5.19.0
В этой статье описаны все методы проверки подлинности Azure Spring Cloud.
DefaultAzureCredential
DefaultAzureCredential
подходит для большинства сценариев, в которых приложение предназначено для запуска в облаке Azure. Это связано с тем, что DefaultAzureCredential
объединяет учетные данные, часто используемые для проверки подлинности при развертывании с учетными данными, используемыми для проверки подлинности в среде разработки.
Заметка
DefaultAzureCredential
предназначен для упрощения работы с пакетом SDK, обрабатывая распространенные сценарии с разумным поведением по умолчанию. Если требуется больше элементов управления или сценарий не обслуживается параметрами по умолчанию, следует использовать другие типы учетных данных.
DefaultAzureCredential
попытается пройти проверку подлинности с помощью следующих механизмов:
- Среда —
DefaultAzureCredential
будет считывать сведения об учетной записи, указанные с помощью переменных среды, и использовать ее для проверки подлинности. - Управляемое удостоверение. Если приложение развернуто на узле Azure с включенным управляемым удостоверением,
DefaultAzureCredential
будет проходить проверку подлинности с помощью этой учетной записи. - IntelliJ — если вы прошли проверку подлинности с помощью Набора средств Azure для IntelliJ,
DefaultAzureCredential
будет проходить проверку подлинности с помощью этой учетной записи. - Visual Studio Code. Если вы выполнили проверку подлинности с помощью подключаемого модуля учетной записи Azure Visual Studio Code,
DefaultAzureCredential
будет проходить проверку подлинности с помощью этой учетной записи. - Azure CLI. Если вы выполнили проверку подлинности учетной записи с помощью команды Azure CLI
az login
,DefaultAzureCredential
будет проходить проверку подлинности с помощью этой учетной записи.
Кончик
Убедитесь, что субъект безопасности получил достаточно разрешений для доступа к ресурсу Azure. Дополнительные сведения см. в разделе Авторизация доступа с помощьюидентификатора Microsoft Entra.
Заметка
Начиная с Spring Cloud Azure AutoConfigure 4.1.0, ThreadPoolTaskExecutor
bean с именем springCloudAzureCredentialTaskExecutor
будет автоматически зарегистрирован по умолчанию и будет управлять всеми потоками, созданными удостоверением Azure. Имя каждого потока, управляемого этим пулом потоков, префиксируется az-identity-
. Этот ThreadPoolTaskExecutor
боб не зависит от Executor
боба, предоставляемого Spring Boot.
Управляемые удостоверения
Распространенной проблемой является управление секретами и учетными данными, используемыми для защиты обмена данными между различными компонентами, составляющими решение. Управляемые удостоверения устраняют необходимость управления учетными данными. Управляемые удостоверения предоставляют удостоверение для приложений, используемых при подключении к ресурсам, поддерживающим проверку подлинности Microsoft Entra. Приложения могут использовать управляемое удостоверение для получения токенов Microsoft Entra. Например, приложение может использовать управляемое удостоверение для доступа к ресурсам, таким как Azure Key Vault, где можно безопасно хранить учетные данные или получать доступ к учетным записям хранения.
Мы рекомендуем использовать управляемое удостоверение вместо использования строки подключения или ключа в приложении, так как это безопаснее и сохранит проблемы с управлением секретами и учетными данными. В этом случае DefaultAzureCredential
лучше использовать сценарий локальной разработки с использованием сведений об учетной записи, хранящихся локально, а затем развертывания приложения в Облаке Azure и использования управляемого удостоверения.
Типы управляемых удостоверений
Существует два типа управляемых удостоверений:
- назначаемые системой. Некоторые службы Azure позволяют включить управляемое удостоверение непосредственно в экземпляре службы. При включении управляемого удостоверения, назначаемого системой, удостоверение создается в Microsoft Entra, привязанном к жизненному циклу этого экземпляра службы. Поэтому при удалении ресурса Azure автоматически удаляет удостоверение. С помощью этого удостоверения можно запросить маркеры из идентификатора Microsoft Entra.
- назначаемые пользователем. Вы также можете создать управляемое удостоверение в качестве автономного ресурса Azure. Вы можете создать управляемое удостоверение, назначаемое пользователем, и назначить его одному или нескольким экземплярам службы Azure. При использовании управляемых удостоверений, назначаемых пользователем, удостоверение управляется отдельно от ресурсов, которые его используют.
Заметка
При использовании управляемого удостоверения, назначаемого пользователем, можно указать идентификатор клиента с помощью spring.cloud.azure.credential.client-id
или spring.cloud.azure.<azure-service>.credential.client-id
. Вам не нужна конфигурация учетных данных, если вы используете управляемое удостоверение, назначаемое системой.
Кончик
Убедитесь, что субъект безопасности получил достаточно разрешений для доступа к ресурсу Azure. Дополнительные сведения см. в разделе Авторизация доступа с помощьюидентификатора Microsoft Entra.
Дополнительные сведения об управляемом удостоверении см. в статье Что такое управляемые удостоверения для ресурсов Azure?.
Другие типы учетных данных
Если требуется больше управления, или сценарий не обслуживается DefaultAzureCredential
или параметрами по умолчанию, следует использовать другие типы учетных данных.
Проверка подлинности и авторизация с помощью идентификатора Microsoft Entra
С помощью идентификатора Microsoft Entra можно использовать управление доступом на основе ролей Azure (Azure RBAC) для предоставления разрешений субъекту безопасности, который может быть пользователем или субъектом-службой приложений. Если субъект безопасности (пользователь или приложение) пытается получить доступ к ресурсу Azure, например ресурсу Центров событий, запрос должен быть авторизован. С идентификатором Microsoft Entra доступ к ресурсу является двухэтапным процессом:
- Во-первых, удостоверение субъекта безопасности проходит проверку подлинности, а маркер OAuth 2.0 возвращается.
- Затем маркер передается в рамках запроса в службу Azure для авторизации доступа к указанному ресурсу.
Проверка подлинности с помощью идентификатора Microsoft Entra
Чтобы подключить приложения к ресурсам, поддерживающим проверку подлинности Microsoft Entra, можно задать следующие конфигурации с помощью префикса spring.cloud.azure.credential
или spring.cloud.azure.<azure-service>.credential
В следующей таблице перечислены свойства проверки подлинности:
Свойство | Описание |
---|---|
идентификатор клиента | Идентификатор клиента, используемый при выполнении проверки подлинности субъекта-службы с помощью Azure. |
секрет клиента | Секрет клиента, используемый при проверке подлинности субъекта-службы с помощью Azure. |
путь к сертификату клиента | Путь к файлу сертификата PEM для использования при выполнении проверки подлинности субъекта-службы с помощью Azure. |
client-certificate-password | Пароль файла сертификата. |
имя пользователя | Имя пользователя, используемое при выполнении проверки подлинности имени пользователя и пароля в Azure. |
пароль | Пароль, используемый при выполнении проверки подлинности имени пользователя или пароля в Azure. |
с поддержкой управляемого удостоверения | Следует ли включить управляемое удостоверение. |
Кончик
Список всех свойств конфигурации Azure Spring Cloud см. в разделе свойства конфигурации Spring Cloud Azure.
Приложение будет выглядеть в нескольких местах, чтобы найти доступные учетные данные, и будет использовать DefaultAzureCredential
если свойства учетных данных не настроены. Если вы хотите использовать определенные учетные данные, ознакомьтесь со следующими примерами.
В следующем примере показано, как пройти проверку подлинности с помощью управляемого удостоверения, назначаемого системой:
spring.cloud.azure:
credential:
managed-identity-enabled: true
В следующем примере показано, как пройти проверку подлинности с помощью управляемого удостоверения, назначаемого пользователем:
spring.cloud.azure:
credential:
managed-identity-enabled: true
client-id: ${AZURE_CLIENT_ID}
В следующем примере показано, как выполнить проверку подлинности с помощью субъекта-службы с секретом клиента:
spring.cloud.azure:
credential:
client-id: ${AZURE_CLIENT_ID}
client-secret: ${AZURE_CLIENT_SECRET}
profile:
tenant-id: <tenant>
Заметка
Значения, допустимые для tenant-id
: common
, organizations
, consumers
или идентификатор клиента. Дополнительные сведения об этих значениях см. в разделе Используется неправильная конечная точка (личные учетные записи и учетные записи организации) ошибки AADSTS50020. Учетная запись пользователя от поставщика удостоверений не существует вклиента. Сведения о преобразовании приложения с одним клиентом см. в статье Преобразование однотенантного приложения в мультитенантное приложение наидентификатора Microsoft Entra.
В следующем примере показано, как выполнить проверку подлинности с помощью субъекта-службы с помощью сертификата PFX клиента:
spring.cloud.azure:
credential:
client-id: ${AZURE_CLIENT_ID}
client-certificate-path: ${AZURE_CLIENT_CERTIFICATE_PATH}
client-certificate-password: ${AZURE_CLIENT_CERTIFICATE_PASSWORD}
profile:
tenant-id: <tenant>
Заметка
Значения, допустимые для tenant-id
: common
, organizations
, consumers
или идентификатор клиента. Дополнительные сведения об этих значениях см. в разделе Используется неправильная конечная точка (личные учетные записи и учетные записи организации) ошибки AADSTS50020. Учетная запись пользователя от поставщика удостоверений не существует вклиента. Сведения о преобразовании приложения с одним клиентом см. в статье Преобразование однотенантного приложения в мультитенантное приложение наидентификатора Microsoft Entra.
В следующем примере показано, как выполнить проверку подлинности с помощью субъекта-службы с сертификатом PEM клиента:
spring.cloud.azure:
credential:
client-id: ${AZURE_CLIENT_ID}
client-certificate-path: ${AZURE_CLIENT_CERTIFICATE_PATH}
profile:
tenant-id: <tenant>
Заметка
Значения, допустимые для tenant-id
: common
, organizations
, consumers
или идентификатор клиента. Дополнительные сведения об этих значениях см. в разделе Используется неправильная конечная точка (личные учетные записи и учетные записи организации) ошибки AADSTS50020. Учетная запись пользователя от поставщика удостоверений не существует вклиента. Сведения о преобразовании приложения с одним клиентом см. в статье Преобразование однотенантного приложения в мультитенантное приложение наидентификатора Microsoft Entra.
В следующем примере показано, как пройти проверку подлинности с помощью учетных данных пользователя:
spring.cloud.azure:
credential:
client-id: ${AZURE_CLIENT_ID}
username: ${AZURE_USER_USERNAME}
password: ${AZURE_USER_PASSWORD}
В следующем примере показано, как выполнить проверку подлинности в Key Vault с помощью другого субъекта-службы. В этом примере приложение настраивается с двумя учетными данными: одно назначаемое системой управляемое удостоверение и один субъект-служба. Клиент Секрета Key Vault будет использовать субъект-службу, но все остальные компоненты будут использовать управляемое удостоверение.
spring.cloud.azure:
credential:
managed-identity-enabled: true
keyvault.secret:
credential:
client-id: ${AZURE_CLIENT_ID}
client-secret: ${AZURE_CLIENT_SECRET}
profile:
tenant-id: <tenant>
Заметка
Значения, допустимые для tenant-id
: common
, organizations
, consumers
или идентификатор клиента. Дополнительные сведения об этих значениях см. в разделе Используется неправильная конечная точка (личные учетные записи и учетные записи организации) ошибки AADSTS50020. Учетная запись пользователя от поставщика удостоверений не существует вклиента. Сведения о преобразовании приложения с одним клиентом см. в статье Преобразование однотенантного приложения в мультитенантное приложение наидентификатора Microsoft Entra.
Авторизация доступа с помощью идентификатора Microsoft Entra
Шаг авторизации требует, чтобы одна или несколько ролей Azure были назначены субъекту безопасности. Роли, назначенные субъекту безопасности, определяют разрешения, которые будут иметь субъект.
Кончик
Список всех встроенных ролей Azure см. в
В следующей таблице перечислены встроенные роли Azure для авторизации доступа к службам Azure, поддерживаемым в Spring Cloud Azure:
Роль | Описание |
---|---|
владельца данных конфигурации приложений | Обеспечивает полный доступ к данным конфигурации приложений. |
средства чтения данных конфигурации приложений |
Разрешает доступ на чтение к данным конфигурации приложений. |
владельца данных Центров событий Azure | Предоставляет полный доступ к ресурсам Центров событий Azure. |
приемника данных Центров событий Azure | Позволяет получать доступ к ресурсам Центров событий Azure. |
отправитель данных Центров событий Azure | Позволяет отправлять доступ к ресурсам Центров событий Azure. |
владельца данных служебной шины Azure | Обеспечивает полный доступ к ресурсам служебной шины Azure. |
приемник данных служебной шины Azure | Разрешает доступ к ресурсам служебной шины Azure. |
отправитель данных служебной шины Azure | Разрешает отправлять доступ к ресурсам служебной шины Azure. |
владельца данных BLOB-объектов хранилища | Предоставляет полный доступ к контейнерам и данным больших двоичных объектов службы хранилища Azure, включая назначение управления доступом POSIX. |
средства чтения данных BLOB-объектов хранилища |
Чтение и перечисление контейнеров службы хранилища Azure и больших двоичных объектов. |
средства чтения данных очереди хранилища |
Чтение и перечисление очередей службы хранилища Azure и сообщений очередей. |
участник кэша Redis | Управление кэшами Redis. |
Заметка
При использовании Spring Cloud Azure Resource Manager для получения строк подключения для центров событий, служебной шины и очереди хранилища или свойств кэша для Redis назначьте встроенную роль Azure Contributor
. Кэш Azure для Redis является специальным, и вы также можете назначить роль Redis Cache Contributor
, чтобы получить свойства Redis.
Заметка
Политика доступа Key Vault определяет, может ли данный субъект безопасности, а именно пользователь, приложение или группа пользователей, выполнять различные операции с секретами, ключами и сертификатами Key Vault. Политики доступа можно назначить с помощью портала Azure, Azure CLI или Azure PowerShell. Дополнительные сведения см. в статье Назначение политики доступа Key Vault.
Важный
Azure Cosmos DB предоставляет два встроенных определения ролей: Cosmos DB Built-in Data Reader
и Cosmos DB Built-in Data Contributor
. Однако поддержка портала Azure для управления ролями пока недоступна. Дополнительные сведения о модели разрешений, определениях ролей и назначении ролей см. в статье Настройка управления доступом на основе ролей с помощью идентификатора Microsoft Entra для учетной записи Azure Cosmos DB.
Маркеры SAS
Можно также настроить службы для проверки подлинности с помощью подписанного URL-адреса (SAS).
spring.cloud.azure.<azure-service>.sas-token
— это свойство для настройки. Например, используйте spring.cloud.azure.storage.blob.sas-token
для проверки подлинности в службе BLOB-объектов хранилища.
Строки подключения
Строка подключения поддерживается некоторыми службами Azure для предоставления сведений о подключении и учетных данных. Чтобы подключиться к этим службам Azure с помощью строки подключения, просто настройте spring.cloud.azure.<azure-service>.connection-string
. Например, настройте spring.cloud.azure.eventhubs.connection-string
для подключения к службе Центров событий.