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.