Freigeben über


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 die 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 vorhanden sein sollen, die an ihre Anwendungen gesendet werden.

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 der email-Anspruch verwendet wird und ein Fallback auf upn erfolgt, um den bevorzugten Benutzernamen festzulegen, indem der upn als Teil des von Microsoft Entra ID zurückgegebenen ID-Tokens hinzugefügt wird.

Erstellen Sie eine manifest.json-Datei zum Konfigurieren der Microsoft Entra-Anwendung.

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

Aktualisieren der optionalClaims 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 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

Wenn Sie für diese Microsoft Entra ID-Instanz nicht als globaler Administrator authentifiziert sind, können Sie die Meldung ignorieren, um die Zustimmung zu erteilen. Standarddomänenbenutzer werden zur Erteilung ihrer Zustimmung aufgefordert, wenn sie sich das erste 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. Microsoft Entra ID ermöglicht Mandantenadministratoren und Entwicklern die Beschränkung einer App auf eine bestimmte Gruppe von Benutzern oder Sicherheitsgruppen im Mandanten.

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, um OpenShift OpenID-Authentifizierung für Microsoft Entra ID zu konfigurieren.

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 Microsoft Entra ID

Wenn Sie sich jetzt von der OpenShift-Webkonsole abmelden und versuchen, sich erneut anzumelden, wird Ihnen eine neue Option angezeigt, mit der Sie sich mit Microsoft Entra ID anmelden können. Möglicherweise müssen Sie einige Minuten warten.

Anmeldebildschirm mit der Microsoft Entra-Option