Создание поставщика Подключение OpenID на Служба Azure Kubernetes (AKS)
OpenID Подключение (OIDC) расширяет протокол авторизации OAuth 2.0 для использования в качестве другого протокола проверки подлинности, выданного идентификатором Microsoft Entra. Вы можете использовать OIDC для включения единого входа между приложениями с поддержкой OAuth в кластере Служба Azure Kubernetes (AKS) с помощью маркера безопасности, называемого маркером идентификатора. С помощью кластера AKS вы можете включить издателя OpenID Подключение (OIDC), который позволяет Microsoft Entra ID или другой платформе управления удостоверениями и доступом поставщика облачных служб обнаруживать открытые ключи подписывания сервера API.
AKS автоматически и периодически поворачивает ключ. Если вы не хотите ждать, вы можете повернуть ключ вручную и немедленно. Максимальное время существования маркера, выданного поставщиком OIDC, составляет один день.
Предупреждение
Включение издателя OIDC в существующем кластере изменяет текущего издателя маркера учетной записи службы на новое значение, что может привести к простою при перезапуске сервера API. Если модули pod приложения с помощью маркера службы остаются в состоянии сбоя после включения издателя OIDC, рекомендуется вручную перезапустить модули pod.
В этой статье вы узнаете, как создать, обновить и управлять издателем OIDC для кластера.
Внимание
После включения издателя OIDC в кластере он не поддерживается для отключения.
Внимание
Маркер необходимо периодически обновлять. Если используется пакет SDK, смена выполняется автоматически, в противном случае необходимо обновить маркер каждые 24 часа вручную.
Необходимые компоненты
- Azure CLI версии 2.42.0 или более поздней. Чтобы узнать, какая версия используется, выполните команду
az --version
. Если вам необходимо выполнить установку или обновление, см. статью Установка Azure CLI 2.0. - AKS поддерживает издателя OIDC версии 1.22 и выше.
Создание кластера AKS с помощью издателя OIDC
Кластер AKS можно создать с помощью команды az aks create с --enable-oidc-issuer
параметром для использования издателя OIDC. В следующем примере создается кластер с именем myAKSCluster с одним узлом в myResourceGroup:
az aks create -g myResourceGroup -n myAKSCluster --node-count 1 --enable-oidc-issuer
Обновление кластера AKS для использования издателя OIDC
Кластер AKS можно обновить с помощью команды az aks update с --enable-oidc-issuer
параметром для использования издателя OIDC. В следующем примере обновляется кластер с именем myAKSCluster:
az aks update -g myResourceGroup -n myAKSCluster --enable-oidc-issuer
Отображение URL-адреса поставщика OIDC
Чтобы получить URL-адрес издателя OIDC, выполните команду az aks show . Замените значения по умолчанию для имени кластера и имени группы ресурсов.
az aks show -n myAKScluster -g myResourceGroup --query "oidcIssuerProfile.issuerUrl" -otsv
По умолчанию издатель использует базовый URL-адрес https://{region}.oic.prod-aks.azure.com
, где значение для {region}
совпадений с расположением кластера AKS развертывается в.
Поворот ключа OIDC
Чтобы повернуть ключ OIDC, выполните команду az aks oidc-issuer . Замените значения по умолчанию для имени кластера и имени группы ресурсов.
az aks oidc-issuer rotate-signing-keys -n myAKSCluster -g myResourceGroup
Внимание
После смены ключа старый ключ (key1) истекает через 24 часа. Это означает, что старый ключ (key1) и новый ключ (key2) действительны в течение 24-часового периода. Если вы хотите немедленно отключить старый ключ (key1), необходимо дважды повернуть ключ OIDC и перезапустить модули pod с помощью проецируемых маркеров учетной записи службы. Затем ключ2 и key3 допустимы, а ключ1 является недопустимым.
Проверка ключей OIDC
Получение URL-адреса издателя OIDC
Чтобы получить URL-адрес издателя OIDC, выполните команду az aks show . Замените значения по умолчанию для имени кластера и имени группы ресурсов.
az aks show -n myAKScluster -g myResourceGroup --query "oidcIssuerProfile.issuerUrl" -otsv
Результат должен выглядеть так:
https://eastus.oic.prod-aks.azure.com/00000000-0000-0000-0000-000000000000/00000000-0000-0000-0000-000000000000/
По умолчанию издатель использует базовый URL-адрес https://{region}.oic.prod-aks.azure.com/{uuid}
, где значение для {region}
совпадений с расположением кластера AKS развертывается в. Значение {uuid}
представляет ключ OIDC, который является случайным образом созданным guid для каждого кластера, который является неизменяемым.
Получение документа обнаружения
Чтобы получить документ обнаружения, скопируйте URL-адрес https://(OIDC issuer URL).well-known/openid-configuration
и откройте его в браузере.
Результат должен выглядеть так:
{
"issuer": "https://eastus.oic.prod-aks.azure.com/00000000-0000-0000-0000-000000000000/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
Чтобы получить документ JWK Set, скопируйте 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"
}
]
}
Во время смены ключей в документе обнаружения присутствует еще один ключ.
Следующие шаги
- Узнайте , как настроить связь доверия между приложением и внешним поставщиком удостоверений, чтобы понять, как федеративные учетные данные удостоверения создают отношение доверия между приложением в кластере и внешним поставщиком удостоверений.
- Просмотрите Идентификация рабочей нагрузки Microsoft Entra (предварительная версия). Этот метод проверки подлинности интегрируется с собственными возможностями Kubernetes для федерации с любыми внешними поставщиками удостоверений от имени приложения.
- См. раздел "Безопасный сетевой трафик pod", чтобы понять, как использовать подсистему сетевой политики сети Kubernetes и создавать политики сети Kubernetes для управления потоком трафика между модулями pod в AKS.