Condividi tramite


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 restituite da Microsoft Entra ID 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 il messaggio per concedere il consenso a meno che non si sia autenticati come global Amministrazione istrator per questo 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)

Le applicazioni registrate in un tenant di Microsoft Entra sono, per impostazione predefinita, 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.

Log in screen with Microsoft Entra option