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


Создание поставщика OpenID Connect в Служба Azure Kubernetes (AKS)

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

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

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

Необходимые компоненты

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

Поведение конкретной версии:

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

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

  • Вы не можете отключить издателя OIDC после включения
  • Включение издателя OIDC в существующих кластерах требует перезагрузки сервера API (краткое время простоя)
  • Максимальное время существования токена — 24 часа (один день)
  • Проецируемые токены учетной записи сервиса, необходимые для кластеров Kubernetes 1.30+

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

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

    # Set environment variables
    RESOURCE_GROUP=<your-resource-group-name>
    CLUSTER_NAME=<your-aks-cluster-name>
    
    # Create the AKS cluster with OIDC issuer enabled (OIDC issuer enabled by default for Kubernetes 1.34+)
    az aks create \
        --resource-group $RESOURCE_GROUP \
        --name $CLUSTER_NAME \
        --node-count 1 \
        --enable-oidc-issuer \
        --generate-ssh-keys
    

Активация издателя OIDC в существующем кластере AKS

  • Включите поставщика OIDC в существующем кластере AKS с помощью команды 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 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 Identity SDK", который обновляется автоматически).
  • Смените ключ 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"
        }
      ]
    }
    

    Замечание

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