Настройка проверки подлинности Microsoft Entra для кластера Azure Red Hat OpenShift 4 (CLI)
Если вы решили установить и использовать интерфейс командной строки локально, в этой статье необходимо запустить Azure CLI версии 2.30.0 или более поздней. Чтобы узнать версию, выполните команду az --version
. Если вам необходимо выполнить установку или обновление, см. статью Установка Azure CLI 2.0.
Получите URL-адреса, относящиеся к кластеру, которые будут использоваться для настройки приложения Microsoft Entra.
Задайте переменные для группы ресурсов и имени кластера.
Замените <resource_group> именем группы ресурсов и< aro_cluster> именем кластера.
resource_group=<resource_group>
aro_cluster=<aro_cluster>
Создайте URL-адрес обратного вызова OAuth кластера и сохраните его в переменной oauthCallbackURL.
Примечание.
Раздел AAD
в URL-адресе обратного вызова OAuth должен соответствовать имени поставщика удостоверений OAuth, которое будет настроено позже.
domain=$(az aro show -g $resource_group -n $aro_cluster --query clusterProfile.domain -o tsv)
location=$(az aro show -g $resource_group -n $aro_cluster --query location -o tsv)
apiServer=$(az aro show -g $resource_group -n $aro_cluster --query apiserverProfile.url -o tsv)
webConsole=$(az aro show -g $resource_group -n $aro_cluster --query consoleProfile.url -o tsv)
Формат oauthCallbackURL немного отличается от личных доменов:
Если используется личный домен, например
contoso.com
, выполните указанную ниже команду.oauthCallbackURL=https://oauth-openshift.apps.$domain/oauth2callback/AAD
Если вы не используете личный домен, то
$domain
будет строкой alnum из восьми символов, расширенной с помощью$location.aroapp.io
.oauthCallbackURL=https://oauth-openshift.apps.$domain.$location.aroapp.io/oauth2callback/AAD
Примечание.
Раздел AAD
в URL-адресе обратного вызова OAuth должен соответствовать имени поставщика удостоверений OAuth, которое будет настроено позже.
Создание приложения Microsoft Entra для проверки подлинности
Замените <client_secret> безопасным паролем для приложения.
client_secret=<client_secret>
Создайте приложение Microsoft Entra и получите созданный идентификатор приложения.
app_id=$(az ad app create \
--query appId -o tsv \
--display-name aro-auth \
--reply-urls $oauthCallbackURL \
--password $client_secret)
Получите идентификатор клиента подписки, которой принадлежит приложение.
tenant_id=$(az account show --query tenantId -o tsv)
Создание файла манифеста для определения необязательных утверждений для включения в токен идентификатора
Разработчики приложений могут использовать необязательные утверждения в своих приложениях Microsoft Entra, чтобы указать утверждения, которые они хотят в токенах, отправленных в приложение.
Необязательные утверждения можно использовать, чтобы:
- выбрать дополнительные утверждения для включения в токены для приложения;
- Измените поведение определенных утверждений, возвращаемых идентификатором Microsoft Entra в токенах.
- добавлять пользовательские утверждения для приложения и обращаться к ним.
Мы настроим OpenShift использовать email
утверждение и вернуться к upn
настройке предпочтительного имени пользователя, добавив upn
его как часть маркера идентификатора, возвращаемого идентификатором Microsoft Entra ID.
Создайте файл manifest.json для настройки приложения Microsoft Entra.
cat > manifest.json<< EOF
[{
"name": "upn",
"source": null,
"essential": false,
"additionalProperties": []
},
{
"name": "email",
"source": null,
"essential": false,
"additionalProperties": []
}]
EOF
Обновление необязательных выражений приложения Microsoft Entra с помощью манифеста
az ad app update \
--set optionalClaims.idToken=@manifest.json \
--id $app_id
Обновление разрешений приложения Microsoft Entra область
Чтобы иметь возможность считывать сведения о пользователе из идентификатора Microsoft Entra, необходимо определить правильные область.
Добавьте разрешение для области Azure Active Directory Graph.User.Read, чтобы обеспечить вход в профиль пользователя и его чтение.
az ad app permission add \
--api 00000002-0000-0000-c000-000000000000 \
--api-permissions 311a71cc-e848-46a1-bdf8-97ff7156d8e6=Scope \
--id $app_id
Примечание.
Вы можете безопасно игнорировать сообщение, чтобы предоставить согласие, если вы не прошли проверку подлинности в качестве глобального Администратор istrator для этого идентификатора Microsoft Entra. Пользователям домена уровня "Стандартный" будет предложено предоставить согласие при первом входе в кластер с помощью учетных данных Microsoft Entra.
Назначение пользователей и групп для кластера (необязательно)
Приложения, зарегистрированные в клиенте Microsoft Entra, по умолчанию доступны всем пользователям клиента, прошедшим проверку подлинности. Идентификатор Microsoft Entra позволяет администраторам клиентов и разработчикам ограничить приложение определенным набором пользователей или групп безопасности в клиенте.
Следуйте инструкциям в документации Microsoft Entra, чтобы назначить пользователей и группы приложению.
Настройка проверки подлинности OpenShift OpenID
Получите учетные данные kubeadmin
. Выполните следующую команду, чтобы найти пароль для пользователя kubeadmin
.
kubeadmin_password=$(az aro list-credentials \
--name $aro_cluster \
--resource-group $resource_group \
--query kubeadminPassword --output tsv)
Войдите на сервер API кластера OpenShift с помощью указанной ниже команды.
oc login $apiServer -u kubeadmin -p $kubeadmin_password
Создайте секрет OpenShift для хранения секрета приложения Microsoft Entra.
oc create secret generic openid-client-secret-azuread \
--namespace openshift-config \
--from-literal=clientSecret=$client_secret
Создайте файл oidc.yaml, чтобы настроить проверку подлинности OpenShift OpenID для идентификатора Microsoft Entra ID.
cat > oidc.yaml<< EOF
apiVersion: config.openshift.io/v1
kind: OAuth
metadata:
name: cluster
spec:
identityProviders:
- name: AAD
mappingMethod: claim
type: OpenID
openID:
clientID: $app_id
clientSecret:
name: openid-client-secret-azuread
extraScopes:
- email
- profile
extraAuthorizeParameters:
include_granted_scopes: "true"
claims:
preferredUsername:
- email
- upn
name:
- name
email:
- email
issuer: https://login.microsoftonline.com/$tenant_id
EOF
Примените конфигурацию для кластера.
oc apply -f oidc.yaml
Вы получите ответ, аналогичный приведенному ниже.
oauth.config.openshift.io/cluster configured
Проверка входа с помощью идентификатора Microsoft Entra
Если вы теперь выйдите из веб-консоли OpenShift и попытаетесь войти еще раз, вы увидите новый параметр для входа с помощью идентификатора Microsoft Entra. Потребуется подождать несколько минут.