Создание поставщика OpenID Connect в Служба Azure Kubernetes (AKS)
OpenID Connect (OIDC) расширяет протокол авторизации OAuth 2.0 для использования в качестве другого протокола проверки подлинности, выданного идентификатором Microsoft Entra. Вы можете использовать OIDC для включения единого входа между приложениями с поддержкой OAuth в кластере Служба Azure Kubernetes (AKS) с помощью маркера безопасности, называемого маркером идентификатора. С помощью кластера AKS вы можете включить издателя OpenID Connect (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 \
--resource-group myResourceGroup \
--name myAKSCluster \
--node-count 1 \
--enable-oidc-issuer \
--generate-ssh-keys
Обновление кластера AKS с помощью издателя OIDC
Кластер AKS можно обновить с помощью команды az aks update с параметром --enable-oidc-issuer
, чтобы включить издателя OIDC. В следующем примере обновляется кластер с именем myAKSCluster:
az aks update --resource-group myResourceGroup --name myAKSCluster --enable-oidc-issuer
Отображение URL-адреса издателя OIDC
Чтобы получить URL-адрес издателя OIDC, выполните команду az aks show . Замените значения по умолчанию для имени кластера и имени группы ресурсов.
az aks show --name myAKScluster --resource-group myResourceGroup --query "oidcIssuerProfile.issuerUrl" -o tsv
По умолчанию издатель использует базовый URL-адрес https://{region}.oic.prod-aks.azure.com
, где значение для {region}
совпадений с расположением кластера AKS развертывается.
Поворот ключа OIDC
Чтобы повернуть ключ OIDC, выполните команду az aks oidc-issuer . Замените значения по умолчанию для имени кластера и имени группы ресурсов.
az aks oidc-issuer rotate-signing-keys --name myAKSCluster --resource-group myResourceGroup
Внимание
После смены ключа старый ключ (key1) истекает через 24 часа. Старый ключ (key1) и новый ключ (key2) действительны в течение 24-часового периода после смены. Если вы хотите немедленно отключить старый ключ (key1), необходимо дважды повернуть ключ OIDC и перезапустить модули pod с помощью проецируемых маркеров учетной записи службы. С помощью этого процесса ключ2 и key3 допустимы, а ключ1 недопустим.
Проверка ключей OIDC
Получение URL-адреса издателя OIDC
Чтобы получить URL-адрес издателя OIDC, выполните команду az aks show . Замените значения по умолчанию для имени кластера и имени группы ресурсов.
az aks show --name myAKScluster --resource-group myResourceGroup --query "oidcIssuerProfile.issuerUrl" -o tsv
Вывод должен иметь следующий вид:
https://eastus.oic.prod-aks.azure.com/00000000-0000-0000-0000-000000000000/11111111-1111-1111-1111-111111111111/
По умолчанию издатель использует базовый URL-адрес https://{region}.oic.prod-aks.azure.com/{tenant_id}/{uuid}
, где значение для {region}
совпадений с расположением кластера AKS развертывается. Значение {uuid}
представляет ключ OIDC, который является случайным образом созданным guid для каждого кластера, который является неизменяемым.
Получение документа обнаружения
Чтобы получить документ обнаружения, скопируйте URL-адрес https://(OIDC issuer URL).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
Чтобы получить документ 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.
Azure Kubernetes Service