Compartir a través de


Configuración de la autenticación de Microsoft Entra para un clúster de Red Hat OpenShift 4 (CLI) de Azure

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 de 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 la 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 incluir en los tokens que se envían a las aplicaciones.

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.

Se va a configurar OpenShift para usar la notificación email y revertir a upn para establecer el nombre de usuario preferido agregando upn como parte del token de identificador devuelto por Microsoft Entra ID.

Cree un archivo manifest.json para configurar la aplicación de Microsoft Entra.

cat > manifest.json<< EOF
[{
  "name": "upn",
  "source": null,
  "essential": false,
  "additionalProperties": []
},
{
"name": "email",
  "source": null,
  "essential": false,
  "additionalProperties": []
}]
EOF

Actualización de optionalClaims de la aplicación de 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:

A menos que se autentique como administrador global de esta instancia de Microsoft Entra ID, puede omitir sin problemas el mensaje para otorgar el consentimiento. A los usuarios de dominio estándar se les pide que otorguen el consentimiento al iniciar sesión por primera vez en el clúster con las 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 a los grupos de seguridad del 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 y vuelve a iniciar sesión, se le presentará una nueva opción para iniciar sesión con Microsoft Entra ID. Debe esperar unos minutos.

Pantalla de inicio de sesión con la opción de Microsoft Entra