Konfigurowanie uwierzytelniania entra firmy Microsoft dla klastra usługi Azure Red Hat OpenShift 4

Jeśli zdecydujesz się zainstalować interfejs wiersza polecenia i korzystać z niego lokalnie, ten artykuł będzie wymagał interfejsu wiersza polecenia platformy Azure w wersji 2.30.0 lub nowszej. Uruchom polecenie az --version, aby dowiedzieć się, jaka wersja jest używana. Jeśli konieczna będzie instalacja lub uaktualnienie, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.

Pobierz adresy URL specyficzne dla klastra, które będą używane do konfigurowania aplikacji Microsoft Entra.

Ustaw zmienne dla grupy zasobów i nazwy klastra.

Zastąp <resource_group> nazwą grupy zasobów i <aro_cluster> nazwą klastra.

resource_group=<resource_group>
aro_cluster=<aro_cluster>

Skonstruuj adres URL wywołania zwrotnego OAuth klastra i zapisz go w zmiennej oauthCallbackURL.

Uwaga

Sekcja AAD w adresie URL wywołania zwrotnego OAuth powinna być zgodna z nazwą dostawcy tożsamości OAuth, którą skonfigurujesz później.

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)

Format biblioteki oauthCallbackURL jest nieco inny niż w przypadku domen niestandardowych:

  • Uruchom następujące polecenie, jeśli używasz domeny niestandardowej, np. contoso.com.

    oauthCallbackURL=https://oauth-openshift.apps.$domain/oauth2callback/AAD
    
  • Jeśli nie używasz domeny niestandardowej, $domain będzie to osiem znaków ciągu alnum i zostanie rozszerzony przez $location.aroapp.io.

    oauthCallbackURL=https://oauth-openshift.apps.$domain.$location.aroapp.io/oauth2callback/AAD
    

Uwaga

Sekcja AAD w adresie URL wywołania zwrotnego OAuth powinna być zgodna z nazwą dostawcy tożsamości OAuth, którą skonfigurujesz później.

Tworzenie aplikacji Firmy Microsoft Entra na potrzeby uwierzytelniania

Zastąp <client_secret> bezpiecznym hasłem dla aplikacji.

client_secret=<client_secret>

Utwórz aplikację Microsoft Entra i pobierz utworzony identyfikator aplikacji.

app_id=$(az ad app create \
  --query appId -o tsv \
  --display-name aro-auth \
  --reply-urls $oauthCallbackURL \
  --password $client_secret)

Pobierz identyfikator dzierżawy subskrypcji, która jest właścicielem aplikacji.

tenant_id=$(az account show --query tenantId -o tsv)

Utwórz plik manifestu, aby zdefiniować opcjonalne oświadczenia do uwzględnienia w tokenie identyfikatora

Deweloperzy aplikacji mogą używać opcjonalnych oświadczeń w swoich aplikacjach firmy Microsoft Entra, aby określić, które oświadczenia chcą w tokenach wysyłanych do aplikacji.

Za pomocą opcjonalnych oświadczeń można:

  • Wybierać dodatkowe oświadczenia, które mają być dołączane do tokenów dla aplikacji.
  • Zmień zachowanie niektórych oświadczeń zwracanych przez identyfikator Entra firmy Microsoft w tokenach.
  • Dodawać oświadczenia niestandardowe dla aplikacji i uzyskiwać do nich dostęp.

Skonfigurujemy usługę OpenShift, aby używać email oświadczenia i wracać do upn ustawienia preferowanej nazwy użytkownika, dodając upn element jako część tokenu identyfikatora zwróconego przez identyfikator Entra firmy Microsoft.

Utwórz plik manifest.json, aby skonfigurować aplikację Microsoft Entra.

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

Aktualizowanie opcjonalnej aplikacji Microsoft EntraWybierz za pomocą manifestu

az ad app update \
  --set optionalClaims.idToken=@manifest.json \
  --id $app_id

Aktualizowanie uprawnień zakresu aplikacji Entra firmy Microsoft

Aby móc odczytywać informacje o użytkowniku z identyfikatora Entra firmy Microsoft, musimy zdefiniować odpowiednie zakresy.

Dodaj uprawnienie dla zakresu Azure Active Directory Graph.User.Read , aby włączyć logowanie i odczytywać profil użytkownika.

az ad app permission add \
 --api 00000002-0000-0000-c000-000000000000 \
 --api-permissions 311a71cc-e848-46a1-bdf8-97ff7156d8e6=Scope \
 --id $app_id

Uwaga

Możesz bezpiecznie zignorować komunikat, aby udzielić zgody, chyba że użytkownik zostanie uwierzytelniony jako administrator globalny Administracja istrator dla tego identyfikatora Entra firmy Microsoft. Użytkownicy domeny standardowej będą proszeni o wyrażenie zgody podczas pierwszego logowania do klastra przy użyciu poświadczeń firmy Microsoft Entra.

Przypisywanie użytkowników i grup do klastra (opcjonalnie)

Aplikacje zarejestrowane w dzierżawie usługi Microsoft Entra są domyślnie dostępne dla wszystkich użytkowników dzierżawy, którzy pomyślnie się uwierzytelniają. Identyfikator entra firmy Microsoft umożliwia administratorom dzierżawy i deweloperom ograniczenie aplikacji do określonego zestawu użytkowników lub grup zabezpieczeń w dzierżawie.

Postępuj zgodnie z instrukcjami w dokumentacji firmy Microsoft Entra, aby przypisać użytkowników i grupy do aplikacji.

Konfigurowanie uwierzytelniania OpenShift OpenID

kubeadmin Pobierz poświadczenia. Uruchom następujące polecenie, aby znaleźć hasło użytkownika kubeadmin .

kubeadmin_password=$(az aro list-credentials \
  --name $aro_cluster \
  --resource-group $resource_group \
  --query kubeadminPassword --output tsv)

Zaloguj się do serwera interfejsu API klastra OpenShift przy użyciu następującego polecenia.

oc login $apiServer -u kubeadmin -p $kubeadmin_password

Utwórz wpis tajny openShift do przechowywania wpisu tajnego aplikacji Microsoft Entra.

oc create secret generic openid-client-secret-azuread \
  --namespace openshift-config \
  --from-literal=clientSecret=$client_secret

Utwórz plik oidc.yaml, aby skonfigurować uwierzytelnianie OpenShift OpenID względem identyfikatora Entra firmy Microsoft.

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

Zastosuj konfigurację do klastra.

oc apply -f oidc.yaml

Otrzymasz odpowiedź podobną do poniższej.

oauth.config.openshift.io/cluster configured

Weryfikowanie logowania za pomocą identyfikatora Entra firmy Microsoft

Jeśli teraz wylogujesz się z konsoli internetowej OpenShift i spróbujesz zalogować się ponownie, zostanie wyświetlona nowa opcja logowania się przy użyciu identyfikatora Entra firmy Microsoft. Może być konieczne odczekenie kilku minut.

Log in screen with Microsoft Entra option