Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Skonfiguruj Azure Red Hat OpenShift z hostowanymi płaszczyznami sterowania, aby użyć zewnętrznego dostawcy tożsamości OpenID Connect (OIDC) do uwierzytelniania zamiast wbudowanego serwera OAuth OpenShift. Chociaż wbudowany serwer OAuth obsługuje różnych dostawców tożsamości, ma ograniczone możliwości. Integrując bezpośrednio zewnętrznych dostawców tożsamości OIDC z usługą Azure Red Hat OpenShift z hostowanymi płaszczyznami sterowania, można włączyć przepływy pracy między maszynami, takie jak dostęp za pomocą interfejsu wiersza polecenia, oraz uzyskać funkcje, których nie oferuje wbudowany serwer OAuth.
W tym artykule opisano sposób konfigurowania Microsoft Entra ID jako zewnętrznego dostawcy uwierzytelniania w celu zapewnienia dostępu zarówno do interfejsu wiersza polecenia, jak i konsoli OpenShift.
Wymagania wstępne
- Azure CLI w wersji 2.67.0 lub nowszej. Użyj polecenia
az --version, aby znaleźć zainstalowaną wersję. Jeśli musisz zainstalować lub uaktualnić, zobacz Install Azure CLI. - Upewnij się, że zainstalowano tymczasowe poświadczenia administratora.
- Uprawnienie do rejestrowania aplikacji w Twojej dzierżawie Microsoft Entra ID. Domyślnie wszyscy użytkownicy mogą rejestrować aplikacje. Jeśli to ustawienie zostało zmienione na "Nie", potrzebna jest rola dewelopera aplikacji lub administratora aplikacji .
- Zainstalowano rozszerzenie CLI ARO HCP. Jeśli musisz go zainstalować, uruchom polecenie
az extension add --name aro.
Przygotowywanie zmiennych środowiskowych
Upewnij się, że zdefiniowano następujące zmienne środowiskowe:
CUSTOMER_RG_NAME="<resource-group-name>"
CLUSTER_NAME="<cluster-name>"
EXTERNAL_AUTH_DISPLAY_NAME="${CLUSTER_NAME}-auth"
EXTERNAL_AUTH_NAME="entra"
TENANT_ID=$(az account show --query tenantId --output tsv)
ISSUER_URL="https://login.microsoftonline.com/${TENANT_ID}/v2.0"
SUBSCRIPTION_ID=$(az account show --query id --output tsv)
CUSTOMER_RG_NAME="<resource-group-name>"
CLUSTER_NAME="<cluster-name>"
EXTERNAL_AUTH_DISPLAY_NAME="${CLUSTER_NAME}-auth"
EXTERNAL_AUTH_NAME="entra"
TENANT_ID=$(az account show --query tenantId --output tsv)
ISSUER_URL="https://login.microsoftonline.com/${TENANT_ID}/v2.0"
Konfigurowanie usługi Microsoft Entra ID
Pobierz adres URL wywołania zwrotnego mechanizmu uwierzytelniania OpenShift.
CONSOLE_URL=$(az aro hcp cluster show \ --resource-group "${CUSTOMER_RG_NAME}" \ --name "${CLUSTER_NAME}" \ --query properties.console.url --output tsv) CONSOLE_CALLBACK_URL="${CONSOLE_URL}/auth/callback"Zarejestruj nową aplikację w usłudze Microsoft Entra ID. Aby uzyskać dostęp do serwera API za pośrednictwem narzędzi wiersza poleceń
oclubkubectl, dodaj drugi adres URI przekierowania.Poniższy przykład tworzy aplikację Microsoft Entra ID z dwoma adresami URI przekierowania: wymaganym adresem URL wywołania zwrotnego uwierzytelniania OpenShift oraz drugim adresem URI przekierowania na potrzeby dostępu z poziomu interfejsu wiersza polecenia:
CLIENT_ID=$(az ad app create \ --display-name "${EXTERNAL_AUTH_DISPLAY_NAME}" \ --web-redirect-uris ${CONSOLE_CALLBACK_URL} http://localhost:8000 \ --query appId --output tsv)Utwórz klucz tajny klienta dla aplikacji. Komunikat w konsoli informuje, że dane wyjściowe polecenia zawierają dane uwierzytelniające. Użyj klucza tajnego klienta w dalszej części tego artykułu.
Note
Po wykonaniu wszystkich kroków w tym artykule wyczyść zmienną. Zobacz Czyszczenie zmiennych poufnych.
CLIENT_SECRET=$(az ad app credential reset --id ${CLIENT_ID} --query password --output tsv)
Tworzenie zewnętrznego dostawcy uwierzytelniania
Poniższe mapowania oświadczeń określają, jak OpenShift ma odczytywać oświadczenia preferred_username i groups, których emitowanie skonfigurowano w usłudze Microsoft Entra ID.
Utwórz zewnętrznego dostawcę uwierzytelniania dla Azure Red Hat OpenShift z hostowanymi płaszczyznami sterowania.
az aro hcp cluster external-auth create \ --resource-group "${CUSTOMER_RG_NAME}" \ --cluster-name "${CLUSTER_NAME}" \ --name "${EXTERNAL_AUTH_NAME}" \ --issuer-url "${ISSUER_URL}" \ --issuer-audience "[${CLIENT_ID}]" \ --claim groups \ --username-claim preferred_username \ --username-prefix-policy NoPrefix \ --client client-id="${CLIENT_ID}" component-name=console auth-client-namespace=openshift-console extra-scopes="[profile]" type=Confidential \ --client client-id="${CLIENT_ID}" component-name=cli auth-client-namespace=openshift-console extra-scopes="[profile]" type=PublicSprawdź konfigurację zewnętrznego dostawcy uwierzytelniania.
az aro hcp cluster external-auth show \ --resource-group "${CUSTOMER_RG_NAME}" \ --cluster-name "${CLUSTER_NAME}" \ --name "${EXTERNAL_AUTH_NAME}"
Skonfiguruj zewnętrznego dostawcę uwierzytelniania dla Azure Red Hat OpenShift z hostowanymi płaszczyznami sterowania. Aby skonfigurować zewnętrznego dostawcę uwierzytelniania, zdefiniuj zasób
externalAuths. Poniższy przykład przedstawia zasóbexternalAuthsw pliku Bicep. Aby uzyskać więcej informacji na temat właściwości zewnętrznego dostawcy uwierzytelniania, zobacz Właściwości konfiguracji uwierzytelniania zewnętrznego.Zapisz następujący przykład jako
externalauth.bicep:@description('The name of the external auth provider configuration') param externalAuthName string @description('The issuer url') param issuerURL string @description('The client ID') param clientID string @description('Name of the hypershift cluster') param clusterName string resource hcp 'Microsoft.RedHatOpenShift/hcpOpenShiftClusters@2026-09-01-preview' existing = { name: clusterName } resource externalauth 'Microsoft.RedHatOpenShift/hcpOpenShiftClusters/externalAuths@2026-09-01-preview' = { parent: hcp name: externalAuthName properties: { claim: { mappings: { username: { claim: 'preferred_username' prefixPolicy: 'NoPrefix' } groups: { claim: 'groups' } } } clients: [ { clientId: clientID component: { name: 'console' authClientNamespace: 'openshift-console' } extraScopes: [ 'profile' ] type: 'Confidential' } { clientId: clientID component: { name: 'cli' authClientNamespace: 'openshift-console' } extraScopes: [ 'profile' ] type: 'Public' } ] issuer: { url: issuerURL audiences: [ clientID ] } } }Wdróż plik Bicep.
az deployment group create \ --name 'aro-hcp-auth' \ --subscription "${SUBSCRIPTION_ID}" \ --resource-group "${CUSTOMER_RG_NAME}" \ --template-file externalauth.bicep \ --parameters \ externalAuthName="${EXTERNAL_AUTH_NAME}" \ issuerURL="${ISSUER_URL}" \ clientID="${CLIENT_ID}" \ clusterName="${CLUSTER_NAME}"Sprawdź konfigurację zewnętrznego dostawcy uwierzytelniania.
az aro hcp cluster external-auth show \ --resource-group "${CUSTOMER_RG_NAME}" \ --cluster-name "${CLUSTER_NAME}" \ --name "${EXTERNAL_AUTH_NAME}"
Konfigurowanie uwierzytelniania i autoryzacji w usłudze OpenShift
Po utworzeniu zewnętrznego dostawcy uwierzytelniania zaloguj się do Azure Red Hat OpenShift za pomocą klastra hostowanych płaszczyzn sterowania, aby skonfigurować dostęp dla poufnego klienta (konsola OpenShift) i skonfigurować kontrolę dostępu opartą na rolach (RBAC).
Jeśli nie masz tymczasowego poświadczenia administracyjnego dla Azure Red Hat OpenShift z klastrem hostowanych płaszczyzn sterowania, wygeneruj je. Aby uzyskać więcej informacji, zobacz Nawiązywanie połączenia z klastrem Azure Red Hat OpenShift z hostowanymi płaszczyznami sterowania.
Utwórz klucz tajny klienta w usłudze OpenShift.
oc create secret generic ${EXTERNAL_AUTH_NAME}-console-openshift-console \ --namespace openshift-config \ --from-literal=clientSecret=${CLIENT_SECRET}(Opcjonalnie) W razie potrzeby przypisz użytkowników i grupy do Azure Red Hat OpenShift za pomocą klastra hostowanych płaszczyzn sterowania.
Domyślnie wszyscy użytkownicy w dzierżawie Microsoft Entra mogą uzyskiwać dostęp do zarejestrowanych aplikacji po pomyślnym uwierzytelnieniu. Microsoft Entra ID umożliwia administratorom dzierżawy i deweloperom ograniczenie aplikacji do określonego zestawu użytkowników lub grup zabezpieczeń w dzierżawie.
Aby ograniczyć aplikację Microsoft Entra do określonego zestawu użytkowników, zobacz Ograniczanie aplikacji Microsoft Entra do zestawu użytkowników.
Skonfiguruj kontrolę dostępu na podstawie ról, aby udzielić użytkownikowi lub grupie dostępu do roli administratora klastra.
Domyślnie usługa OpenShift nie udziela uprawnień do wykonywania żadnej akcji wewnątrz klastra, gdy użytkownik po raz pierwszy się zaloguje. Azure Red Hat OpenShift z hostowanymi płaszczyznami sterowania obejmuje znaczną liczbę wstępnie skonfigurowanych ról, w tym rolę administratora klastra, która zapewnia pełny dostęp i kontrolę nad klastrem. Klaster nie tworzy automatycznie obiektów
RoleBindingiClusterRoleBindingdla uwierzytelnionych użytkowników; musisz samodzielnie utworzyć te powiązania.W tym przykładzie pokazano, jak utworzyć
ClusterRoleBindingobiekt, który przyznaje określonemu użytkownikowi Microsoft Entra ID lub grupie rolę administratora klastra. Można również utworzyć powiązanie roli z grupą zabezpieczeń, postępując zgodnie z instrukcjami w sekcji Korzystanie z RBAC.Pobierz user principal name (UPN) użytkownika Microsoft Entra ID użytkownika, któremu chcesz przyznać dostęp.
USER_NAME=$(az ad user show --id "<user-email>" --query userPrincipalName -o tsv)Utwórz obiekt
ClusterRoleBinding, który nadaje użytkownikowi rolę cluster-admin.oc apply -f - <<EOF apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: aro-admin roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - apiGroup: rbac.authorization.k8s.io kind: User name: $USER_NAME EOF
Weryfikowanie konfiguracji uwierzytelniania zewnętrznego
Po skonfigurowaniu uwierzytelniania zewnętrznego dla klastra można zweryfikować konfigurację interfejsu wiersza polecenia platformy OpenShift i konsoli internetowej.
Weryfikowanie dostępu przy użyciu konsoli internetowej OpenShift
Pobierz adres URL konsoli sieci Web OpenShift.
az aro hcp cluster show \ --resource-group "${CUSTOMER_RG_NAME}" \ --name "${CLUSTER_NAME}" \ --query properties.console.url --output tsvOtwórz adres URL w przeglądarce internetowej i zaloguj się.
Zweryfikuj dostęp przy użyciu OpenShift CLI
Aby zalogować się do narzędzia wiersza polecenia OpenShift, możesz użyć Microsoft Entra ID. Ta metoda uwierzytelniania działa, ponieważ wtyczka poświadczeń kubelogin client-go jest teraz wbudowana bezpośrednio w narzędzie.
Pobierz adres URL interfejsu API.
API_URL=$(az aro hcp cluster show \ --resource-group "${CUSTOMER_RG_NAME}" \ --name "${CLUSTER_NAME}" \ --query properties.api.url --output tsv)Zaloguj się do klastra, uruchamiając następujące polecenie:
oc login $API_URL \ --exec-plugin=oc-oidc \ --client-id=$CLIENT_ID \ --client-secret=$CLIENT_SECRET \ --issuer-url=$ISSUER_URL \ --extra-scopes=profile \ --callback-port=8000Polecenie wyświetla adres URL. Użyj adresu URL, aby ukończyć proces uwierzytelniania w przeglądarce. Po zakończeniu interfejs wiersza polecenia OpenShift jest uwierzytelniony.
Sprawdź, czy dane logowania są prawidłowo skonfigurowane:
oc auth whoamiPrzykładowy wynik:
ATTRIBUTE VALUE Username user@email.com Groups [<group-id> system:authenticated]
Wyczyść zmienne wrażliwe
Po sprawdzeniu, czy uwierzytelnianie zewnętrzne działa, usuń poufne zmienne z bieżącej sesji powłoki.
CLIENT_SECRET=""