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


Создание поставщика 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 ID. Вы можете использовать OIDC для включения единого входа между приложениями с поддержкой OAuth в кластере Службы Azure Kubernetes (AKS) с помощью маркера безопасности, называемого маркером идентификатора. Вы можете включить издателя OIDC в кластерах AKS, что позволяет Microsoft Entra ID (или платформе управления идентификацией и доступом от другого поставщика облачных услуг) обнаруживать публичные ключи подписи сервера API.

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

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

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

  • Поставщик удостоверений OIDC по умолчанию включен (без необходимости флага) только для вновь созданных кластеров AKS в версии Kubernetes 1.34+. Для существующих кластеров OIDC не включен по умолчанию независимо от версии Kubernetes и требует ручного включения.
  • Автоматическое расширение токена отключено () для Kubernetes версии 1.30.0+.
  • Требуется ручное включение, если ранее не было настроено для версий Kubernetes ранее 1.34.

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

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

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

  • Создайте кластер AKS с помощью команды с параметром .

    # 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 с помощью команды с параметром .

    # 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 с помощью команды.

    # 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-адрес, где значение для которого совпадает с местоположением, в котором развернут кластер AKS.

Поворот ключа OIDC

Внимание

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

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

    # 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 в браузере и добавьте в конец URL-адреса. Например: .

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

    {
      "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 из документа обнаружения в браузере. Например: .

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

    {
      "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"
        }
      ]
    }
    

    Замечание

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