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

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

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

Общие рекомендации по учетным данным федеративного удостоверения

Область применения: приложения и назначаемые пользователем управляемые удостоверения

Любой пользователь с разрешениями на создание регистрации приложения и добавление секрета или сертификата может добавить в приложение федеративные учетные данные удостоверения. Если параметр "Пользователи могут зарегистрировать приложения" имеет значение "Нет" в колонке "Пользователи-пользователи> Параметры" в Центре администрирования Microsoft Entra, вы не сможете создать регистрацию приложения или настроить учетные данные федеративного удостоверения. Найдите администратора, чтобы настроить учетные данные федеративного удостоверения от вашего имени, кто-то из ролей приложения Администратор istrator или владельца приложения.

Учетные данные федеративного удостоверения не используют квоту объекта субъекта-службы клиента Microsoft Entra.

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

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

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

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

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

    Внимание

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

    Внимание

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

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

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

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

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

Неподдерживаемые регионы (назначаемые пользователем управляемые удостоверения)

Область применения: назначаемые пользователем управляемые удостоверения

Создание учетных данных федеративного удостоверения в настоящее время не поддерживается для управляемых удостоверений, назначенных пользователем, созданных в следующих регионах:

  • Восточная Азия
  • Центральный Катар
  • Южная Малайзия
  • Северная Италия
  • Израиль, центральный регион

Поддержка создания федеративных учетных данных удостоверения для назначенных пользователем удостоверений в этих регионах постепенно развертывается. Ресурсы в этом регионе, который должен использовать учетные данные федеративного удостоверения, могут сделать это, используя управляемое удостоверение, назначенное пользователем, созданное в поддерживаемом регионе.

Поддерживаемые алгоритмы подписывания и издатели

Область применения: приложения и назначаемые пользователем управляемые удостоверения

Только издатели, предоставляющие маркеры, подписанные с помощью алгоритма RS256, поддерживаются для обмена маркерами с помощью федерации удостоверений рабочей нагрузки. Обмен маркерами, подписанными с другими алгоритмами, может работать, но не был протестирован.

Издатели Microsoft Entra не поддерживаются

Область применения: приложения и назначаемые пользователем управляемые удостоверения

Создание федерации между двумя удостоверениями Microsoft Entra из одного или разных клиентов не поддерживается. При создании учетных данных федеративного удостоверения настройка издателя (URL-адрес внешнего поставщика удостоверений) со следующими значениями не поддерживается:

  • *.login.microsoftonline.com
  • *.login.windows.net
  • *.login.microsoft.com
  • *.sts.windows.net

Хотя можно создать федеративные учетные данные удостоверения с издателем Microsoft Entra, пытается использовать его для авторизации с ошибкой AADSTS700222: AAD-issued tokens may not be used for federated identity flows.

Время распространения федеративных учетных данных

Область применения: приложения и назначаемые пользователем управляемые удостоверения

После первоначальной настройки необходимо время для распространения учетных данных федеративного удостоверения по всему региону. Запрос маркера, сделанный через несколько минут после настройки учетных данных федеративного удостоверения, может завершиться ошибкой, так как кэш заполняется в каталоге старыми данными. В течение этого периода времени запрос авторизации может завершиться ошибкой: AADSTS70021: No matching federated identity record found for presented assertion.

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

Одновременные обновления не поддерживаются (назначаемые пользователем управляемые удостоверения)

Область применения: назначаемые пользователем управляемые удостоверения

Создание нескольких учетных данных федеративного удостоверения в одном управляемом удостоверении, назначаемом пользователем, одновременно активирует логику обнаружения параллелизма, что приводит к сбою запросов с кодом состояния HTTP 409-конфликтов.

Поставщик Terraform для Azure (Resource Manager) версии 3.40.0 представляет обновление , которое создает несколько учетных данных федеративного удостоверения последовательно, а не одновременно. Более ранние версии 3.40.0 могут привести к сбоям в конвейерах при создании нескольких федеративных удостоверений. Рекомендуется использовать поставщик Terraform для Azure (Resource Manager) версии 3.40.0 или более поздней версии, чтобы несколько федеративных удостоверений создавались последовательно.

При использовании автоматизации или шаблонов Azure Resource Manager (шаблоны ARM) для создания федеративных учетных данных удостоверения под тем же родительским удостоверением создайте федеративные учетные данные последовательно. Федеративные учетные данные удостоверения под разными управляемыми удостоверениями можно создавать параллельно без каких-либо ограничений.

Если федеративные учетные данные удостоверения подготавливаются в цикле, их можно подготовить последовательно , задав параметр mode: serial.

Вы также можете подготовить несколько новых федеративных учетных данных удостоверения последовательно с помощью свойства dependsOn . Следующий пример шаблона Azure Resource Manager (шаблон ARM) создает три новых федеративных учетных данных удостоверения последовательно в управляемом удостоверении, назначаемом пользователем, с помощью свойства dependsOn :

{ 
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", 
    "contentVersion": "1.0.0.0", 
    "parameters": { 
        "userAssignedIdentities_parent_uami_name": { 
            "defaultValue": "parent_uami", 
            "type": "String" 
        } 
    }, 
    "variables": {}, 
    "resources": [ 
        { 
            "type": "Microsoft.ManagedIdentity/userAssignedIdentities", 
            "apiVersion": "2022-01-31-preview", 
            "name": "[parameters('userAssignedIdentities_parent_uami_name')]", 
            "location": "eastus" 
        }, 
        { 
            "type": "Microsoft.ManagedIdentity/userAssignedIdentities/federatedIdentityCredentials", 
            "apiVersion": "2022-01-31-preview", 
            "name": "[concat(parameters('userAssignedIdentities_parent_uami_name'), '/fic01')]", 
            "dependsOn": [ 
                "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', parameters('userAssignedIdentities_parent_uami_name'))]" 
            ], 
            "properties": { 
                "issuer": "https://kubernetes-oauth.azure.com", 
                "subject": "fic01", 
                "audiences": [ 
                    "api://AzureADTokenExchange" 
                ] 
            } 
        }, 
        { 
            "type": "Microsoft.ManagedIdentity/userAssignedIdentities/federatedIdentityCredentials", 
            "apiVersion": "2022-01-31-preview", 
            "name": "[concat(parameters('userAssignedIdentities_parent_uami_name'), '/fic02')]", 
            "dependsOn": [ 
                "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', parameters('userAssignedIdentities_parent_uami_name'))]", 
                "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities/federatedIdentityCredentials', parameters('userAssignedIdentities_parent_uami_name'), 'fic01')]" 
            ], 
            "properties": { 
                "issuer": "https://kubernetes-oauth.azure.com", 
                "subject": "fic02", 
                "audiences": [ 
                    "api://AzureADTokenExchange" 
                ] 
            } 
        }, 
        { 
            "type": "Microsoft.ManagedIdentity/userAssignedIdentities/federatedIdentityCredentials", 
            "apiVersion": "2022-01-31-preview", 
            "name": "[concat(parameters('userAssignedIdentities_parent_uami_name'), '/fic03')]", 
            "dependsOn": [ 
                "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', parameters('userAssignedIdentities_parent_uami_name'))]", 
                "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities/federatedIdentityCredentials', parameters('userAssignedIdentities_parent_uami_name'), 'fic02')]" 
            ], 
            "properties": { 
                "issuer": "https://kubernetes-oauth.azure.com", 
                "subject": "fic03", 
                "audiences": [ 
                    "api://AzureADTokenExchange" 
                ] 
            } 
        } 
    ] 
} 

Политика Azure

Область применения: приложения и назначаемые пользователем управляемые удостоверения

Можно использовать запрет Политика Azure, как показано в следующем примере шаблона ARM:

{ 
"policyRule": { 
            "if": { 
                "field": "type", 
                "equals": "Microsoft.ManagedIdentity/userAssignedIdentities/federatedIdentityCredentials" 
            }, 
            "then": { 
                "effect": "deny" 
            } 
        } 
}

Ограничения регулирования

Область применения: назначаемые пользователем управляемые удостоверения

В следующей таблице описываются ограничения запросов на управляемые удостоверения, назначаемые пользователем, REST APIS. Если превышено ограничение регулирования, вы получите ошибку HTTP 429.

Операция Запросы в секунду на клиент Microsoft Entra Запросы в секунду на подписку Запросы в секунду на ресурс
Создание или обновление запросов 10 2 0.25
Получение запросов 30 10 0,5
Список по группе ресурсов или списку по запросам подписки 15 5 0.25
Удаление запросов 10 2 0.25

ошибки

Область применения: приложения и назначаемые пользователем управляемые удостоверения

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

Код HTTP Сообщение об ошибке Комментарии
405 Формат запроса был непредвиден: поддержка федеративных учетных данных удостоверения не включена. Учетные данные федеративного удостоверения не включены в этом регионе. См. раздел "Поддерживаемые в настоящее время регионы".
400 Учетные данные федеративного удостоверения должны иметь ровно одну аудиторию. В настоящее время федеративные учетные данные удостоверения поддерживают одну аудиторию "api://AzureADTokenExchange".
400 Федеративные учетные данные удостоверения из текста HTTP имеют пустые свойства Все свойства учетных данных федеративного удостоверения являются обязательными.
400 Имя учетных данных федеративного удостоверения "{ficName}" недопустимо. Буквенно-цифровые, дефис, подчеркивание не более 3-120 символов. Первый символ является буквенно-цифровым.
404 Удостоверение, назначаемое пользователем, не существует. Проверьте имя назначаемого пользователем удостоверения в пути ресурса федеративных удостоверений.
400 Для этого управляемого удостоверения уже существует сочетание издателя и субъекта. Это ограничение. Перечислить все учетные данные федеративного удостоверения, связанные с удостоверением, назначенным пользователем, чтобы найти существующие учетные данные федеративного удостоверения.
409 Conflict Одновременный запрос на запись в ресурсы учетных данных федеративного удостоверения в рамках того же удостоверения, назначаемого пользователем, был отклонен.