Configurare l'autenticazione di Microsoft Entra per un cluster Azure Red Hat OpenShift 4 (interfaccia della riga di comando)
Se si sceglie di installare e usare l'interfaccia della riga di comando in locale, questo articolo richiede l'esecuzione dell'interfaccia della riga di comando di Azure versione 2.30.0 o successiva. Eseguire az --version
per trovare la versione. Se è necessario eseguire l'installazione o l'aggiornamento, vedere Installare l'interfaccia della riga di comando di Azure.
Recuperare gli URL specifici del cluster che verranno usati per configurare l'applicazione Microsoft Entra.
Impostare le variabili per il gruppo di risorse e il nome del cluster.
Sostituire <resource_group> con il nome del gruppo di risorse e <aro_cluster> con il nome del cluster.
resource_group=<resource_group>
aro_cluster=<aro_cluster>
Costruire l'URL di callback OAuth del cluster e archiviarlo in una variabile oauthCallbackURL.
Nota
La AAD
sezione nell'URL di callback OAuth deve corrispondere al nome del provider di identità OAuth che verrà configurato in un secondo momento.
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)
Il formato di oauthCallbackURL è leggermente diverso con i domini personalizzati:
Eseguire il comando seguente se si usa un dominio personalizzato, ad esempio
contoso.com
.oauthCallbackURL=https://oauth-openshift.apps.$domain/oauth2callback/AAD
Se non si usa un dominio personalizzato, l'oggetto
$domain
sarà una stringa di otto caratteri alnumerati e viene esteso da$location.aroapp.io
.oauthCallbackURL=https://oauth-openshift.apps.$domain.$location.aroapp.io/oauth2callback/AAD
Nota
La AAD
sezione nell'URL di callback OAuth deve corrispondere al nome del provider di identità OAuth che verrà configurato in un secondo momento.
Creare un'applicazione Microsoft Entra per l'autenticazione
Sostituire <client_secret> con una password sicura per l'applicazione.
client_secret=<client_secret>
Creare un'applicazione Microsoft Entra e recuperare l'identificatore dell'applicazione creato.
app_id=$(az ad app create \
--query appId -o tsv \
--display-name aro-auth \
--reply-urls $oauthCallbackURL \
--password $client_secret)
Recuperare l'ID tenant della sottoscrizione proprietaria dell'applicazione.
tenant_id=$(az account show --query tenantId -o tsv)
Creare un file manifesto per definire le attestazioni facoltative da includere nel token ID
Gli sviluppatori di applicazioni possono usare attestazioni facoltative nelle applicazioni Microsoft Entra per specificare le attestazioni desiderate nei token inviati all'applicazione.
Le attestazioni facoltative possono essere usate per:
- Selezionare attestazioni aggiuntive da includere nei token per l'applicazione.
- Modificare il comportamento di determinate attestazioni che Microsoft Entra ID restituisce nei token.
- Aggiungere e accedere ad attestazioni personalizzate per l'applicazione.
Si configurerà OpenShift per l'uso dell'attestazione e il email
fallback per upn
impostare il nome utente preferito aggiungendo come upn
parte del token ID restituito da Microsoft Entra ID.
Creare un file manifest.json per configurare l'applicazione Microsoft Entra.
cat > manifest.json<< EOF
[{
"name": "upn",
"source": null,
"essential": false,
"additionalProperties": []
},
{
"name": "email",
"source": null,
"essential": false,
"additionalProperties": []
}]
EOF
Aggiornare facoltativamente l'applicazione Microsoft EntraClaims con un manifesto
az ad app update \
--set optionalClaims.idToken=@manifest.json \
--id $app_id
Aggiornare le autorizzazioni per l'ambito dell'applicazione Microsoft Entra
Per poter leggere le informazioni utente da Microsoft Entra ID, è necessario definire gli ambiti appropriati.
Aggiungere l'autorizzazione per l'ambito Graph.User.Read di Azure Active Directory per abilitare l'accesso e leggere il profilo utente.
az ad app permission add \
--api 00000002-0000-0000-c000-000000000000 \
--api-permissions 311a71cc-e848-46a1-bdf8-97ff7156d8e6=Scope \
--id $app_id
Nota
È possibile ignorare in modo sicuro il messaggio per concedere il consenso, a meno che non si sia autenticati come amministratore globale per l'ID Microsoft Entra. Agli utenti di dominio standard verrà chiesto di concedere il consenso quando accedono per la prima volta al cluster usando le credenziali di Microsoft Entra.
Assegnare utenti e gruppi al cluster (facoltativo)
Per impostazione predefinita, le applicazioni registrate in un tenant di Microsoft Entra sono disponibili per tutti gli utenti del tenant che eseguono correttamente l'autenticazione. Microsoft Entra ID consente agli amministratori tenant e agli sviluppatori di limitare un'app a un set specifico di utenti o gruppi di sicurezza nel tenant.
Seguire le istruzioni nella documentazione di Microsoft Entra per assegnare utenti e gruppi all'app.
Configurare l'autenticazione OpenID di OpenShift
Recuperare le kubeadmin
credenziali. Eseguire il comando seguente per trovare la password per l'utente kubeadmin
.
kubeadmin_password=$(az aro list-credentials \
--name $aro_cluster \
--resource-group $resource_group \
--query kubeadminPassword --output tsv)
Accedere al server API del cluster OpenShift usando il comando seguente.
oc login $apiServer -u kubeadmin -p $kubeadmin_password
Creare un segreto OpenShift per archiviare il segreto dell'applicazione Microsoft Entra.
oc create secret generic openid-client-secret-azuread \
--namespace openshift-config \
--from-literal=clientSecret=$client_secret
Creare un file oidc.yaml per configurare l'autenticazione OpenShift OpenID con 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
Applicare la configurazione al cluster.
oc apply -f oidc.yaml
Verrà restituita una risposta simile alla seguente.
oauth.config.openshift.io/cluster configured
Verificare l'accesso tramite Microsoft Entra ID
Se si esegue ora la disconnessione della console Web OpenShift e si tenta di accedere di nuovo, verrà visualizzata una nuova opzione per accedere con Microsoft Entra ID. Potrebbe essere necessario attendere alcuni minuti.