Изменить

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


Удостоверение рабочей нагрузки Kubernetes и доступ

Microsoft Entra ID
Служба Azure Kubernetes (AKS)

В этой статье описывается, как Amazon Elastic Kubernetes Service (Amazon EKS) и Служба Azure Kubernetes (AKS) предоставляют удостоверения для рабочих нагрузок Kubernetes для доступа к облачным службам платформы. Подробное сравнение удостоверений Amazon Web Services (AWS) и управления доступом (IAM) и идентификатора Microsoft Entra см. в следующих статьях:

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

Примечание.

Эта статья является частью серии статей, которые помогают специалистам, знакомым с Amazon EKS, чтобы понять, Служба Azure Kubernetes (AKS).

Управление удостоверениями и доступом Amazon EKS

Служба Amazon Elastic Kubernetes (EKS) предоставляет собственные возможности управления удостоверениями и доступом в модулях pod Kubernetes. Эти параметры включают роли IAM для учетных записей служб и связанных со службой ролей Amazon EKS.

Роли IAM для учетных записей служб

Роли IAM для учетных записей служб позволяют связать роли IAM с учетными записями службы Kubernetes. Эта связь предоставляет разрешения AWS для контейнеров в любом модуле pod, использующее учетную запись службы. Преимущества использования ролей IAM для учетных записей служб приведены ниже.

  • наименьших привилегий. Вы можете назначить определенные разрешения IAM учетной записи службы, гарантируя, что доступ к этим разрешениям имеют только те модули pod, использующие эту учетную запись службы. Это устраняет необходимость предоставления расширенных разрешений роли IAM узла для всех модулей pod на узле, обеспечивая более безопасный и детализированный подход. Кроме того, эта функция устраняет потребность в сторонних решениях, таких как kube2iam. Дополнительные сведения см. в разделе роли IAM для учетных записей служб.

  • изоляции учетных данных. Каждый контейнер в модуле pod может получать только учетные данные для роли IAM, связанной с соответствующей учетной записью службы. Эта изоляция гарантирует, что контейнер не может получить доступ к учетным данным, принадлежащим другому контейнеру в другом модуле pod.

  • аудит: Amazon EKS использует Amazon CloudTrail для предоставления доступа и ведения журнала событий, упрощения ретроспективного аудита и соответствия требованиям.

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

Связанные с службой роли Amazon EKS

Связанные с службой роли Amazon EKS являются уникальными ролями IAM, связанными с Amazon EKS. Эти предопределенные роли включают все необходимые разрешения, необходимые для вызова служб AWS от имени связанной роли. Основная роль, связанная с службой для Amazon EKS, — это роль I AM узла IAMamazon EKS.

Управляющей программе Amazon EKS kubelet использует роль IAM узла Amazon EKS для вызова API к службам AWS от имени узла. Профиль экземпляра IAM и связанные политики предоставляют разрешения для этих вызовов API. Эта настройка упрощает управление ролями IAM для узлов в кластере EKS.

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

Дополнительные сведения

Помимо ролей IAM для учетных записей служб и связанных с службой ролей Amazon EKS, существуют и другие важные аспекты управления удостоверениями и доступом в Amazon EKS.

  1. АВТОРИЗАЦИИ Amazon EKS RBAC: Amazon EKS поддерживает управление доступом на основе ролей (RBAC), что позволяет определить подробные разрешения для ресурсов Kubernetes в кластере.

  2. aws Identity and Access Management (IAM): IAM предоставляет комплексное решение по управлению удостоверениями для служб AWS, включая EKS. Он позволяет создавать пользователей, группы и роли и управлять ими для управления доступом к ресурсам EKS.

  3. группы безопасности Amazon EKS: Amazon EKS позволяет применять правила группы безопасности к модулям pod, работающим в кластере, для управления входящим и исходящим трафиком.

Дополнительные сведения об управлении удостоверениями и доступом в Amazon EKS см. в официальной документации по Amazon EKS.

Управляемые удостоверения кластера AKS

Для кластеров Службы Azure Kubernetes (AKS) требуется удостоверение Microsoft Entra для доступа к ресурсам Azure, таким как подсистемы балансировки нагрузки и управляемые диски. Управляемые удостоверения для ресурсов Azure — это рекомендуемый способ авторизации доступа из кластера AKS к другим службам Azure.

Что такое управляемые удостоверения?

Распространенной проблемой для разработчиков является управление секретами, учетными данными, сертификатами и ключами, используемыми для защиты обмена данными между службами. управляемых удостоверений устранять необходимость управления этими учетными данными разработчиками. Управляемые удостоверения позволяют выполнять проверку подлинности кластера AKS без управления учетными данными или их включения в код. При использовании управляемых удостоверений вы назначаете роли управления доступом на основе ролей Azure (Azure RBAC) удостоверению, предоставляя ему разрешения для определенных ресурсов в Azure.

Ниже приведены два типа управляемых удостоверений:

  • назначаемые системой. Некоторые ресурсы Azure, такие как виртуальные машины, позволяют включить управляемое удостоверение непосредственно в ресурсе. Если включить управляемое удостоверение, назначаемое системой, выполните следующие действия.

    • Субъект-служба специального типа создается в идентификаторе Microsoft Entra для удостоверения. Субъект-служба привязан к жизненному циклу этого ресурса Azure. При удалении ресурса Azure Azure автоматически удаляет субъект-службу.
    • С помощью этого удостоверения можно запросить маркеры из идентификатора Microsoft Entra.
    • Вы авторизуете управляемое удостоверение для доступа к одной или нескольким службам.
    • Имя субъекта-службы, назначаемого системой, всегда совпадает с именем созданного ресурса Azure.
  • назначаемые пользователем. Вы также можете создать управляемое удостоверение как автономный ресурс Azure. Вы можете создать управляемое удостоверение, назначаемое пользователем, и назначить его одному или нескольким ресурсам Azure. Если включить управляемое удостоверение, назначаемое пользователем, выполните следующие действия.

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

Дополнительные сведения о различиях между двумя типами управляемых удостоверений см. в типах управляемых удостоверений.

Управляемые удостоверения в службе Azure Kubernetes (AKS)

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

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

  1. управляемое удостоверение, назначаемое системой: этот тип управляемого удостоверения связан с одним ресурсом Azure, например кластером AKS. Он существует только для жизненного цикла кластера.

  2. управляемое удостоверение, назначаемое пользователем: управляемое удостоверение, назначаемое пользователем, является автономным ресурсом Azure, который можно использовать для авторизации доступа к другим службам Azure из кластера AKS. Он сохраняется отдельно от кластера и может использоваться несколькими ресурсами Azure.

  3. предварительно созданное управляемое удостоверение kubelet: Это необязательное удостоверение, назначаемое пользователем, которое может использоваться kubelet для доступа к другим ресурсам в Azure. Если управляемое удостоверение, назначаемое пользователем, не указано для kubelet, AKS создает удостоверение kubelet, назначаемое пользователем, в группе ресурсов узла.

Как AKS использует управляемые удостоверения?

При развертывании кластера AKS автоматически создается управляемое удостоверение, назначаемое системой,. Вы также можете создать кластер с назначаемого пользователем управляемого удостоверения. Кластер использует это управляемое удостоверение для запроса маркеров из идентификатора Microsoft Entra ID, который затем используется для авторизации доступа к другим ресурсам, работающим в Azure.

Назначив роль Azure RBAC управляемому удостоверению, вы можете предоставить кластеру разрешения для доступа к определенным ресурсам. Например, вы можете назначить управляемое удостоверение роли Azure RBAC, которая позволяет получить доступ к секретам в Azure Key Vault. Таким образом, вы можете легко авторизовать доступ к кластеру без управления учетными данными.

Использование управляемых удостоверений в AKS

При использовании управляемых удостоверений в AKS вам не нужно подготавливать или менять секреты. Azure управляет учетными данными удостоверения. Это позволяет авторизовать доступ из приложений без управления дополнительными секретами.

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

Сводка управляемых удостоверений, используемых AKS

AKS использует различные типы управляемых удостоверений для включения различных встроенных служб и надстроек. Ниже приведена сводка управляемых удостоверений, используемых AKS:

Идентификация Вариант использования Разрешения по умолчанию
Плоскость управления (назначенная системой) Используется компонентами плоскости управления AKS для управления ресурсами кластера, включая подсистемы балансировки нагрузки входящего трафика, управляемые AKS общедоступные IP-адреса, автомасштабирование кластера, диск Azure, файл и драйверы CSI BLOB-объектов. Роль участника для группы ресурсов Node
Kubelet (назначаемый пользователем) Используется для проверки подлинности с помощью реестра контейнеров Azure (ACR). N/A (для Kubernetes версии 1.15+)
Удостоверения надстроек (например, AzureNPM, мониторинг сети AzureCNI, политика Azure, Калифорния и т. д.) Для этих надстроек не требуется удостоверение. N/A
Маршрутизация приложений Управляет сертификатами Azure DNS и Azure Key Vault. Роль пользователя секретов Key Vault для Key Vault, роль участника зоны DNS для зон DNS, роль участника частной зоны DNS для частных зон DNS
Шлюз приложений Ingress Управляет необходимыми сетевыми ресурсами. Роль участника для группы ресурсов узла
Агент OMS Используется для отправки метрик AKS в Azure Monitor. Роль издателя метрик мониторинга
Виртуальный узел (соединитель ACI) Управляет необходимыми сетевыми ресурсами для экземпляров контейнеров Azure (ACI). Роль участника для группы ресурсов узла
Анализ затрат Используется для сбора данных о выделении затрат. N/A
Удостоверение рабочей нагрузки (идентификатор рабочей нагрузки Microsoft Entra) Позволяет приложениям безопасно получать доступ к облачным ресурсам с помощью идентификатора рабочей нагрузки Microsoft Entra. N/A

Дополнительные сведения об управляемых удостоверениях в AKS см. в статье Использование управляемого удостоверения в службе Azure Kubernetes.

Идентификация рабочей нагрузки Microsoft Entra для Kubernetes

идентификатор рабочей нагрузки Microsoft Entra интегрируется с Kubernetes, чтобы рабочие нагрузки, развернутые в кластере AKS, могли получить доступ к защищенным ресурсам Microsoft Entra, таким как Azure Key Vault и Microsoft Graph. Он использует собственные возможности Kubernetes для федерации с внешними поставщиками удостоверений. Дополнительные сведения см. в статье Использование идентификатора рабочей нагрузки Microsoft Entra сслужбы Azure Kubernetes.

Чтобы использовать идентификатор рабочей нагрузки Microsoft Entra, необходимо настроить учетную запись службы в Kubernetes. Затем эта учетная запись службы используется модулями pod для безопасной проверки подлинности и доступа к ресурсам Azure. Идентификатор рабочей нагрузки Microsoft Entra хорошо работает с клиентскими библиотеками удостоверений Azure или коллекцией библиотеки проверки подлинности Майкрософт (MSAL), а также регистрацией приложения.

Чтобы полностью использовать идентификатор рабочей нагрузки Microsoft Entra в кластере Kubernetes, необходимо настроить кластер AKS для выдачи маркеров и публикации документа обнаружения OIDC для проверки маркеров. Дополнительные сведения см. в статье Создание поставщика OpenID Connect в службе Azure Kubernetes.

Кроме того, необходимо настроить приложения Microsoft Entra для доверия маркерам Kubernetes. Затем разработчики могут настроить свои развертывания для использования учетных записей службы Kubernetes для получения маркеров, которые затем обмениваются маркерами Microsoft Entra с помощью идентификатора рабочей нагрузки Microsoft Entra. Наконец, рабочие нагрузки кластера AKS могут использовать эти маркеры Microsoft Entra для безопасного доступа к защищенным ресурсам в Azure.

Как показано на следующей схеме, кластер Kubernetes становится издателем маркеров безопасности, который выдает маркеры учетным записям службы Kubernetes. Эти маркеры можно настроить для доверенных приложений Microsoft Entra. Затем маркеры можно обменять на маркеры доступа Microsoft Entra с помощью пакетов SDK для удостоверений Azure или библиотеки проверки подлинности Майкрософт (MSAL).

Схема, показывающая упрощенный рабочий процесс для управляемого удостоверения pod в Azure.

  1. kubelet Агент проектировать маркер учетной записи службы в рабочую нагрузку по настраиваемому пути к файлу.
  2. Рабочая нагрузка Kubernetes отправляет проецируемый, подписанный маркер учетной записи службы идентификатору Microsoft Entra и запрашивает маркер доступа.
  3. Идентификатор Microsoft Entra использует документ обнаружения OIDC для проверки доверия к определяемой пользователем управляемой идентификации или зарегистрированного приложения и проверки входящего маркера.
  4. Идентификатор Microsoft Entra выдает маркер доступа к безопасности.
  5. Рабочая нагрузка Kubernetes обращается к ресурсам Azure с помощью маркера доступа Microsoft Entra.

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

Пример рабочей нагрузки

Пример рабочей нагрузки, выполняемой в кластере AKS, состоит из интерфейсной и серверной службы. Эти службы используют идентификатор рабочей нагрузки Microsoft Entra для доступа к службам Azure, включая Azure Key Vault, Azure Cosmos DB, учетную запись хранения Azure и пространство имен служебной шины Azure. Чтобы настроить эту примерную рабочую нагрузку, необходимо выполнить следующие предварительные требования:

  1. Настройте кластер AKS с издателем OpenID Connect и идентификатором рабочей нагрузки Microsoft Entra.
  2. Создайте учетную запись службы Kubernetes в пространстве именрабочей нагрузки.
  3. Создайте управляемое удостоверение, назначаемое пользователем, microsoft Entra, или зарегистрированное приложение.
  4. Установите учетные данные федеративного удостоверения между управляемым удостоверением Microsoft Entra или зарегистрированным приложением и учетной записью службы рабочей нагрузки.
  5. Назначьте необходимые роли соответствующим разрешениям управляемому удостоверению Microsoft Entra или зарегистрированного приложения.
  6. Разверните рабочую нагрузку и проверьте проверку подлинности с помощью удостоверения рабочей нагрузки.

поток сообщений Идентификация рабочей нагрузки Microsoft Entra

В этом примере рабочей нагрузки интерфейсные и внутренние приложения получают маркеры безопасности Microsoft Entra для доступа к службам Платформы Azure как услуга (PaaS). На следующей схеме показан поток сообщений:

Схема с примером приложения, использующего Идентификация рабочей нагрузки Microsoft Entra.

Скачайте файл Visio для этой архитектуры.

  1. Kubernetes выдает маркер pod при планировании на узле на основе спецификации pod или развертывания.
  2. Модуль pod отправляет маркер, выданный OIDC, в идентификатор Microsoft Entra, чтобы запросить маркер Microsoft Entra для конкретного appId и ресурса.
  3. Идентификатор Microsoft Entra проверяет доверие приложения и проверяет входящие маркеры.
  4. Идентификатор Microsoft Entra выдает маркер безопасности: {sub: appId, aud: requested-audience}
  5. Модуль pod использует маркер Microsoft Entra для доступа к целевому ресурсу Azure.

Чтобы использовать сквозную Идентификация рабочей нагрузки Microsoft Entra в кластере Kubernetes:

  1. Кластер AKS настроен для выдачи маркеров и публикации документа обнаружения OIDC, чтобы разрешить проверку этих маркеров.
  2. Вы настраиваете приложения Microsoft Entra для доверия к маркерам Kubernetes.
  3. Разработчики настраивают свои развертывания для использования учетных записей службы Kubernetes для получения маркеров Kubernetes.
  4. Идентификация рабочей нагрузки Microsoft Entra обменивается маркерами Kubernetes на токены Microsoft Entra.
  5. Рабочие нагрузки кластера AKS используют маркеры Microsoft Entra для доступа к защищенным ресурсам, таким как Microsoft Graph.

Соавторы

Эта статья поддерживается корпорацией Майкрософт. Первоначально он был написан следующими участниками.

Основные авторы:

Другие участники:

Чтобы просмотреть недоступные профили LinkedIn, войдите в LinkedIn.

Следующие шаги