Konfigurera Microsoft Entra-autentisering för ett Azure Red Hat OpenShift 4-kluster (CLI)
Om du väljer att installera och använda CLI lokalt kräver den här artikeln att du kör Azure CLI version 2.30.0 eller senare. Kör az --version
för att hitta versionen. Om du behöver installera eller uppgradera kan du läsa Installera Azure CLI.
Hämta dina klusterspecifika URL:er som ska användas för att konfigurera Microsoft Entra-programmet.
Ange variablerna för resursgrupp och klusternamn.
Ersätt <resource_group> med resursgruppens namn och <aro_cluster> med klustrets namn.
resource_group=<resource_group>
aro_cluster=<aro_cluster>
Skapa klustrets URL för OAuth-motringning och lagra den i en variabel oauthCallbackURL.
Kommentar
Avsnittet AAD
i URL:en för återanrop till OAuth ska matcha namnet på OAuth-identitetsprovidern som du konfigurerar senare.
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)
Formatet för oauthCallbackURL skiljer sig något från anpassade domäner:
Kör följande kommando om du använder en anpassad domän, t.ex.
contoso.com
.oauthCallbackURL=https://oauth-openshift.apps.$domain/oauth2callback/AAD
Om du inte använder en anpassad domän
$domain
kommer den att vara en alnumsträng med åtta tecken och utökas med$location.aroapp.io
.oauthCallbackURL=https://oauth-openshift.apps.$domain.$location.aroapp.io/oauth2callback/AAD
Kommentar
Avsnittet AAD
i URL:en för återanrop till OAuth ska matcha namnet på OAuth-identitetsprovidern som du konfigurerar senare.
Skapa ett Microsoft Entra-program för autentisering
Ersätt <client_secret> med ett säkert lösenord för programmet.
client_secret=<client_secret>
Skapa ett Microsoft Entra-program och hämta den skapade programidentifieraren.
app_id=$(az ad app create \
--query appId -o tsv \
--display-name aro-auth \
--reply-urls $oauthCallbackURL \
--password $client_secret)
Hämta klientorganisations-ID:t för den prenumeration som äger programmet.
tenant_id=$(az account show --query tenantId -o tsv)
Skapa en manifestfil för att definiera de valfria anspråk som ska inkluderas i ID-token
Programutvecklare kan använda valfria anspråk i sina Microsoft Entra-program för att ange vilka anspråk de vill ha i token som skickas till deras program.
Du kan använda valfria anspråk för att:
- Välja ytterligare anspråk som ska inkluderas i ditt programs token.
- Ändra beteendet för vissa anspråk som Microsoft Entra-ID returnerar i token.
- Lägga till och få åtkomst till anpassade anspråk för ditt program.
Vi konfigurerar OpenShift att använda anspråket email
och återgår till upn
för att ange det föredragna användarnamnet upn
genom att lägga till som en del av den ID-token som returneras av Microsoft Entra ID.
Skapa en manifest.json-fil för att konfigurera Microsoft Entra-programmet.
cat > manifest.json<< EOF
[{
"name": "upn",
"source": null,
"essential": false,
"additionalProperties": []
},
{
"name": "email",
"source": null,
"essential": false,
"additionalProperties": []
}]
EOF
Uppdatera Microsoft Entra-programmets optionalClaims med ett manifest
az ad app update \
--set optionalClaims.idToken=@manifest.json \
--id $app_id
Uppdatera Behörigheter för Microsoft Entra-programomfång
För att kunna läsa användarinformationen från Microsoft Entra-ID måste vi definiera rätt omfång.
Lägg till behörighet för Azure Active Directory Graph.User.Read-omfånget för att aktivera inloggning och läsa användarprofil.
az ad app permission add \
--api 00000002-0000-0000-c000-000000000000 \
--api-permissions 311a71cc-e848-46a1-bdf8-97ff7156d8e6=Scope \
--id $app_id
Kommentar
Du kan ignorera meddelandet för att bevilja medgivandet om du inte autentiseras som global administratör för det här Microsoft Entra-ID:t. Standarddomänanvändare uppmanas att bevilja medgivande när de först loggar in på klustret med sina Microsoft Entra-autentiseringsuppgifter.
Tilldela användare och grupper till klustret (valfritt)
Program som registrerats i en Microsoft Entra-klientorganisation är som standard tillgängliga för alla användare av klientorganisationen som har autentiserats. Med Microsoft Entra-ID kan klientadministratörer och utvecklare begränsa en app till en specifik uppsättning användare eller säkerhetsgrupper i klientorganisationen.
Följ anvisningarna i Microsoft Entra-dokumentationen för att tilldela användare och grupper till appen.
Konfigurera OpenShift OpenID-autentisering
Hämta autentiseringsuppgifterna kubeadmin
. Kör följande kommando för att hitta lösenordet för kubeadmin
användaren.
kubeadmin_password=$(az aro list-credentials \
--name $aro_cluster \
--resource-group $resource_group \
--query kubeadminPassword --output tsv)
Logga in på OpenShift-klustrets API-server med hjälp av följande kommando.
oc login $apiServer -u kubeadmin -p $kubeadmin_password
Skapa en OpenShift-hemlighet för att lagra Microsoft Entra-programhemligheten.
oc create secret generic openid-client-secret-azuread \
--namespace openshift-config \
--from-literal=clientSecret=$client_secret
Skapa en oidc.yaml-fil för att konfigurera OpenShift OpenID-autentisering mot 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
Tillämpa konfigurationen på klustret.
oc apply -f oidc.yaml
Du får ett svar som liknar följande.
oauth.config.openshift.io/cluster configured
Verifiera inloggning via Microsoft Entra-ID
Om du nu loggar ut från OpenShift-webbkonsolen och försöker logga in igen visas ett nytt alternativ för att logga in med Microsoft Entra-ID. Du kan behöva vänta några minuter.