Mengonfigurasi autentikasi Microsoft Entra untuk kluster Azure Red Hat OpenShift 4 (CLI)

Jika Anda memilih untuk menginstal dan menggunakan CLI secara lokal, artikel ini mengharuskan Anda menjalankan Azure CLI versi 2.30.0 atau yang lebih baru. Jalankan az --version untuk menemukan versinya. Jika Anda perlu memasang atau meningkatkan, lihat Memasang Azure CLI.

Ambil URL khusus kluster Anda yang akan digunakan untuk mengonfigurasi aplikasi Microsoft Entra.

Atur variabel untuk grup sumber daya dan nama kluster.

Ganti <resource_group> dengan nama dan <aro_cluster> grup sumber daya Anda dengan nama kluster Anda.

resource_group=<resource_group>
aro_cluster=<aro_cluster>

Buat URL callback OAuth kluster dan simpan dalam variabel oauthCallbackURL.

Catatan

Bagian AAD dalam URL callback OAuth harus cocok dengan nama penyedia identitas OAuth yang akan Anda siapkan nanti.

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 oauthCallbackURL sedikit berbeda dengan domain kustom:

  • Jalankan perintah berikut ini jika Anda menggunakan domain kustom, misalnya contoso.com.

    oauthCallbackURL=https://oauth-openshift.apps.$domain/oauth2callback/AAD
    
  • Jika Anda tidak menggunakan domain kustom maka $domain akan menjadi string alnum delapan karakter dan diperluas oleh $location.aroapp.io.

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

Catatan

Bagian AAD dalam URL callback OAuth harus cocok dengan nama penyedia identitas OAuth yang akan Anda siapkan nanti.

Membuat aplikasi Microsoft Entra untuk autentikasi

Ganti <client_secret> dengan kata sandi aman untuk aplikasi.

client_secret=<client_secret>

Buat aplikasi Microsoft Entra dan ambil pengidentifikasi aplikasi yang dibuat.

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

Ambil ID penyewa langganan yang memiliki aplikasi.

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

Buat file manifes untuk menentukan klaim opsional yang disertakan dalam Token ID

Pengembang aplikasi dapat menggunakan klaim opsional dalam aplikasi Microsoft Entra mereka untuk menentukan klaim mana yang mereka inginkan dalam token yang dikirim ke aplikasi mereka.

Anda dapat menggunakan klaim opsional untuk:

  • Memilih klaim tambahan untuk disertakan dalam token aplikasi Anda.
  • Ubah perilaku klaim tertentu yang dikembalikan ID Microsoft Entra dalam token.
  • Menambahkan dan mengakses klaim kustom untuk aplikasi Anda.

Kami akan mengonfigurasi OpenShift untuk menggunakan email klaim dan kembali ke upn untuk mengatur Nama Pengguna Pilihan dengan menambahkan upn sebagai bagian dari token ID yang dikembalikan oleh ID Microsoft Entra.

Buat file manifest.json untuk mengonfigurasi aplikasi Microsoft Entra.

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

Memperbarui opsional Aplikasi Microsoft EntraClaims dengan manifes

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

Memperbarui izin cakupan aplikasi Microsoft Entra

Untuk dapat membaca informasi pengguna dari ID Microsoft Entra, kita perlu menentukan cakupan yang tepat.

Tambahkan izin untuk lingkup Azure Layanan Domain Active Directory Graph.User.Read untuk memberikan izin masuk dan membaca profil pengguna.

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

Catatan

Anda dapat dengan aman mengabaikan pesan untuk memberikan persetujuan kecuali Anda diautentikasi sebagai Administrator Global untuk ID Microsoft Entra ini. Pengguna domain standar akan diminta untuk memberikan persetujuan ketika mereka pertama kali masuk ke kluster menggunakan kredensial Microsoft Entra mereka.

Tetapkan pengguna dan grup ke kluster (opsional)

Aplikasi yang terdaftar di penyewa Microsoft Entra adalah, secara default, tersedia untuk semua pengguna penyewa yang berhasil mengautentikasi. ID Microsoft Entra memungkinkan administrator dan pengembang penyewa membatasi aplikasi ke sekumpulan pengguna atau grup keamanan tertentu di penyewa.

Ikuti instruksi pada dokumentasi Microsoft Entra untuk menetapkan pengguna dan grup ke aplikasi.

Konfigurasi autentikasi OpenShift OpenID

Ambil info masuk kubeadmin. Jalankan perintah berikut untuk menemukan kata sandi untuk pengguna kubeadmin.

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

Masuk ke server API kluster OpenShift menggunakan perintah berikut.

oc login $apiServer -u kubeadmin -p $kubeadmin_password

Buat rahasia OpenShift untuk menyimpan rahasia aplikasi Microsoft Entra.

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

Buat file oidc.yaml untuk mengonfigurasi autentikasi OpenShift OpenID terhadap 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

Terapkan konfigurasi ke kluster.

oc apply -f oidc.yaml

Anda akan mendapatkan kembali respons yang serupa dengan yang berikut ini.

oauth.config.openshift.io/cluster configured

Verifikasi login melalui ID Microsoft Entra

Jika Anda sekarang keluar dari OpenShift Web Console dan mencoba masuk lagi, Anda akan disajikan dengan opsi baru untuk masuk dengan ID Microsoft Entra. Anda mungkin perlu menunggu selama beberapa menit.

Log in screen with Microsoft Entra option