Настройка приложения для доверия внешнему поставщику удостоверений
В этой статье описывается, как управлять федеративными учетными данными в приложении, находящемся в системе идентификации Microsoft Entra. Учетные данные федеративного удостоверения создают доверительные отношения между приложением и внешним поставщиком удостоверений (IdP).
Затем вы можете настроить внешнюю программу для обмена токеном от внешнего поставщика идентификационных данных на токен доступа от платформы идентификации Microsoft. Внешняя рабочая нагрузка может получить доступ к защищенным ресурсам Microsoft Entra без необходимости управлять секретами (в поддерживаемых сценариях). Дополнительные сведения о рабочем процессе обмена токенами см. в статье о федерации идентификации рабочей нагрузки.
В этой статье вы узнаете, как создавать, перечислять и удалять федеративные учетные данные в приложении сервиса Microsoft Entra ID.
Важные рекомендации и ограничения
Чтобы создать, обновить или удалить федеративный идентификационный идентификатор, учетная запись, выполняющая действие, должна иметь роль администратора приложений, роль разработчика приложений, роль администратора облачных приложенийили роль владельца приложения. Для обновления федеративных учетных данных удостоверения личности требуется разрешение microsoft.directory/applications/credentials/update.
К приложению или управляемому удостоверению, назначаемому пользователем, можно добавить не более 20 данных федеративной идентификации.
При настройке учетных данных федеративной идентификации требуется указать несколько важных данных.
издателя и субъекта являются ключевыми частями информации, необходимыми для установления доверительных отношений. Сочетание
issuer
иsubject
должно быть уникальным в приложении. Когда внешняя рабочая нагрузка программного обеспечения запрашивает платформу удостоверений Майкрософт для обмена внешним маркером для маркера доступа, издателя и субъекта значения федеративных учетных данных удостоверения проверяются на соответствиеissuer
иsubject
утверждениям, предоставленным во внешнем маркере. Если эта проверка проходит, платформа удостоверений Майкрософт выдает токен доступа к внешней программной нагрузке.издателя является URL-адресом внешнего поставщика удостоверений и должен соответствовать
issuer
утверждению обмена внешним маркером. Обязательно. Еслиissuer
утверждение имеет начальные или конечные пробелы в значении, обмен токенами блокируется. Это поле имеет ограничение в 600 символов.субъект является идентификатором внешней рабочей нагрузки программного обеспечения и должен соответствовать утверждению
sub
(subject
) внешнего токена, находящегося в процессе обмена. субъект не имеет фиксированного формата, так как каждый IdP использует собственный — иногда это GUID, иногда идентификатор, разделенный двоеточиями, или произвольные строки. Это поле имеет ограничение в 600 символов.Важный
Значения параметров и должны точно соответствовать настройкам в конфигурации рабочего процесса на GitHub. В противном случае платформа удостоверения Майкрософт будет рассматривать входящий внешний токен и отклонять обмен на токен доступа. Вы не получите ошибку, обмен завершается ошибкой без ошибки.
Важный
При случайном добавлении неверных сведений о внешней рабочей нагрузке в субъект настройка учетных данных федеративного удостоверения успешно создается без ошибок. Ошибка не становится очевидной до сбоя обмена токенами.
аудитории выводит список аудиторий, которые могут отображаться во внешнем маркере. Обязательно. Необходимо добавить одно значение аудитории, которое имеет ограничение в 600 символов. Рекомендуемое значение — "api://AzureADTokenExchange". В нем говорится, что платформа удостоверений Майкрософт должна принимать в
aud
заявление входящего токена.имя является уникальным идентификатором для учетных данных федеративного удостоверения. Обязательно. Это поле ограничено от 3 до 120 символов и должно быть подходящим для URL. Поддерживаются буквенно-цифровые символы, дефисы или символы подчеркивания, первый символ должен быть буквенно-цифровым. Это неизменяемо после создания.
описание — это предоставленное пользователем описание креденциала федеративного удостоверения. Необязательный. Описание не проверяется Microsoft Entra ID. Это поле имеет ограничение в 600 символов.
Подстановочные знаки не поддерживаются в значении свойства учетных данных федеративного удостоверения.
Дополнительные сведения о поддерживаемых регионах, времени распространения обновлений федеративных учетных данных, поддерживаемых издателях и многом другом см. в статье Важные рекомендации и ограничения для учетных данных федеративного удостоверения.
Необходимые условия
- Зарегистрируйте приложение или управляйте удостоверением в Microsoft Entra ID. Предоставьте приложению доступ к ресурсам Azure, предназначенным для внешней рабочей нагрузки программного обеспечения.
- Найдите идентификатор объекта приложения (а не идентификатор клиента), который необходимо выполнить в следующих шагах. Идентификатор объекта приложения можно найти в Центре администрирования Microsoft Entra. Перейдите в список регистраций приложений и выберите регистрацию приложения. В обзореможно найти идентификатор объекта.
- Получите темы
и издателя сведения о внешней рабочей нагрузке поставщика удостоверений и программного обеспечения, необходимых в следующих шагах.
Настройка учетных данных федеративного удостоверения в приложении
Действия GitHub
Чтобы добавить федеративное удостоверение для действий GitHub, выполните следующие действия:
Найдите регистрацию приложения в интерфейсе регистрации приложений Центре администрирования Microsoft Entra. Выберите сертификаты & секреты в области навигации слева, перейдите на вкладку Федеративные учетные данные и выберите Добавить учетные данные.
В раскрывающемся списке федеративных учетных данных выберите действия GitHub, развертывающие ресурсы Azure.
Укажите организации и репозиторий для рабочего процесса GitHub Actions.
Для типа сущностивы можете выбрать Среда, Ветка, запрос на вытягиваниеили Тег и указать значение. Значения должны точно соответствовать конфигурации в рабочем процессе GitHub. Сопоставление шаблонов не поддерживается для ветвей и тегов. Если ваш рабочий процесс при отправке коммита работает с многочисленными ветвями или тегами, укажите окружение. Дополнительные сведения см. в примерах .
Добавьте имя для федеративных учетных данных.
издателя, аудиториии идентификатор субъекта поля автоматически заполняются на основе введенных значений.
Выберите Добавить, чтобы настроить федеративные учетные данные.
Используйте следующие значения из регистрации приложения Microsoft Entra для рабочего процесса GitHub:
AZURE_CLIENT_ID
идентификатор приложения (клиента)AZURE_TENANT_ID
Идентификатор каталога (tenant)На следующем снимках экрана показано, как скопировать идентификатор приложения и идентификатор клиента.
AZURE_SUBSCRIPTION_ID
ваш идентификатор подписки. Чтобы получить идентификатор подписки, откройте Подписки в портале Azure и найдите вашу подписку. Затем скопируйте идентификатор подписки .
Примеры типов сущностей
Пример ветви
Для рабочего процесса, активированного событием отправки или пулл-реквеста в основной ветке:
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
Укажите тип сущности ветка и имя ветви GitHub "main".
Пример окружения
Для заданий, связанных со средой под названием "production":
on:
push:
branches:
- main
jobs:
deployment:
runs-on: ubuntu-latest
environment: production
steps:
- name: deploy
# ...deployment-specific steps
Укажите тип сущности для среды и имя среды GitHub "production".
Пример тега
Например, для рабочего процесса, активированного принудительной отправкой тега с именем "v2":
on:
push:
# Sequence of patterns matched against refs/heads
branches:
- main
- 'mona/octocat'
- 'releases/**'
# Sequence of patterns matched against refs/tags
tags:
- v2
- v1.*
Укажите тип сущности тега и имя тега GitHub версии 2.
Пример pull request'а
Для рабочего процесса, активированного событием запроса на вытягивание, укажите тип сущности запроса на вытягивание
Kubernetes
Найдите регистрацию приложения в интерфейсе регистрации приложений Центре администрирования Microsoft Entra. Выберите сертификаты & секреты в области навигации слева, перейдите на вкладку Федеративные учетные данные и выберите Добавить учетные данные.
Выберите сценарий Kubernetes, обращающийся к ресурсам Azure, из выпадающего меню.
Заполните поле URL-адрес издателя кластера, поле пространство имен, поле имя учетной записи службыи поле имя:
URL-адрес издателя кластера — это URL-адрес издателяOIDC для управляемого кластера или URL- URL-адрес издателя OIDC для самоуправляемого кластера.- имя учетной записи службы — это имя учетной записи службы Kubernetes, которое предоставляет удостоверение для процессов, выполняющихся в Pod.
- пространство имен является пространством учетной записи службы.
- Название — это название федеративных полномочий, которые нельзя изменить позже.
Другие поставщики удостоверений
Найдите регистрацию приложения в интерфейсе регистрации приложений Центре администрирования Microsoft Entra. Выберите сертификаты & секреты в левой панели навигации, выберите вкладку Федеративные учетные данные и выберите Добавить учетные данные.
Выберите сценарий
Укажите следующие поля (используя рабочую нагрузку программного обеспечения, выполняемую в Google Cloud в качестве примера):
- имя — это имя федеративной учетной записи, которое нельзя изменить позже.
-
идентификатор субъекта: должен соответствовать утверждению
sub
в токене, выданном внешним поставщиком идентичности. В этом примере, используя Google Cloud, субъект является уникальным идентификатором учетной записи службы, которую вы планируете использовать. - Эмитент : должно соответствовать требованию
iss
в токене, выданном внешним поставщиком удостоверений. URL-адрес, соответствующий спецификации обнаружения OIDC. Идентификатор Microsoft Entra использует этот URL-адрес издателя для получения ключей, необходимых для проверки маркера. Для Google Cloud эмитентом являетсяhttps://accounts.google.com
.
Вывод списка учетных данных федеративного удостоверения в приложении
Найдите регистрацию приложения в разделе регистрации приложений Центре администрирования Microsoft Entra. Выберите Сертификаты & Секреты в области навигации слева и перейдите на вкладку Федеративные учетные данные. Федеративные учетные данные, настроенные в вашем приложении, перечислены.
Удалите федеративное удостоверение личности из приложения
Найдите регистрацию вашего приложения в области регистрации приложений в Центре администрирования Microsoft Entra . Выберите
Чтобы удалить учетные данные федеративного удостоверения, выберите значок Удалить для учетных данных.
Настройте гибкие федеративные учетные данные удостоверения личности (предварительная версия)
- Перейдите в Microsoft Entra ID и выберите приложение, в котором необходимо настроить федеративные учетные данные.
- В области навигации слева выберите Сертификаты, & секреты.
- На вкладке федеративные учетные данные выберите + Добавить учетную запись.
- В появившемся окне Добавление учетных данных в раскрывающемся меню рядом с сценарием федеративных учетных данных выберите Другие издатели.
- Введите выражение сопоставления утверждений, которое вы хотите использовать, в поле .
Необходимые условия
- Если у вас еще нет учетной записи Azure, зарегистрируйтесь для получения бесплатной учетной записи, прежде чем продолжить.
Используйте среду Bash в Azure Cloud Shell. Дополнительные сведения см. в кратком руководстве для Bash в Azure Cloud Shell.
Если вы предпочитаете запускать справочные команды CLI локально, установите Azure CLI. Если вы работаете в Windows или macOS, попробуйте запустить Azure CLI в контейнере Docker. Дополнительные сведения см. в статье Запуск Azure CLI в контейнере Docker.
Если вы используете локальную установку, войдите в Azure CLI с помощью команды az login. Чтобы завершить процесс проверки подлинности, выполните действия, отображаемые в терминале. Сведения о других параметрах входа см. в статье Вход с помощьюAzure CLI.
При появлении запроса установите расширение Azure CLI при первом использовании. Дополнительные сведения о расширениях см. в статье Использование расширений сAzure CLI.
Запустите команду az version, чтобы узнать установленную версию и зависимые библиотеки. Чтобы перейти на последнюю версию, выполните az upgrade.
- Создайте регистрацию приложения в Microsoft Entra ID. Предоставьте приложению доступ к ресурсам Azure, предназначенным для внешней рабочей нагрузки программного обеспечения.
- Найдите идентификатор объекта, идентификатор приложения (клиента) или URI приложения, который потребуется на следующих шагах. В Центре администрирования Microsoft Entraможно найти эти значения. Перейдите в список зарегистрированных приложений и выберите регистрацию приложения. В обзоре—>Essentialsполучите значение идентификатора объекта, идентификатора приложения (клиента)или URI идентификатора приложения, которые понадобятся в следующих шагах.
- Получите информацию о предмете
и издателе и для вашего внешнего IdP и программной рабочей нагрузки, что потребуется в следующих шагах.в системе
Настройка учетных данных федеративного удостоверения в приложении
Запустите команду az ad app federated-credential create, чтобы создать новые учетные данные федеративного удостоверения для вашего приложения.
Параметр id
задает URI идентификатора, идентификатор приложения или идентификатор объекта приложения. Параметр parameters
задает параметры в формате JSON для создания учетных данных федеративного удостоверения.
Пример GitHub Actions
Имя определяет имя ваших учетных данных федеративного удостоверения.
издателя
Тема определяет организацию, репозиторий и среду GitHub для рабочего процесса GitHub Actions. Когда рабочий процесс GitHub Actions запрашивает платформу удостоверений Microsoft обменять токен GitHub на токен доступа, значения в учетных данных федеративного удостоверения проверяются на соответствие предоставленному токену GitHub. Прежде чем Azure предоставляет маркер доступа, запрос должен соответствовать условиям, определенным здесь.
- Для заданий, привязанных к среде:
repo:< Organization/Repository >:environment:< Name >
- Для заданий, не привязанных к среде, включите путь ссылок для ветви или тега на основе пути ссылок, используемого для активации рабочего процесса:
repo:< Organization/Repository >:ref:< ref path>
. Например,repo:n-username/ node_express:ref:refs/heads/my-branch
илиrepo:n-username/ node_express:ref:refs/tags/my-tag
. - Для рабочих процессов, активированных pull request:
repo:< Organization/Repository >:pull-request
.
az ad app federated-credential create --id 00001111-aaaa-2222-bbbb-3333cccc4444 --parameters credential.json
("credential.json" contains the following content)
{
"name": "Testing",
"issuer": "https://token.actions.githubusercontent.com",
"subject": "repo:octo-org/octo-repo:environment:Production",
"description": "Testing",
"audiences": [
"api://AzureADTokenExchange"
]
}
Пример Kubernetes
издателя
Субъект — это имя субъекта в маркерах, выданных учетной записи службы. Kubernetes использует такой формат для имен субъектов: system:serviceaccount:<SERVICE_ACCOUNT_NAMESPACE>:<SERVICE_ACCOUNT_NAME>
.
Имя — это имя федеративных учетных данных, которые нельзя изменить позже.
В аудитории перечисляются аудитории, которые могут отображаться во внешнем токене. Это поле является обязательным. Рекомендуемое значение — api://AzureADTokenExchange
.
az ad app federated-credential create --id 00001111-aaaa-2222-bbbb-3333cccc4444 --parameters credential.json
("credential.json" contains the following content)
{
"name": "Kubernetes-federated-credential",
"issuer": "https://aksoicwesteurope.blob.core.windows.net/aaaabbbb-0000-cccc-1111-dddd2222eeee/",
"subject": "system:serviceaccount:erp8asle:pod-identity-sa",
"description": "Kubernetes service account federated credential",
"audiences": [
"api://AzureADTokenExchange"
]
}
Пример других поставщиков удостоверений
Вы можете настроить учетные данные федеративной идентификации в приложении и установить доверительные отношения с другими внешними поставщиками удостоверений. В следующем примере используется рабочая нагрузка программного обеспечения, выполняемая в Google Cloud, в качестве примера:
-
name
— это имя федеративных учетных данных, которые нельзя изменить позже. -
id
: идентификатор объекта, идентификатор приложения (клиента) или URI идентификатора приложения. -
subject
: должен соответствовать утверждениюsub
в токене, выданном внешним поставщиком удостоверений. В этом примере с помощью Google Cloud тема является уникальным идентификатором учетной записи службы, который вы планируете использовать. -
issuer
: должно соответствовать утверждениюiss
в токене, выданном внешним поставщиком удостоверений личности. URL-адрес, соответствующий спецификации обнаружения OIDC. Идентификатор Microsoft Entra использует этот URL-адрес издателя для получения ключей, необходимых для проверки токена. Для Google Cloud издателя. -
audiences
: перечисляет аудитории, которые могут отображаться во внешнем токене. Это поле является обязательным. Рекомендуемое значение — "api://AzureADTokenExchange".
az ad app federated-credential create --id 00001111-aaaa-2222-bbbb-3333cccc4444 --parameters credential.json
("credential.json" contains the following content)
{
"name": "GcpFederation",
"issuer": "https://accounts.google.com",
"subject": "112633961854638529490",
"description": "Test GCP federation",
"audiences": [
"api://AzureADTokenExchange"
]
}
Вывод списка учетных данных федеративного удостоверения в приложении
Запустите команду az ad app federated-credential list, чтобы получить список учетных данных федеративного удостоверения в вашем приложении.
Параметр id
задает URI идентификатора, идентификатор приложения или идентификатор объекта приложения.
az ad app federated-credential list --id 00001111-aaaa-2222-bbbb-3333cccc4444
Получите федеративные учетные данные в приложении.
Запустите команду az ad app federated-credential show, чтобы получить федеративные учетные данные в вашем приложении.
Параметр id
задает URI идентификатора, идентификатор приложения или идентификатор объекта приложения.
federated-credential-id
указывает идентификатор или имя федеративного удостоверения.
az ad app federated-credential show --id 00001111-aaaa-2222-bbbb-3333cccc4444 --federated-credential-id c79f8feb-a9db-4090-85f9-90d820caa0eb
Удалить федеративные учетные данные удостоверения из приложения
Запустите команду az ad app federated-credential delete, чтобы удалить учетные данные федеративного удостоверения из вашего приложения.
Параметр id
задает URI идентификатора, идентификатор приложения или идентификатор объекта приложения.
federated-credential-id
указывает идентификатор или имя федеративного удостоверения.
az ad app federated-credential delete --id 00001111-aaaa-2222-bbbb-3333cccc4444 --federated-credential-id c79f8feb-a9db-4090-85f9-90d820caa0eb
Необходимые условия
- Чтобы запустить примеры скриптов, у вас есть два варианта:
- Используйте Azure Cloud Shell, который можно открыть с помощью кнопки Попробовать, находящейся в правом верхнем углу блоков кода.
- Запустите скрипты локально с помощью Azure PowerShell, как описано в следующем разделе.
- Создайте регистрацию приложения в Microsoft Entra ID. Предоставьте приложению доступ к ресурсам Azure, предназначенным для внешней рабочей нагрузки программного обеспечения.
- Найдите идентификатор объекта приложения (а не идентификатор клиента), который необходимо выполнить в следующих шагах. Идентификатор объекта приложения можно найти в Центре администрирования Microsoft Entra. Перейдите в список зарегистрированных приложений и выберите регистрацию приложения. В обзоре->Essentialsнайдите идентификатор объекта.
- Получите темы
и издателя сведения о внешней рабочей нагрузке поставщика удостоверений и программного обеспечения, необходимых в следующих шагах.
Настройка Azure PowerShell локально
Чтобы использовать Azure PowerShell локально для этой статьи, а не с помощью Cloud Shell:
Установите последнюю версию Azure PowerShell, если вы еще не сделали этого.
Войдите в Azure.
Connect-AzAccount
Установите последнюю версию PowerShellGet.
Install-Module -Name PowerShellGet -AllowPrerelease
Возможно, вам потребуется
Exit
из текущего сеанса PowerShell после выполнения этой команды для следующего шага.Чтобы выполнить операции с учетными данными федеративного удостоверения, указанные в этой статье, установите предварительную версию модуля
Az.Resources
.Install-Module -Name Az.Resources -AllowPrerelease
Настройка учетных данных федеративного удостоверения в приложении
Запустите командлет New-AzADAppFederatedCredential, чтобы создать новую федеративную учетную запись удостоверения в приложении.
Пример GitHub Actions
- ApplicationObjectId: идентификатор объекта приложения (а не идентификатор приложения (клиента), который вы ранее зарегистрировали в идентификаторе Microsoft Entra.
- эмитент идентифицирует GitHub как внешний эмитент токенов.
-
тема определяет организацию, репозиторий и среду GitHub для рабочего процесса GitHub Actions. Когда рабочий процесс GitHub Actions запрашивает у платформы удостоверений Microsoft обмен токена GitHub на токен доступа, значения в учетных данных федеративного удостоверения сравниваются с предоставленным токеном GitHub.
- Для заданий, привязанных к среде:
repo:< Organization/Repository >:environment:< Name >
- Для заданий, не привязанных к среде, укажите путь ссылки для ветви или тега на основе пути ссылки, используемого для запуска процесса рабочего процесса:
repo:< Organization/Repository >:ref:< ref path>
. Например,repo:n-username/ node_express:ref:refs/heads/my-branch
илиrepo:n-username/ node_express:ref:refs/tags/my-tag
. - Для рабочих процессов, активируемых событием pull request:
repo:< Organization/Repository >:pull-request
.
- Для заданий, привязанных к среде:
- имя — это имя федеративных учетных данных, которые нельзя изменить позже.
-
Аудитория перечисляет списки аудиторий, которые могут появляться во внешнем токене. Это поле является обязательным. Рекомендуемое значение —
api://AzureADTokenExchange
.
New-AzADAppFederatedCredential -ApplicationObjectId $appObjectId -Audience api://AzureADTokenExchange -Issuer 'https://token.actions.githubusercontent.com/' -Name 'GitHub-Actions-Test' -Subject 'repo:octo-org/octo-repo:environment:Production'
Пример Kubernetes
- ApplicationObjectId: идентификатор объекта приложения (а не идентификатор приложения (клиента), который вы ранее зарегистрировали в идентификаторе Microsoft Entra.
- издателя — это URL-адрес издателя учетной записи службы (URL-адрес издателя OIDC, для управляемого кластера или URL-адрес издателя OIDC для самоуправляемого кластера).
-
субъект — это имя субъекта в маркерах, выданных учетной записи службы. Kubernetes использует следующий формат для названий субъектов:
system:serviceaccount:<SERVICE_ACCOUNT_NAMESPACE>:<SERVICE_ACCOUNT_NAME>
. - имя — это имя федеративных учетных данных, которое нельзя изменить позже.
-
аудитории выводит список аудиторий, которые могут отображаться в
aud
утверждении внешнего маркера.
New-AzADAppFederatedCredential -ApplicationObjectId $appObjectId -Audience api://AzureADTokenExchange -Issuer 'https://aksoicwesteurope.blob.core.windows.net/aaaabbbb-0000-cccc-1111-dddd2222eeee/' -Name 'Kubernetes-federated-credential' -Subject 'system:serviceaccount:erp8asle:pod-identity-sa'
Пример других поставщиков удостоверений
Укажите следующие параметры (используя рабочую нагрузку программного обеспечения, выполняемую в Google Cloud в качестве примера):
- ObjectID: идентификатор объекта приложения (а не идентификатор клиента), ранее зарегистрированный в идентификаторе Microsoft Entra.
- имя — это имя федеративных учетных данных, которые нельзя изменить позже.
-
Subject: должен соответствовать атрибуту
sub
в токене, выданном внешним поставщиком удостоверений. В этом примере с использованием Google Cloud объект это уникальный идентификатор учетной записи службы, которую вы планируете использовать. -
издателя: должно соответствовать утверждению
iss
в маркере, выданном внешним поставщиком удостоверений. URL-адрес, соответствующий спецификации обнаружения OpenID Connect (OIDC). Идентификатор Microsoft Entra использует этот URL-адрес издателя для получения ключей, необходимых для проверки токена. Для Google Cloud эмитент — этоhttps://accounts.google.com
. -
Зрители: должны соответствовать претензии
aud
во внешнем токене. По соображениям безопасности следует выбрать значение, уникальное для маркеров, предназначенных для идентификатора Microsoft Entra. Рекомендуемое значение — "api://AzureADTokenExchange".
New-AzADAppFederatedCredential -ApplicationObjectId $appObjectId -Audience api://AzureADTokenExchange -Issuer 'https://accounts.google.com' -Name 'GcpFederation' -Subject '112633961854638529490'
Вывод списка учетных данных федеративной идентификации в приложении
Запустите командлет Get-AzADAppFederatedCredential, чтобы получить список учетных данных федеративного удостоверения для приложения.
Get-AzADApplication -ObjectId $app | Get-AzADAppFederatedCredential
Получение учетных данных федеративного удостоверения в приложении
Запустите командлет Get-AzADAppFederatedCredential для получения учетных данных федеративного удостоверения по идентификатору в приложении.
Get-AzADAppFederatedCredential -ApplicationObjectId $appObjectId -FederatedCredentialId $credentialId
Удаление федеративных учетных данных удостоверения из приложения
Запустите командлет Remove-AzADAppFederatedCredential, чтобы удалить федеративные учетные данные из приложения.
Remove-AzADAppFederatedCredential -ApplicationObjectId $appObjectId -FederatedCredentialId $credentialId
Необходимые условия
Создание регистрации приложения в идентификаторе Microsoft Entra. Предоставьте приложению доступ к ресурсам Azure, предназначенным для внешней рабочей нагрузки программного обеспечения.
Найдите идентификатор объекта приложения (а не идентификатор клиента), который необходимо выполнить в следующих шагах. Идентификатор объекта приложения можно найти в Центре администрирования Microsoft Entra. Перейдите в список зарегистрированных приложений и выберите регистрацию приложения. В Обзоре—>Essentialsнайдите идентификатор объекта.
Получите темы
Конечная точка Microsoft Graph (https://graph.microsoft.com
) предоставляет интерфейсы REST API для создания, обновления, удаления федеративныхIdentityCredentials в приложениях. Запустите Azure Cloud Shell и войдите в клиент, чтобы запустить команды Microsoft Graph из AZ CLI.
Настройка учетных данных федеративного удостоверения в приложении
Действия GitHub
Выполните следующий метод, чтобы создать новую федеративную учетную запись удостоверения для приложения (указывается идентификатором объекта приложения).
issuer
определяет GitHub как внешний издатель токенов.
subject
определяет организацию, репозиторий и среду GitHub для рабочего процесса GitHub Actions. Когда рабочий процесс GitHub Actions запрашивает у платформы удостоверений Microsoft обмен токена GitHub на токен доступа, значения в учетных данных федеративного удостоверения проверяются на соответствие предоставленному токену GitHub.
az rest --method POST --uri 'https://graph.microsoft.com/applications/00001111-aaaa-2222-bbbb-3333cccc4444/federatedIdentityCredentials' --body '{"name":"Testing","issuer":"https://token.actions.githubusercontent.com","subject":"repo:octo-org/octo-repo:environment:Production","description":"Testing","audiences":["api://AzureADTokenExchange"]}'
И вы получите ответ:
{
"@odata.context": "https://graph.microsoft.com/$metadata#applications('00001111-aaaa-2222-bbbb-3333cccc4444')/federatedIdentityCredentials/$entity",
"audiences": [
"api://AzureADTokenExchange"
],
"description": "Testing",
"id": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
"issuer": "https://token.actions.githubusercontent.com",
"name": "Testing",
"subject": "repo:octo-org/octo-repo:environment:Production"
}
В фрагменте кода параметры приведены следующим образом:
-
name
: имя приложения Azure. -
issuer
: путь к поставщику OIDC GitHub:https://token.actions.githubusercontent.com
. Ваше приложение Azure начинает доверять этому издателю. -
subject
. Прежде чем Azure предоставляет маркер доступа, запрос должен соответствовать условиям, определенным здесь.- Для заданий, привязанных к среде:
repo:< Organization/Repository >:environment:< Name >
- Для заданий, не привязанных к среде, укажите ссылочный путь для ветки или тега на основе того, который используется для активации рабочего процесса:
repo:< Organization/Repository >:ref:< ref path>
. Например,repo:n-username/ node_express:ref:refs/heads/my-branch
илиrepo:n-username/ node_express:ref:refs/tags/my-tag
. - Для рабочих процессов, запускаемых событием пул-реквеста:
repo:< Organization/Repository >:pull-request
.
- Для заданий, привязанных к среде:
-
audiences
выводит список аудиторий, которые могут отображаться во внешнем маркере. Это поле является обязательным. Рекомендуемое значение — "api://AzureADTokenExchange".
Пример Kubernetes
Выполните следующий метод, чтобы настроить учетные данные федеративного удостоверения в приложении и создать отношение доверия с учетной записью службы Kubernetes. Укажите следующие параметры:
— это URL- адрес издателя учетной записи службы (URL-адрес издателя OIDC для управляемого кластера или URL-адрес издателя OIDC для кластера с самостоятельным управлением). -
subject
— это имя субъекта в токенах, выданных учетной записи службы. Kubernetes использует следующий формат для названий субъектов:system:serviceaccount:<SERVICE_ACCOUNT_NAMESPACE>:<SERVICE_ACCOUNT_NAME>
. -
name
— это имя федеративных учетных данных, которые нельзя изменить позже. -
audiences
выводит список аудиторий, которые могут отображаться во внешнем токене. Это поле является обязательным. Рекомендуемое значение — "api://AzureADTokenExchange".
az rest --method POST --uri 'https://graph.microsoft.com/applications/00001111-aaaa-2222-bbbb-3333cccc4444/federatedIdentityCredentials' --body '{"name":"Kubernetes-federated-credential","issuer":"https://aksoicwesteurope.blob.core.windows.net/aaaabbbb-0000-cccc-1111-dddd2222eeee/","subject":"system:serviceaccount:erp8asle:pod-identity-sa","description":"Kubernetes service account federated credential","audiences":["api://AzureADTokenExchange"]}'
И вы получите ответ:
{
"@odata.context": "https://graph.microsoft.com/$metadata#applications('00001111-aaaa-2222-bbbb-3333cccc4444')/federatedIdentityCredentials/$entity",
"audiences": [
"api://AzureADTokenExchange"
],
"description": "Kubernetes service account federated credential",
"id": "51ecf9c3-35fc-4519-a28a-8c27c6178bca",
"issuer": "https://aksoicwesteurope.blob.core.windows.net/aaaabbbb-0000-cccc-1111-dddd2222eeee/",
"name": "Kubernetes-federated-credential",
"subject": "system:serviceaccount:erp8asle:pod-identity-sa"
}
Пример других поставщиков удостоверений
Выполните следующий метод, чтобы настроить федеративные идентификационные учётные данные в приложении и создать отношение доверия с внешним поставщиком идентификационных данных. Укажите следующие параметры (используя рабочую нагрузку программного обеспечения, выполняемую в Google Cloud в качестве примера):
- имя — это имя федеративных учетных данных, которые нельзя изменить позже.
- ObjectID: идентификатор объекта приложения (а не идентификатор клиента), ранее зарегистрированный в идентификаторе Microsoft Entra.
-
субъект: должен соответствовать утверждению
sub
в токене, выданном поставщиком внешней идентификации. В этом примере с использованием Google Cloud объект является уникальным идентификатором учетной записи службы, который вы планируете использовать. -
эмитент: должно соответствовать утверждению
iss
в токене, выданном внешним поставщиком удостоверений. URL-адрес, соответствующий спецификации обнаружения OIDC. Идентификатор Microsoft Entra использует этот URL-адрес издателя для получения ключей, необходимых для проверки токена. Для Google Cloud издателем является "https://accounts.google.com"". - аудитории выводит список аудиторий, которые могут отображаться во внешнем маркере. Это поле является обязательным. Рекомендуемое значение — "api://AzureADTokenExchange".
az rest --method POST --uri 'https://graph.microsoft.com/applications/<ObjectID>/federatedIdentityCredentials' --body '{"name":"GcpFederation","issuer":"https://accounts.google.com","subject":"112633961854638529490","description":"Testing","audiences":["api://AzureADTokenExchange"]}'
И вы получите ответ:
{
"@odata.context": "https://graph.microsoft.com/$metadata#applications('00001111-aaaa-2222-bbbb-3333cccc4444')/federatedIdentityCredentials/$entity",
"audiences": [
"api://AzureADTokenExchange"
],
"description": "Testing",
"id": "51ecf9c3-35fc-4519-a28a-8c27c6178bca",
"issuer": "https://accounts.google.com"",
"name": "GcpFederation",
"subject": "112633961854638529490"
}
Список учетных данных федеративной идентификации в приложении
Выполните следующий метод, чтобы перечислить федеративные учетные данные для приложения (указанные по идентификатору объекта приложения):
az rest -m GET -u 'https://graph.microsoft.com/applications/00001111-aaaa-2222-bbbb-3333cccc4444/federatedIdentityCredentials'
И вы получите ответ, аналогичный следующему:
{
"@odata.context": "https://graph.microsoft.com/$metadata#applications('00001111-aaaa-2222-bbbb-3333cccc4444')/federatedIdentityCredentials",
"value": [
{
"audiences": [
"api://AzureADTokenExchange"
],
"description": "Testing",
"id": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
"issuer": "https://token.actions.githubusercontent.com/",
"name": "Testing",
"subject": "repo:octo-org/octo-repo:environment:Production"
}
]
}
Получите идентификационные данные федеративного удостоверения в приложении
Выполните следующий метод, чтобы получить федеративное удостоверение для приложения (указанное идентификатором объекта приложения):
az rest -m GET -u 'https://graph.microsoft.com/applications/00001111-aaaa-2222-bbbb-3333cccc4444//federatedIdentityCredentials/00aa00aa-bb11-cc22-dd33-44ee44ee44ee'
И вы получите ответ, аналогичный следующему:
{
"@odata.context": "https://graph.microsoft.com/$metadata#applications('00001111-aaaa-2222-bbbb-3333cccc4444')/federatedIdentityCredentials",
"value": {
"@odata.context": "https://graph.microsoft.com/$metadata#applications('00001111-aaaa-2222-bbbb-3333cccc4444')/federatedIdentityCredentials/$entity",
"@odata.id": "https://graph.microsoft.com/v2/3d1e2be9-a10a-4a0c-8380-7ce190f98ed9/directoryObjects/$/Microsoft.DirectoryServices.Application('00001111-aaaa-2222-bbbb-3333cccc4444')/federatedIdentityCredentials('00001111-aaaa-2222-bbbb-3333cccc4444')/00001111-aaaa-2222-bbbb-3333cccc4444",
"audiences": [
"api://AzureADTokenExchange"
],
"description": "Testing",
"id": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
"issuer": "https://token.actions.githubusercontent.com/",
"name": "Testing",
"subject": "repo:octo-org/octo-repo:environment:Production"
}
}
Удалить федеративные учетные данные из приложения
Выполните следующий метод, чтобы удалить учетные данные федеративного удостоверения из приложения (определяемого идентификатором объекта приложения):
az rest -m DELETE -u 'https://graph.microsoft.com/applications/00001111-aaaa-2222-bbbb-3333cccc4444/federatedIdentityCredentials/00aa00aa-bb11-cc22-dd33-44ee44ee44ee'
См. также
- Чтобы узнать, как использовать федерацию удостоверений рабочих нагрузок для Kubernetes, см. проект Идентификатор рабочей нагрузки Microsoft Entra для Kubernetes с открытым исходным кодом.
- Сведения об использовании федерации удостоверений рабочей нагрузки для GitHub Actions см. в статье Настройка рабочего процесса GitHub Actions для получения маркера доступа.
- Ознакомьтесь с документацией по GitHub Actions, чтобы узнать больше о настройке рабочего процесса GitHub Actions для получения токена доступа от поставщика идентификационных данных Microsoft и доступа к ресурсам Azure.
- Дополнительные сведения см. в статье о том, как идентификатор Microsoft Entra использует учетные данные клиента OAuth 2.0, предоставляя и утверждение клиента, выданное другим поставщиком удостоверений для получения маркера.
- Сведения о требуемом формате JWT, создаваемых внешними поставщиками удостоверений, см. в документации о формате утверждений.