Share via


設定 Azure Red Hat OpenShift 4 叢集的 Microsoft Entra 驗證 (CLI)

如果您選擇在本機安裝和使用 CLI,本文會要求您執行 Azure CLI 2.30.0 版或更新版本。 執行 az --version 以尋找版本。 如果您需要安裝或升級,請參閱 安裝 Azure CLI

擷取要用來設定 Microsoft Entra 應用程式的叢集特定 URL。

設定資源群組和叢集名稱的變數。

以資源組名取代 < resource_group > ,並以 < 叢集的名稱取代aro_cluster。 >

resource_group=<resource_group>
aro_cluster=<aro_cluster>

建構叢集的 OAuth 回呼 URL,並將其儲存在變數 oauthCallbackURL 中。

注意

AADOAuth 回呼 URL 中的區段應該符合您稍後將設定的 OAuth 識別提供者名稱。

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)

oauthCallbackURL 的格式與自訂網域稍有不同:

  • 如果您使用自訂網域,請執行下列命令,例如 contoso.com

    oauthCallbackURL=https://oauth-openshift.apps.$domain/oauth2callback/AAD
    
  • 如果您未使用自訂網域, $domain 則 會是八個字元的 alnum 字串,並由 延伸 $location.aroapp.io

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

注意

AADOAuth 回呼 URL 中的區段應該符合您稍後將設定的 OAuth 識別提供者名稱。

建立 Microsoft Entra 應用程式以進行驗證

以應用程式的安全密碼取代 < client_secret >

client_secret=<client_secret>

建立 Microsoft Entra 應用程式並擷取已建立的應用程式識別碼。

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

擷取擁有應用程式之訂用帳戶的租使用者識別碼。

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

建立資訊清單檔案,以定義要包含在識別碼權杖中的選擇性宣告

應用程式開發人員可以在其 Microsoft Entra 應用程式中使用 選擇性宣告 ,以指定要在傳送至應用程式之權杖中的宣告。

您可以使用選擇性宣告來:

  • 選取要包含在應用程式之權杖中的額外宣告。
  • 變更 Microsoft Entra ID 在權杖中傳回之特定宣告的行為。
  • 新增和存取應用程式的自訂宣告。

我們將設定 OpenShift 以使用 email 宣告,並切換回來 upn 設定慣用的使用者名稱,方法是將 新增 upn 為 Microsoft Entra ID 所傳回的識別碼權杖的一部分。

建立 manifest.json 檔案來設定 Microsoft Entra 應用程式。

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

使用資訊清單更新 Microsoft Entra 應用程式的 optionalClaims

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

更新 Microsoft Entra 應用程式範圍許可權

若要能夠從 Microsoft Entra ID 讀取使用者資訊,我們需要定義適當的範圍。

新增 Azure Active Directory Graph.User.Read 範圍的許可權 ,以啟用登入和讀取使用者設定檔。

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

注意

除非您將此 Microsoft Entra 識別碼的全域管理員istrator 驗證為全域管理員istrator,否則您可以放心地忽略訊息以授與同意。 第一次使用 Microsoft Entra 認證登入叢集時,系統會要求標準網域使用者授與同意。

將使用者和群組指派給叢集 (選擇性)

根據預設,在 Microsoft Entra 租使用者中註冊的應用程式可供成功驗證的租使用者所有使用者使用。 Microsoft Entra ID 可讓租使用者系統管理員和開發人員將應用程式限制為租使用者中的一組特定使用者或安全性群組。

請遵循 Microsoft Entra 檔上的指示, 將使用者和群組指派給應用程式

設定 OpenShift OpenID 驗證

擷取認證 kubeadmin 。 執行下列命令來尋找使用者的密碼 kubeadmin

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

使用下列命令登入 OpenShift 叢集的 API 伺服器。

oc login $apiServer -u kubeadmin -p $kubeadmin_password

建立 OpenShift 秘密來儲存 Microsoft Entra 應用程式秘密。

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

建立 oidc.yaml 檔案,以針對 Microsoft Entra ID 設定 OpenShift OpenID 驗證。

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

將組態套用至叢集。

oc apply -f oidc.yaml

您會收到類似如下的回應。

oauth.config.openshift.io/cluster configured

透過 Microsoft Entra 識別碼確認登入

如果您現在登出 OpenShift Web 主控台,並嘗試再次登入,您將會看到一個新選項,以使用 Microsoft Entra ID 登入。 您可能需要等候幾分鐘。

Log in screen with Microsoft Entra option