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 w celu skonfigurowania aplikacji 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 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.