Configurer l’authentification Microsoft Entra pour un cluster Azure Red Hat OpenShift 4 (CLI)

Si vous choisissez d’installer et d’utiliser l’interface CLI localement, cet article vous demande d’exécuter Azure CLI version 2.30.0 ou ultérieure. Exécutez az --version pour trouver la version. Si vous devez installer ou mettre à niveau, voir Installer Azure CLI.

Récupérez vos URL spécifiques au cluster qui seront utilisées pour configurer l’application Microsoft Entra.

Définissez les variables pour le groupe de ressources et le nom du cluster.

Remplacez <resource_group> par le nom de votre groupe de ressources et <aro-cluster> par le nom de votre cluster.

resource_group=<resource_group>
aro_cluster=<aro_cluster>

Construisez l’URL de rappel OAuth du cluster et stockez-la dans une variable oauthCallbackURL.

Remarque

La section AAD de l’URL de rappel OAuth doit correspondre au nom du fournisseur d’identité OAuth que vous allez configurer ultérieurement.

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)

Le format d’oauthCallbackURL est légèrement différent pour les domaines personnalisés :

  • Exécutez la commande suivante si vous utilisez un domaine personnalisé, par exemple contoso.com.

    oauthCallbackURL=https://oauth-openshift.apps.$domain/oauth2callback/AAD
    
  • Si vous n’utilisez pas de domaine personnalisé, le $domain est une chaîne alphanumérique à huit caractères et est délimité par $location.aroapp.io.

    oauthCallbackURL=https://oauth-openshift.apps.$domain.$location.aroapp.io/oauth2callback/AAD
    

Remarque

La section AAD de l’URL de rappel OAuth doit correspondre au nom du fournisseur d’identité OAuth que vous allez configurer ultérieurement.

Créer une application Microsoft Entra pour l’authentification

Remplacez <client_secret> par un mot de passe sécurisé pour l’application.

client_secret=<client_secret>

Créez une application Microsoft Entra et récupérez l’identificateur d’application créé.

app_id=$(az ad app create \
  --query appId -o tsv \
  --display-name aro-auth \
  --reply-urls $oauthCallbackURL \
  --password $client_secret)

Récupérez l’ID de locataire de l’abonnement qui possède l’application.

tenant_id=$(az account show --query tenantId -o tsv)

Créer un fichier manifeste pour définir les revendications facultatives à inclure dans le jeton d’ID

Les développeurs d’applications peuvent utiliser des revendications facultatives dans leurs applications Microsoft Entra pour spécifier les revendications souhaitées dans les jetons envoyés à leur application.

Vous pouvez utiliser des revendications facultatives pour :

  • Sélectionner des revendications supplémentaires à inclure dans les jetons pour votre application.
  • Modifiez le comportement de certaines revendications renvoyées par Microsoft Entra ID sous forme de jetons.
  • Ajouter et accéder à des revendications personnalisées pour votre application.

Nous allons configurer OpenShift pour utiliser la email revendication et revenir à upn la définition du nom d’utilisateur préféré en ajoutant le upn jeton d’ID retourné par l’ID De Microsoft Entra ID.

Créez un fichier manifest.json pour configurer l’application Microsoft Entra.

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

Mettre à jour les facultatifsClaims de l’application Microsoft Entra avec un manifeste

az ad app update \
  --set optionalClaims.idToken=@manifest.json \
  --id $app_id

Mettre à jour les autorisations d’étendue de l’application Microsoft Entra

Pour pouvoir lire les informations utilisateur à partir de l’ID Microsoft Entra, nous devons définir les étendues appropriées.

Pour activer la connexion et lire le profil utilisateur, ajoutez l’autorisation pour l’étendue 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

Remarque

Vous pouvez ignorer en toute sécurité le message pour accorder le consentement, sauf si vous êtes authentifié en tant qu’Administration istrateur global pour cet ID Microsoft Entra. Les utilisateurs de domaine standard sont invités à accorder le consentement lorsqu’ils se connectent au cluster à l’aide de leurs informations d’identification Microsoft Entra.

Affecter des utilisateurs et des groupes au cluster (facultatif)

Les applications inscrites dans un locataire Microsoft Entra sont, par défaut, disponibles pour tous les utilisateurs du locataire qui parviennent à s’authentifier. Microsoft Entra ID permet aux administrateurs de locataires et aux développeurs de restreindre une application à un ensemble spécifique d’utilisateurs ou de groupes de sécurité dans le locataire.

Suivez les instructions de la documentation Microsoft Entra pour affecter des utilisateurs et des groupes à l’application.

Configurer l’authentification OpenShift OpenID

Récupérez les informations d’identification de kubeadmin. Exécutez la commande suivante pour rechercher le mot de passe de l’utilisateur kubeadmin.

kubeadmin_password=$(az aro list-credentials \
  --name $aro_cluster \
  --resource-group $resource_group \
  --query kubeadminPassword --output tsv)

Connectez-vous au serveur d’API du cluster OpenShift à l’aide de la commande suivante.

oc login $apiServer -u kubeadmin -p $kubeadmin_password

Créez un secret OpenShift pour stocker le secret d’application Microsoft Entra.

oc create secret generic openid-client-secret-azuread \
  --namespace openshift-config \
  --from-literal=clientSecret=$client_secret

Créez un fichier oidc.yaml pour configurer l’authentification OpenShift OpenID sur l’ID Microsoft Entra.

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

Appliquez la configuration au cluster.

oc apply -f oidc.yaml

Vous obtiendrez une réponse similaire à ce qui suit.

oauth.config.openshift.io/cluster configured

Vérifier la connexion via l’ID Microsoft Entra

Si vous vous déconnectez maintenant de la console web OpenShift et essayez de vous reconnecter, vous recevrez une nouvelle option pour vous connecter avec l’ID Microsoft Entra. Vous devrez peut-être patienter quelques minutes.

Log in screen with Microsoft Entra option