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.

Log in screen with Microsoft Entra option