Partager via


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 les URL spécifiques à votre 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, puis 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 qu’ils souhaitent 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 qu’il utilise principalement la revendication email, puis upn comme solution de secours pour définir le nom d’utilisateur par défaut en ajoutant upn dans le cadre du jeton d’ID retourné par 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 optionalClaims de l’application Microsoft Entra avec un manifeste

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

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

Pour pouvoir lire les informations utilisateur à partir de Microsoft Entra ID, 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 le message relatif à l’octroi du consentement, sauf si vous êtes authentifié en tant qu’administrateur général de cette instance de Microsoft Entra ID. Les utilisateurs de domaine standard sont invités à donner leur consentement quand ils se connectent au cluster pour la première fois à 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 développeurs et administrateurs de tenant (locataire) de restreindre une application à un ensemble spécifique d’utilisateurs ou de groupes de sécurité dans le tenant.

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 la clé secrète 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 basée sur 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

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 Microsoft Entra ID

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

Écran de connexion avec l’option Microsoft Entra