Configuración de la autenticación de Microsoft Entra para un clúster de Red Hat OpenShift en Azure 4 (CLI)
Si decide instalar y usar la CLI localmente, para este artículo es necesario que ejecute la CLI de Azure versión 2.30.0 o posterior. Ejecute az --version
para encontrar la versión. Si necesita instalarla o actualizarla, vea Instalación de la CLI de Azure.
Recupere las direcciones URL específicas del clúster que se van a usar para configurar la aplicación Microsoft Entra.
Establezca las variables para el grupo de recursos y el nombre del clúster.
Reemplace <resource_group> por el nombre del grupo de recursos y <aro-cluster> por el nombre del clúster.
resource_group=<resource_group>
aro_cluster=<aro_cluster>
Construya la dirección URL de devolución de llamada de OAuth del clúster y almacénela en una variable oauthCallbackURL.
Nota:
La sección AAD
de la dirección URL de devolución de llamada de OAuth debe coincidir con el nombre del proveedor de identidades de OAuth que se va a configurar más adelante.
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)
El formato de oauthCallbackURL es ligeramente diferente con dominios personalizados:
Ejecute el siguiente comando si usa un dominio personalizado, por ejemplo,
contoso.com
.oauthCallbackURL=https://oauth-openshift.apps.$domain/oauth2callback/AAD
Si no usa un dominio personalizado,
$domain
es una cadena alfanumérica de ocho caracteres que se extiende mediante$location.aroapp.io
.oauthCallbackURL=https://oauth-openshift.apps.$domain.$location.aroapp.io/oauth2callback/AAD
Nota:
La sección AAD
de la dirección URL de devolución de llamada de OAuth debe coincidir con el nombre del proveedor de identidades de OAuth que se va a configurar más adelante.
Creación de una aplicación de Microsoft Entra para la autenticación
Reemplace <client_secret> por una contraseña segura para la aplicación.
client_secret=<client_secret>
Cree una aplicación de Microsoft Entra y recupere el identificador de aplicación creado.
app_id=$(az ad app create \
--query appId -o tsv \
--display-name aro-auth \
--reply-urls $oauthCallbackURL \
--password $client_secret)
Recupere el identificador de inquilino de la suscripción que posee la aplicación.
tenant_id=$(az account show --query tenantId -o tsv)
Creación de un archivo de manifiesto para definir las notificaciones opcionales que se van a incluir en el token de identificador
Los desarrolladores de aplicaciones pueden usar notificaciones opcionales en sus aplicaciones de Microsoft Entra para especificar qué notificaciones quieren en los tokens enviados a su aplicación.
Estas notificaciones opcionales sirven para:
- Seleccionar las notificaciones adicionales que se incluirán en los tokens para la aplicación.
- Cambiar el comportamiento de determinadas notificaciones que la Plataforma de identidad de Microsoft Entra ID devuelve en tokens.
- Agregar notificaciones personalizadas para la aplicación y acceder a ellas.
Configuraremos OpenShift para usar la email
notificación y revertir a upn
para establecer el nombre de usuario preferido agregando como upn
parte del token de identificador devuelto por El id. de Microsoft Entra.
Cree un archivo manifest.json para configurar la aplicación Microsoft Entra.
cat > manifest.json<< EOF
[{
"name": "upn",
"source": null,
"essential": false,
"additionalProperties": []
},
{
"name": "email",
"source": null,
"essential": false,
"additionalProperties": []
}]
EOF
Actualización de la opcionalClaims de la aplicación Microsoft Entra con un manifiesto
az ad app update \
--set optionalClaims.idToken=@manifest.json \
--id $app_id
Actualización de los permisos de ámbito de aplicación de Microsoft Entra
Para poder leer la información de usuario de Microsoft Entra ID, es necesario definir los ámbitos adecuados.
Agregue el permiso para el ámbito Graph.User.Read de Azure Active Directory para habilitar el inicio de sesión y leer el perfil de usuario.
az ad app permission add \
--api 00000002-0000-0000-c000-000000000000 \
--api-permissions 311a71cc-e848-46a1-bdf8-97ff7156d8e6=Scope \
--id $app_id
Nota:
Puede omitir de forma segura el mensaje para conceder el consentimiento a menos que se autentique como un Administración istrator global para este identificador de Microsoft Entra. Se pedirá a los usuarios del dominio estándar que concedan consentimiento cuando inicien sesión por primera vez en el clúster con sus credenciales de Microsoft Entra.
Asignación de usuarios y grupos al clúster (opcional)
Las aplicaciones registradas en un inquilino de Microsoft Entra están disponibles de forma predeterminada para todos los usuarios del inquilino que se autentican correctamente. Microsoft Entra ID permite a los administradores y desarrolladores de inquilinos restringir una aplicación a un conjunto específico de usuarios o grupos de seguridad en el inquilino.
Siga las instrucciones de la documentación de Microsoft Entra para asignar usuarios y grupos a la aplicación.
Configuración de la autenticación OpenID en OpenShift
Recupere las credenciales de kubeadmin
. Ejecute el siguiente comando para buscar la contraseña del usuario kubeadmin
.
kubeadmin_password=$(az aro list-credentials \
--name $aro_cluster \
--resource-group $resource_group \
--query kubeadminPassword --output tsv)
Inicie sesión en el servidor de API del clúster de OpenShift mediante el siguiente comando.
oc login $apiServer -u kubeadmin -p $kubeadmin_password
Cree un secreto de OpenShift para almacenar el secreto de aplicación de Microsoft Entra.
oc create secret generic openid-client-secret-azuread \
--namespace openshift-config \
--from-literal=clientSecret=$client_secret
Cree un archivo oidc.yaml para configurar la autenticación openID de OpenShift en 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
Aplique la configuración al clúster.
oc apply -f oidc.yaml
Obtendrá una respuesta similar a la siguiente.
oauth.config.openshift.io/cluster configured
Comprobación del inicio de sesión a través de Microsoft Entra ID
Si ahora cierra sesión en la consola web de OpenShift e intenta iniciar sesión de nuevo, se le presentará una nueva opción para iniciar sesión con el identificador entra de Microsoft. Debe esperar unos minutos.