共用方式為


設定 Microsoft Entra ID OAuth2 登入

注意

AKS 上的 Azure HDInsight 將於 2025 年 1 月 31 日退場。 請於 2025 年 1 月 31 日之前,將工作負載移轉至 Microsoft Fabric 或對等的 Azure 產品,以免工作負載突然終止。 訂用帳戶中剩餘的叢集將會停止,並會從主機移除。

在淘汰日期之前,只有基本支援可用。

重要

此功能目前為預覽功能。 Microsoft Azure 預覽版增補使用規定包含適用於 Azure 功能 (搶鮮版 (Beta)、預覽版,或尚未正式發行的版本) 的更多法律條款。 若需此特定預覽版的相關資訊,請參閱 Azure HDInsight on AKS 預覽版資訊。 如有問題或功能建議,請在 AskHDInsight 上提交要求並附上詳細資料,並且在 Azure HDInsight 社群上追蹤我們以獲得更多更新資訊。

本文說明如何允許使用者使用其 Microsoft Entra 帳戶 (「Microsoft 公司或學校帳戶」) 登入 Apache Superset。

下列設定可讓使用者在使用其 Microsoft Entra 登入時自動建立 Superset 帳戶。 Azure 群組可以自動對應到 Superset 角色,進而能夠控制誰可以存取 Superset 以及授與哪些權限。

  1. 建立 Microsoft Entra 服務主體。 這裡說明建立 Microsoft Entra ID 的步驟。

    若要進行測試,請將重新導向 URL 設定為:http://localhost:8088/oauth-authorized/azure

  2. 在金鑰保存庫中建立下列祕密。

    祕密名稱 描述
    用戶端密碼 用於使用者登入的服務主體/應用程式祕密。
  3. 允許您的 AKS 受控識別 ($MANAGED_IDENTITY_RESOURCE) 從 Key Vault 取得及列出祕密

  4. 為您的叢集啟用 Key Vault 祕密提供者登入。 如需詳細資訊,請參閱此處

    az aks enable-addons --addons azure-keyvault-secrets-provider --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP_NAME
    
  5. 準備一個祕密提供者,以允許可從 Superset 機器存取您的服務主體祕密。 如需詳細資訊,請參閱此處

    在 yaml 中更新:

    • {{MSI_CLIENT_ID}} - 指派給 Superset 叢集之受控識別的用戶端識別碼 ($MANAGED_IDENTITY_RESOURCE)。
    • {{KEY_VAULT_NAME}} - 包含祕密的 Azure Key Vault 名稱。
    • {{KEY_VAULT_TENANT_ID}} - Key Vault 所在 Azure 租用戶的識別碼 Guid。

    superset_secretproviderclass.yaml:

    # This is a SecretProviderClass example using aad-pod-identity to access the key vault
    apiVersion: secrets-store.csi.x-k8s.io/v1
    kind: SecretProviderClass
    metadata:
     name: azure-secret-provider
    spec:
    provider: azure
    parameters:
     useVMManagedIdentity: "true" 
     userAssignedIdentityID: "{{MSI_CLIENT_ID}}"
     usePodIdentity: "false"               # Set to true for using aad-pod-identity to access your key vault
     keyvaultName: "{{KEY_VAULT_NAME}}"    # Set to the name of your key vault
     cloudName: ""                         # [OPTIONAL for Azure] if not provided, the Azure environment defaults to AzurePublicCloud
     objects: |
       array:
         - |
           objectName: client-secret
           objectType: secret
     tenantId: "{{KEY_VAULT_TENANT_ID}}"  # The tenant ID of the key vault
    secretObjects:                             
    - secretName: azure-kv-secrets
      type: Opaque
      data:
      - key: AZURE_SECRET
       objectName: client-secret
    
  6. 將 SecretProviderClass 套用至您的叢集。

    kubectl apply -f superset_secretproviderclass.yaml
    
  7. 新增到您的 Superset 設定。

    在 config 中更新:

    • {{AZURE_TENANT}} - 使用者登入的租用戶。
    • {{SERVICE_PRINCIPAL_APPLICATION_ID}} - 您在步驟 1 中建立之服務主體的用戶端/應用程式識別碼。
    • {{VALID_DOMAINS}} - 使用者電子郵件地址的網域允許清單。

    請參閱範例程式碼

重新部署 Superset

helm repo update
helm upgrade --install --values values.yaml superset superset/superset

後續步驟