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


Настройка приложения для доверия внешнему поставщику удостоверений

В этой статье описывается, как управлять федеративными учетными данными в приложении, находящемся в системе идентификации Microsoft Entra. Учетные данные федеративного удостоверения создают доверительные отношения между приложением и внешним поставщиком удостоверений (IdP).

Затем вы можете настроить внешнюю программу для обмена токеном от внешнего поставщика идентификационных данных на токен доступа от платформы идентификации Microsoft. Внешняя рабочая нагрузка может получить доступ к защищенным ресурсам Microsoft Entra без необходимости управлять секретами (в поддерживаемых сценариях). Дополнительные сведения о рабочем процессе обмена токенами см. в статье о федерации идентификации рабочей нагрузки.

В этой статье вы узнаете, как создавать, перечислять и удалять федеративные учетные данные в приложении сервиса Microsoft Entra ID.

Важные рекомендации и ограничения

Чтобы создать, обновить или удалить учетные данные федеративного удостоверения, учетная запись, выполняющая действие, должна быть владельцем приложения или иметь одну из следующих ролей: администратор приложений, администратор облачных приложений, глобальный администраторили гибридный администратор удостоверений. Для обновления федеративных учетных данных удостоверения личности требуется разрешение microsoft.directory/applications/credentials/update.

К приложению или управляемому удостоверению, назначаемому пользователем, можно добавить не более 20 данных федеративной идентификации.

При настройке учетных данных федеративной идентификации требуется указать несколько важных данных.

  • Issuer и subject являются ключевыми элементами информации, необходимыми для установления отношений доверия. Сочетание issuer и subject должно быть уникальным в приложении. Когда внешняя рабочая нагрузка программного обеспечения запрашивает платформу идентификации Microsoft для обмена внешнего токена на токен доступа, значения издателя и субъекта проверяются на соответствие заявлениям issuer и subject, предоставленным во внешнем токене. Если эта проверка проходит, платформа удостоверений Майкрософт выдает токен доступа к внешней программной нагрузке.

  • issuer является URL-адресом внешнего поставщика удостоверений и должен соответствовать утверждению issuer внешнего маркера, который обменивается. Обязательно. Если issuer утверждение имеет начальные или конечные пробелы в значении, обмен токенами блокируется. Это поле имеет ограничение в 600 символов.

  • субъект является идентификатором внешней рабочей нагрузки программного обеспечения и должен соответствовать утверждению sub (subject) внешнего токена, обмениваемого. субъект не имеет фиксированного формата, так как каждый IdP использует собственный — иногда это GUID, иногда идентификатор, разделенный двоеточиями, или произвольные строки. Это поле имеет ограничение в 600 символов.

    Важный

    Значения параметров и должны точно соответствовать настройкам в конфигурации рабочего процесса на GitHub. В противном случае платформа удостоверения Майкрософт будет рассматривать входящий внешний токен и отклонять обмен на токен доступа. Вы не получите ошибку, обмен завершается ошибкой без ошибки.

    Важно

    Если вы случайно добавите неверную информацию о внешней рабочей нагрузке в настройку субъект, учетные данные федеративного удостоверения создаются успешно и без ошибок. Ошибка не становится очевидной до сбоя обмена токенами.

  • аудитории выводит список аудиторий, которые могут отображаться во внешнем маркере. Обязательно. Необходимо добавить одно значение аудитории, которое имеет ограничение в 600 символов. Рекомендуемое значение — "api://AzureADTokenExchange". В нем говорится, что платформа идентификации Microsoft должна принимать в требованиях aud входящего токена.

  • имя является уникальным идентификатором для федеративного удостоверяющего элемента. Обязательно. Это поле ограничено от 3 до 120 символов и должно быть подходящим для URL. Поддерживаются буквенно-цифровые символы, дефисы или символы подчеркивания, первый символ должен быть буквенно-цифровым. Это неизменяемо после создания.

  • описание — это предоставленное пользователем описание креденциала федеративного удостоверения. Необязательный. Описание не подтверждается и не проверяется Microsoft Entra ID. Это поле имеет ограничение в 600 символов.

Подстановочные знаки не поддерживаются в значении свойства учетных данных для федеративной аутентификации.

Дополнительные сведения о поддерживаемых регионах, времени распространения обновлений федеративных учетных данных, поддерживаемых издателях и многом другом см. в статье Важные рекомендации и ограничения для учетных данных федеративного удостоверения.

Необходимые условия

  • Зарегистрируйте приложение или управляйте удостоверением в Microsoft Entra ID. Предоставьте приложению доступ к ресурсам Azure, предназначенным для внешней рабочей нагрузки программного обеспечения.
  • Найдите идентификатор объекта приложения (а не идентификатор клиента), который необходимо выполнить в следующих шагах. Идентификатор объекта приложения можно найти в Центре администрирования Microsoft Entra. Перейдите в список регистраций приложений и выберите регистрацию приложения. В обзореможно найти идентификатор объекта.
  • Получите информацию о субъекте и издателе для внешнего поставщика удостоверений и программной рабочей нагрузки, необходимые на следующих шагах.

Настройка учетных данных федеративного удостоверения в приложении

Действия GitHub

Чтобы добавить федеративное удостоверение для действий GitHub, выполните следующие действия:

  1. Найдите регистрацию приложения в интерфейсе регистрации приложений Центре администрирования Microsoft Entra. Выберите сертификаты & секреты в области навигации слева, перейдите на вкладку Федеративные учетные данные и выберите Добавить учетные данные.

  2. В раскрывающемся списке федеративных учетных данных выберите действия GitHub, развертывающие ресурсы Azure.

  3. Укажите организацию и репозиторий для рабочего процесса GitHub Actions.

  4. Для типа сущностивы можете выбрать Среда, Ветка, запрос на вытягиваниеили Тег и указать значение. Значения должны точно соответствовать конфигурации в рабочем процессе GitHub. Сопоставление шаблонов не поддерживается для ветвей и тегов. Если ваш рабочий процесс при отправке коммита работает с многочисленными ветвями или тегами, укажите окружение. Дополнительные сведения см. в примерах .

  5. Добавьте имя для федеративных учетных данных.

  6. издателя, аудиториии идентификатор субъекта поля автоматически заполняются на основе введенных значений.

  7. Выберите Добавить, чтобы настроить федеративные учетные данные.

    снимок экрана: окно

Используйте следующие значения из регистрации приложения Microsoft Entra для рабочего процесса GitHub:

  • AZURE_CLIENT_ID идентификатор приложения (клиента)

  • AZURE_TENANT_ID Идентификатор каталога (арендатора)

    На следующем снимках экрана показано, как скопировать идентификатор приложения и идентификатор клиента.

    снимок экрана, демонстрирующий копирование идентификатора приложения и идентификатора клиента из Центра администрирования Microsoft Entra.

Примеры типов сущностей

Пример ветви

Для последовательности действий, активированной пушем или пулл-реквестом в главной ветви:

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

Укажите тип сущностиВетка и имя ветви GitHub "main".

Пример окружения

Для заданий, связанных со средой под названием "производство":

on:
  push:
    branches:
      - main

jobs:
  deployment:
    runs-on: ubuntu-latest
    environment: production
    steps:
      - name: deploy
        # ...deployment-specific steps

Укажите тип сущности как Среда и имя среды GitHub как «продакшн».

Пример тега

Например, для рабочего процесса, активированного принудительной отправкой тега с именем "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.*

Укажите тип сущности "Tag" и имя тега GitHub "v2".

Пример pull request'а

Для рабочего процесса, активированного событием запроса на вытягивание, укажите тип сущности запроса на вытягивание

Kubernetes

Найдите регистрацию приложения в интерфейсе регистрации приложений Центре администрирования Microsoft Entra. Выберите сертификаты & секреты в области навигации слева, перейдите на вкладку Федеративные учетные данные и выберите Добавить учетные данные.

Выберите сценарий Kubernetes, обращающийся к ресурсам Azure, из выпадающего меню.

Заполните поле URL-адрес издателя кластера, поле пространство имен, поле имя учетной записи службыи поле имя:

  • URL-адрес издателя кластера — это URL-адрес OIDC-издателя для управляемого кластера или OIDC-издателя для самоуправляемого кластера.
  • имя учетной записи службы — это имя учетной записи службы Kubernetes, которое предоставляет удостоверение для процессов, выполняющихся в Pod.
  • Namespace — это пространство имен, связанное с учетной записью службы.
  • Название — это название федеративных полномочий, которые нельзя изменить позже.

Другие поставщики удостоверений

Найдите регистрацию приложения в интерфейсе регистрации приложений Центре администрирования Microsoft Entra. Выберите сертификаты & секреты в области навигации слева, перейдите на вкладку Федеративные учетные данные и выберите Добавить учетные данные.

Выберите сценарий другого издателя в раскрывающемся меню.

Укажите следующие поля (используя рабочую нагрузку программного обеспечения, выполняемую в Google Cloud в качестве примера):

  • Название — это название федеративных полномочий, которые нельзя изменить позже.
  • идентификатор субъекта: должен соответствовать утверждению sub в токене, выданном внешним поставщиком идентичности. В этом примере, используя Google Cloud, субъект является уникальным идентификатором учетной записи службы, которую вы планируете использовать.
  • Эмитент: должен соответствовать требованию iss в токене, выданном внешним поставщиком удостоверений. URL-адрес, соответствующий спецификации обнаружения OIDC. Microsoft Entra ID использует этот URL-адрес издателя для получения ключей, необходимых для проверки токена. Для Google Cloud эмитентом является https://accounts.google.com.

Представление списка идентификационных данных федеративной аутентификации в приложении

Найдите регистрацию приложения в интерфейсе регистрации приложений Центре администрирования Microsoft Entra. Выберите Сертификаты & Секреты в области навигации слева и перейдите на вкладку Федеративные учетные данные. Федеративные учетные данные, настроенные в вашем приложении, перечислены.

Удалите федеративное удостоверение личности из приложения

Найдите регистрацию приложения в интерфейсе регистрации приложений Центре администрирования Microsoft Entra. Выберите Сертификаты & Секреты в области навигации слева и перейдите на вкладку Федеративные учетные данные. Федеративные учетные данные, настроенные в вашем приложении, перечислены.

Чтобы удалить учетные данные федеративного удостоверения, выберите значок Удалить для учетных данных.

Настройте гибкие федеративные учетные данные (предварительная версия)

  1. Перейдите в Microsoft Entra ID и выберите приложение, в котором необходимо настроить федеративные учетные данные.
  2. В левой панели навигации выберите Сертификаты и секреты.
  3. На вкладке федеративные учетные данные выберите + Добавить учетную запись.
  4. В появившемся окне Добавление учетных данных в раскрывающемся меню рядом с сценарием федеративных учетных данных выберите Другие издатели.
  5. Введите выражение сопоставления утверждений, которое вы хотите использовать, в поле .

Необходимые условия

  • Используйте среду 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 идентификатора приложения, которые понадобятся в следующих шагах.
  • Получите данные субъекта и издателя информации для вашего внешнего поставщика удостоверений и программной рабочей нагрузки, которые вам понадобятся в следующих шагах.

Настройка учетных данных федеративного удостоверения в приложении

Запустите команду az ad app federated-credential create, чтобы создать новые учетные данные федеративного удостоверения для вашего приложения.

Параметр id задает URI идентификатора, идентификатор приложения или идентификатор объекта приложения. Параметр parameters задает параметры в формате JSON для создания учетных данных федеративного удостоверения.

Пример GitHub Actions

Имя определяет имя ваших учетных данных федеративного удостоверения.

Идентификатор эмитента определяет путь к поставщику OIDC GitHub: https://token.actions.githubusercontent.com/. Этот издатель становится доверенным для вашего приложения Azure.

Тема определяет организацию, репозиторий и среду 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

Издатель — это URL-адрес издателя учетной записи службы (URL-адрес издателя OIDC для управляемого кластера или URL-адрес издателя OIDC для самоуправляемого кластера).

Обозначение — это имя темы в маркерах, выданных учетной записи службы. 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-адрес, соответствующий спецификации обнаружения OpenID Connect (OIDC). Microsoft Entra ID использует этот URL-адрес для получения ключей, необходимых для проверки токена. Для Google Cloud эмитентом является https://accounts.google.com.
  • 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:

  1. Установите последнюю версию Azure PowerShell, если вы еще не сделали этого.

  2. Войдите в Azure.

    Connect-AzAccount
    
  3. Установите последнюю версию PowerShellGet.

    Install-Module -Name PowerShellGet -AllowPrerelease
    

    Возможно, вам потребуется выйти из текущего сеанса PowerShell после выполнения этой команды для следующего шага.

  4. Чтобы выполнить операции с учетными данными федеративного удостоверения, указанные в этой статье, установите предварительную версию модуля 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-адрес, соответствующий спецификации обнаружения OIDC. Microsoft Entra ID использует этот 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 ID. Предоставьте приложению доступ к ресурсам Azure, предназначенным для внешней рабочей нагрузки программного обеспечения.

Найдите идентификатор объекта приложения (а не идентификатор клиента), который необходимо выполнить в следующих шагах. Идентификатор объекта приложения можно найти в Центре администрирования Microsoft Entra. Перейдите в список зарегистрированных приложений и выберите регистрацию приложения. В обзоре->Essentialsнайдите идентификатор объекта.

Получите информацию о субъекте и издателе для вашего внешнего поставщика удостоверений и программной рабочей нагрузки, которая необходима на следующих этапах.

Конечная точка Microsoft Graph (https://graph.microsoft.com) предоставляет REST API для создания, обновления и удаления federatedIdentityCredentials в приложениях. Запустите 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.
    • Для рабочих процессов, активированных pull request: repo:< Organization/Repository >:pull-request.
  • audiences перечисляет аудитории, которые могут отображаться во внешнем токене. Это поле является обязательным. Рекомендуемое значение — "api://AzureADTokenExchange".

Пример Kubernetes

Выполните следующий метод, чтобы настроить учетные данные федеративного удостоверения в приложении и создать отношение доверия с учетной записью службы Kubernetes. Укажите следующие параметры:

  • issuer — это 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, создаваемых внешними поставщиками удостоверений, см. в документации о формате утверждений.