共用方式為


為 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 中。

注意

AAD OAuth 回呼 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
    

注意

AAD OAuth 回呼 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

使用指令清單更新 entra 應用程式的 optionalClaims Microsoft

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標識符的全域管理員身分進行驗證,否則您可以放心地忽略訊息以授與同意。 當使用者第一次使用其 Microsoft Entra 認證登入叢集時,系統會要求標準網域使用者授與同意。

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

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

請遵循 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 登入。 您可能需要等候幾分鐘。

使用 Microsoft Entra 選項登入畫面