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.

Log in screen with Microsoft Entra option