Udostępnij przez


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

W tym artykule użyjesz interfejsu wiersza polecenia platformy Azure do skonfigurowania uwierzytelniania usługi Microsoft Entra dla klastra usługi Azure Red Hat OpenShift. Zmienne, które są używane w poleceniach, które tworzą adres URL wywołania zwrotnego, rejestrację OAuth aplikacji i klucz tajny klienta, i aktualizują uprawnienia aplikacji.

Wymagania wstępne

Tworzenie zmiennych

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

Ustaw zmienne dla grupy zasobów i nazwy klastra. Zastąp <resourceGroupName> ciąg nazwą grupy zasobów i <aroClusterName> nazwą klastra.

resourceGroup=<resourceGroupName>
aroCluster=<aroClusterName>

Utwórz następujące zmienne, które są używane w innych poleceniach, aby wykonać kroki opisane w tym artykule.

domain=$(az aro show --resource-group $resourceGroup --name $aroCluster --query clusterProfile.domain --output tsv)
location=$(az aro show --resource-group $resourceGroup --name $aroCluster --query location --output tsv)
apiServer=$(az aro show --resource-group $resourceGroup --name $aroCluster --query apiserverProfile.url --output tsv)
webConsole=$(az aro show --resource-group $resourceGroup --name $aroCluster --query consoleProfile.url --output tsv)

Utwórz adres URL wywołania zwrotnego klastra OAuth i zapisz go w zmiennej oauthCallbackURL. Na entraID końcu OAuth adresu URL wywołania zwrotnego musi być zgodna z nazwą dostawcy tożsamości utworzoną OAuth później w pliku oidc.yaml .

Format obiektu oauthCallbackURL zależy od tego, czy używasz domeny niestandardowej.

  • Jeśli masz domenę niestandardową, na contoso.comprzykład , uruchom następujące polecenie.

    oauthCallbackURL=https://oauth-openshift.apps.$domain/oauth2callback/entraID
    
  • Jeśli nie używasz domeny niestandardowej, $domain jest to osiem znaków alfanumeryczny ciąg poprzedzający element $location.aroapp.io.

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

Tworzenie aplikacji Firmy Microsoft Entra na potrzeby uwierzytelniania

Utwórz aplikację Microsoft Entra i ustaw klucz tajny klienta dla aplikacji.

appId=$(az ad app create \
  --display-name aro-auth \
  --web-redirect-uris $oauthCallbackURL \
  --query appId --output tsv)

clientSecret=$(az ad app credential reset --id $appId --query password --output tsv)

Wartości są przechowywane w zmiennych i clientSecret wyświetla komunikat konsoli, że dane wyjściowe polecenia zawierają poświadczenia. Wartość jest używana w dalszej części tego artykułu, a po zakończeniu możesz wyczyścić zmienną clientSecret="" przy użyciu polecenia .

Aby uzyskać więcej informacji na temat poleceń tworzenia aplikacji i poświadczeń, zobacz az ad app create i az ad app credential reset.

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

tenantId=$(az account show --query tenantId --output 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.

Możesz użyć opcjonalnych oświadczeń, aby:

  • Wybierz inne oświadczenia, które mają być uwzględnione w tokenach dla aplikacji.
  • Zmień zachowanie niektórych atrybutów, które Microsoft Entra ID zwraca w tokenach.
  • Dodawać oświadczenia niestandardowe dla aplikacji i uzyskiwać do nich dostęp.

Należy skonfigurować usługę OpenShift, aby użyć email oświadczenia i wrócić 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 w celu skonfigurowania aplikacji Microsoft Entra.

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

Aktualizowanie opcjonalnej aplikacji Microsoft EntraWybierz za pomocą manifestu

Aby użyć pliku manifestu i zaktualizować aplikację optionalClaims, uruchom następujące polecenie.

az ad app update \
  --id $appId \
  --optional-claims @manifest.json

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 programu Microsoft Graph User.Read , aby włączyć logowanie i odczytywać profil użytkownika. Aby uzyskać więcej informacji, zobacz User.Read.

az ad app permission add \
  --api 00000003-0000-0000-c000-000000000000 \
  --api-permissions e1fe6dd8-ba31-4d61-89e7-88639da4683d=Scope \
  --id $appId

Możesz zignorować komunikat, aby udzielić zgody, chyba że użytkownik jest uwierzytelniony jako administrator globalny dla tego identyfikatora Entra firmy Microsoft. Użytkownicy domeny standardowej są proszeni o wyrażenie zgody podczas pierwszego logowania się 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 ograniczyć aplikację Microsoft Entra do zestawu użytkowników.

Konfigurowanie uwierzytelniania OpenShift OpenID

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

kubeadminPassword=$(az aro list-credentials \
  --name $aroCluster \
  --resource-group $resourceGroup \
  --query kubeadminPassword --output tsv)

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

oc login $apiServer --username kubeadmin --password $kubeadminPassword

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=$clientSecret

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: entraID
    mappingMethod: claim
    type: OpenID
    openID:
      clientID: $appId
      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/$tenantId
EOF

Zastosuj konfigurację do klastra.

oc apply -f oidc.yaml

Otrzymasz odpowiedź podobną do poniższego przykładu.

oauth.config.openshift.io/cluster configured

Weryfikowanie logowania przy użyciu identyfikatora Entra firmy Microsoft

Wyloguj się z konsoli internetowej OpenShift i zaloguj się ponownie, a zobaczysz nową opcję logowania za pomocą identyfikatora entraID. Może być konieczne poczekanie kilku minut na udostępnienie opcji.

Zrzut ekranu przedstawiający opcję Identyfikator entra firmy Microsoft w celu zalogowania się do klastra usługi Azure Red Hat OpenShift.