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.