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.