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.