Создание издателя OpenID Connect на Azure Kubernetes Service (AKS)

Область применения: ✔️ AKS Automatic ✔️ AKS Standard

В этой статье описывается создание издателя OpenID Connect (OIDC) и управление им для кластера Azure Kubernetes Service (AKS). Издатель OIDC позволяет кластеру AKS интегрироваться с поставщиками удостоверений, такими как Microsoft Entra ID, чтобы обеспечить безопасную проверку подлинности и предоставить возможности единого входа для приложений, работающих в кластере.

Для большинства рабочих нагрузок AKS Automatic — это рекомендуемый вариант работы с AKS по умолчанию. AKS Automatic готов к работе по умолчанию и включает издателя OIDC в качестве предварительно настроенной возможности безопасности. В AKS Standard поведение издателя OIDC зависит от версии Kubernetes и состояния кластера, и его можно включить вручную при необходимости.

Дополнительные сведения об AKS Automatic см. в разделе Что такое AKS Automatic в Azure Kubernetes Service (AKS)?

Эмитент OIDC в AKS Automatic и AKS Standard

Оба режима кластера AKS поддерживают издателя OIDC, но настройка отличается:

  • AKS Automatic: поставщик OIDC предварительно сконфигурирован.
  • AKS Standard: может потребоваться явно включить издателя OIDC в зависимости от версии и того, настроена ли она уже.

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

Сведения о OpenID Connect (OIDC) в AKS

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

Предварительные требования

Требования к платформе:

  • Azure CLI версии 2.42.0 или более поздней (az --version чтобы проверить версию, установить или обновить Azure CLI при необходимости).
  • Kubernetes версии 1.22 или более поздней.

Поведение, зависящее от версии (AKS Standard):

  • Поставщик OIDC включен по умолчанию (флаг --enable-oidc-issuer не требуется) для новых кластеров AKS с версией Kubernetes 1.34 или более поздней.
  • Для существующих кластеров OIDC не включен по умолчанию независимо от версии Kubernetes и требует ручного включения.
  • Автоматическое расширение токена отключено (--service-account-extend-token-expiration=false) для Kubernetes версии 1.30.0 или более поздней.
  • Если издатель OIDC ранее не был настроен, то для версий Kubernetes ниже 1.34 требуется включить его вручную.
  • Для кластеров Kubernetes версии 1.30 и выше требуются проецируемые токены сервисной учетной записи.

Важные рекомендации.

  • Вы не можете деактивировать издателя OIDC после включения.
  • Для включения издателя OIDC в существующих кластерах требуется перезапуск сервера API (краткое время простоя).
  • Максимальное время существования токена составляет 24 часа (один день).

Создание кластера AKS с издателем OIDC

В AKS Automatic издатель OIDC предварительно настроен. Вам не нужен отдельный этап для включения поставщика OIDC.

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

AKS Standard

Создайте кластер AKS Standard с помощью az aks create команды с параметром --enable-oidc-issuer .

# Set environment variables
RESOURCE_GROUP=<your-resource-group-name>
CLUSTER_NAME=<your-aks-cluster-name>
    
# Create the AKS Standard cluster with OIDC issuer enabled
az aks create \
    --resource-group $RESOURCE_GROUP \
    --name $CLUSTER_NAME \
    --node-count 1 \
    --enable-oidc-issuer \
    --generate-ssh-keys

Замечание

В кластерах AKS Standard, созданных с помощью Kubernetes версии 1.34 или более поздней, издатель OIDC по умолчанию включен для новых кластеров.

Включение издателя OIDC в существующем кластере AKS Standard

Включите издатель OIDC для существующего кластера AKS Standard с помощью команды az aks update с параметром --enable-oidc-issuer.

# Set environment variables
RESOURCE_GROUP=<your-resource-group-name>
CLUSTER_NAME=<your-aks-cluster-name>

# Enable the OIDC issuer on the existing AKS Standard cluster
az aks update \
    --resource-group $RESOURCE_GROUP \
    --name $CLUSTER_NAME \
    --enable-oidc-issuer 

Получение URL-адреса издателя OIDC

Получите URL-адрес издателя OIDC с помощью az aks show команды.

# Set environment variables
RESOURCE_GROUP=<your-resource-group-name>
CLUSTER_NAME=<your-aks-cluster-name>

# Get the OIDC issuer URL
az aks show \
    --name $CLUSTER_NAME \
    --resource-group $RESOURCE_GROUP \
    --query "oidcIssuerProfile.issuerUrl" \
    -o tsv

По умолчанию издатель использует базовый URL-адрес https://{region}.oic.prod-aks.azure.com, где значение параметра {region} соответствует расположению, в котором вы развернули кластер AKS.

Выполнить ротацию ключа подписи OIDC

Внимание

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

  • Если вы хотите отключить старый ключ сразу после смены ключа, необходимо дважды повернуть ключ OIDC и перезапустить модули pod с помощью проецируемых маркеров учетной записи службы.
  • Старые и новые ключи остаются действительными в течение 24 часов после смены.
  • Необходимо обновить маркер вручную каждые 24 часа (если вы не используете клиентские библиотеки удостоверений Azure, которые обновляются автоматически).

Смените ключ OIDC с помощью az aks oidc-issuer команды.

# Set environment variables
RESOURCE_GROUP=<your-resource-group-name>
CLUSTER_NAME=<your-aks-cluster-name>

# Rotate the OIDC signing keys
az aks oidc-issuer rotate-signing-keys \
    --name $CLUSTER_NAME \
    --resource-group $RESOURCE_GROUP

Получение документа обнаружения

Перейдите по URL-адресу издателя OIDC в браузере и добавьте /.well-known/openid-configuration его в URL-адрес.

Пример: https://eastus.oic.prod-aks.azure.com/.well-known/openid-configuration

Выходные данные должны выглядеть примерно так:

{
  "issuer": "https://eastus.oic.prod-aks.azure.com/ffffffff-eeee-dddd-cccc-bbbbbbbbbbb0/00000000-0000-0000-0000-000000000000/",
  "jwks_uri": "https://eastus.oic.prod-aks.azure.com/00000000-0000-0000-0000-000000000000/00000000-0000-0000-0000-000000000000/openid/v1/jwks",
  "response_types_supported": [
    "id_token"
  ],
  "subject_types_supported": [
    "public"
  ],
  "id_token_signing_alg_values_supported": [
    "RS256"
  ]
}

Получите документ набора JWK

В браузере перейдите по адресу jwks_uri из документа обнаружения.

Например: https://eastus.oic.prod-aks.azure.com/00000000-0000-0000-0000-000000000000/00000000-0000-0000-0000-000000000000/openid/v1/jwks

Выходные данные должны выглядеть примерно так:

{
  "keys": [
    {
      "use": "sig",
      "kty": "RSA",
      "kid": "xxx",
      "alg": "RS256",
      "n": "xxxx",
      "e": "AQAB"
    },
    {
      "use": "sig",
      "kty": "RSA",
      "kid": "xxx",
      "alg": "RS256",
      "n": "xxxx",
      "e": "AQAB"
    }
  ]
}

Замечание

Во время смены ключей документ обнаружения включает один дополнительный ключ.