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.