Konfigurieren der Microsoft Entra-Authentifizierung für einen Azure Red Hat OpenShift 4-Cluster (CLI)

Wenn Sie die CLI lokal installieren und verwenden möchten, müssen Sie als Voraussetzung für diesen Artikel mindestens Version 2.30.0 der Azure CLI ausführen. Führen Sie az --version aus, um die Version zu ermitteln. Informationen zum Durchführen einer Installation oder eines Upgrades finden Sie bei Bedarf unter Installieren der Azure CLI.

Rufen Sie ihre clusterspezifischen URLs ab, die zum Konfigurieren der Microsoft Entra-Anwendung verwendet werden.

Legen Sie die Variablen für den Namen der Ressourcengruppe und des Clusters fest.

Ersetzen Sie <resource_group> durch den Namen Ihrer Ressourcengruppe und <aro_cluster> durch den Namen Ihres Clusters.

resource_group=<resource_group>
aro_cluster=<aro_cluster>

Erstellen Sie die OAuth-Rückruf-URL des Clusters, und speichern Sie sie in einer Variablen oauthCallbackURL.

Hinweis

Der Abschnitt AAD in der OAuth-Rückruf-URL sollte mit dem Namen des OAuth-Identitätsanbieters identisch sein, den Sie später einrichten.

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)

Das Format der oauthCallbackURL sieht bei benutzerdefinierten Domänen etwas anders aus:

  • Führen Sie den folgenden Befehl aus, wenn Sie eine benutzerdefinierte Domäne (z. B. contoso.com) verwenden.

    oauthCallbackURL=https://oauth-openshift.apps.$domain/oauth2callback/AAD
    
  • Wenn Sie keine benutzerdefinierte Domäne verwenden, ist $domain eine aus acht Zeichen bestehende alphanumerische Zeichenfolge, die um $location.aroapp.io erweitert wird.

    oauthCallbackURL=https://oauth-openshift.apps.$domain.$location.aroapp.io/oauth2callback/AAD
    

Hinweis

Der Abschnitt AAD in der OAuth-Rückruf-URL sollte mit dem Namen des OAuth-Identitätsanbieters identisch sein, den Sie später einrichten.

Erstellen einer Microsoft Entra-Anwendung für die Authentifizierung

Ersetzen Sie <client_secret> durch ein sicheres Kennwort für die Anwendung.

client_secret=<client_secret>

Erstellen Sie eine Microsoft Entra-Anwendung, und rufen Sie den erstellten Anwendungsbezeichner ab.

app_id=$(az ad app create \
  --query appId -o tsv \
  --display-name aro-auth \
  --reply-urls $oauthCallbackURL \
  --password $client_secret)

Rufen Sie die Mandanten-ID des Abonnements ab, das Besitzer der Anwendung ist.

tenant_id=$(az account show --query tenantId -o tsv)

Erstellen einer Manifestdatei zum Definieren der optionalen Ansprüche, die im ID-Token enthalten sein sollen

Anwendungsentwickler können optionale Ansprüche in ihren Microsoft Entra-Anwendungen verwenden, um anzugeben, welche Ansprüche in Token an ihre Anwendung gesendet werden sollen.

Sie können optionale Ansprüche zu folgenden Zwecken verwenden:

  • Auswählen zusätzlicher Ansprüche, die in Token für Ihre Anwendung aufgenommen werden sollen
  • Ändern des Verhaltens bestimmter Ansprüche, die von Microsoft Entra ID in Form von Token zurückgegeben werden.
  • Hinzufügen und Zugreifen auf benutzerdefinierte Ansprüche für Ihre Anwendung

Wir konfigurieren OpenShift so, dass er den email Anspruch verwendet und auf den bevorzugten Benutzernamen zurückgesetzt upn wird, indem wir den upn als Teil des von Microsoft Entra ID zurückgegebenen ID-Tokens hinzufügen.

Erstellen Sie eine Manifest.json-Datei , um die Microsoft Entra-Anwendung zu konfigurieren.

cat > manifest.json<< EOF
[{
  "name": "upn",
  "source": null,
  "essential": false,
  "additionalProperties": []
},
{
"name": "email",
  "source": null,
  "essential": false,
  "additionalProperties": []
}]
EOF

Aktualisieren der optionalenClaims der Microsoft Entra-Anwendung mit einem Manifest

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

Aktualisieren der Microsoft Entra-Anwendungsbereichsberechtigungen

Um die Benutzerinformationen aus der Microsoft Entra-ID lesen zu können, müssen wir die richtigen Bereiche definieren.

Fügen Sie die Berechtigung für den Bereich Azure Active Directory Graph.User.Read hinzu, um die Anmeldung zu ermöglichen und das Benutzerprofil zu lesen.

az ad app permission add \
 --api 00000002-0000-0000-c000-000000000000 \
 --api-permissions 311a71cc-e848-46a1-bdf8-97ff7156d8e6=Scope \
 --id $app_id

Hinweis

Sie können die Nachricht sicher ignorieren, um die Zustimmung zu erteilen, es sei denn, Sie sind als globaler Administrator für diese Microsoft Entra-ID authentifiziert. Standard do Standard Benutzer werden aufgefordert, die Zustimmung zu erteilen, wenn sie sich zum ersten Mal mit ihren Microsoft Entra-Anmeldeinformationen beim Cluster anmelden.

Zuweisen von Benutzern und Gruppen zum Cluster (optional)

Anwendungen, die für einen Microsoft Entra-Mandanten registriert sind, sind standardmäßig für alle Benutzer des Mandanten verfügbar, deren Authentifizierung erfolgreich war. Mit der Microsoft Entra-ID können Mandantenadministratoren und Entwickler eine App auf eine bestimmte Gruppe von Benutzern oder Sicherheitsgruppen im Mandanten beschränken.

Befolgen Sie die Anweisungen in der Microsoft Entra-Dokumentation, um der App Benutzer und Gruppen zuzuweisen.

Konfigurieren der OpenID-Authentifizierung für OpenShift

Rufen Sie die kubeadmin-Anmeldeinformationen ab. Führen Sie den folgenden Befehl aus, um das Kennwort für den Benutzer kubeadmin zu suchen:

kubeadmin_password=$(az aro list-credentials \
  --name $aro_cluster \
  --resource-group $resource_group \
  --query kubeadminPassword --output tsv)

Melden Sie sich mit dem folgenden Befehl beim API-Server des OpenShift-Clusters an.

oc login $apiServer -u kubeadmin -p $kubeadmin_password

Erstellen Sie einen OpenShift-Geheimschlüssel, um den geheimen Microsoft Entra-Anwendungsschlüssel zu speichern.

oc create secret generic openid-client-secret-azuread \
  --namespace openshift-config \
  --from-literal=clientSecret=$client_secret

Erstellen Sie eine oidc.yaml-Datei zum Konfigurieren der OpenShift OpenID-Authentifizierung für 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

Wenden Sie die Konfiguration auf den Cluster an.

oc apply -f oidc.yaml

Sie erhalten eine Antwort, die in etwa der folgenden entspricht.

oauth.config.openshift.io/cluster configured

Überprüfen der Anmeldung über die Microsoft Entra-ID

Wenn Sie sich jetzt bei der OpenShift Web Console abmelden und erneut versuchen, sich anzumelden, wird ihnen eine neue Option zum Anmelden mit Microsoft Entra ID angezeigt. Möglicherweise müssen Sie einige Minuten warten.

Log in screen with Microsoft Entra option