在 HDInsight 中使用企業安全性套件
標準的 Azure HDInsight 叢集是一個單一使用者叢集。 它適合大部分以小型應用程式團隊建置大型資料工作負載的公司。 每個使用者都可依需求建立專用的不同叢集,並且在不再需要時加以終結。
許多企業都朝向一種模型發展,亦即由 IT 小組管理叢集,而由多個應用程式小組共用叢集。 這些較大的企業需要在 Azure HDInsight 中針對每個叢集的多使用者存取。
在管理方面,HDInsight 依賴廣受使用的識別提供者 – Active Directory。 將 HDInsight 與 Microsoft Entra Domain Services 整合,即可使用網域認證來存取叢集。
HDInsight 中的虛擬機器 (VM) 會加入您提供的網域。 因此,經過驗證的使用者都能夠順暢地使用在 HDInsight 上執行的所有服務 (Apache Ambari、Apache Hive 伺服器、Apache Ranger、Apache Spark Thrift 伺服器等等)。 接著,系統管理員可使用 Apache Ranger 來建立強式授權原則,為叢集中的資源提供角色型存取控制。
整合 HDInsight 與 Active Directory
開放原始碼 Apache Hadoop 依賴 Kerberos 通訊協定來提供驗證和安全性。 因此,有企業安全性套件 (ESP) 的 HDInsight 叢集節點都會加入 Microsoft Entra Domain Services 所管理的網域。 針對叢集上的 Hadoop 元件,會設定 Kerberos 安全性。
系統會自動建立下列事項:
- 每個 Hadoop 元件的服務主體
- 已加入網域之每部機器的機器主體
- 每個叢集的「組織單位」(OU),用以儲存這些服務和機器原則
總括而言,您必須設定一個具備下列條件的環境:
- Active Directory 網域 (由 Microsoft Entra Domain Services 所管理)。 與 Azure HDInsight 搭配使用的網域名稱不得超過 39 個字元。
- Microsoft Entra Domain Services 中已啟用安全 LDAP (LDAPS)。
- Microsoft Entra Domain Services 虛擬網路與 HDInsight 虛擬網路兩者之間有適當的網路連線能力 (如果您選擇將兩者的虛擬網路分開)。 HDInsight 虛擬網路內的 VM 應可透過虛擬網路對等互連來看到 Microsoft Entra Domain Services。 如果 HDInsight 和 Microsoft Entra Domain Services 部署在相同的虛擬網路中,則會自動提供連線,而不需要採取進一步的動作。
設定不同的網域控制站
HDInsight 目前僅支援 Microsoft Entra Domain Services 作為主要網域控制站,而叢集使用其來進行 Kerberos 通訊。 但您仍然可以使用其他複雜的 Active Directory 設定,只要這類設定能夠讓 Microsoft Entra Domain Services 進行 HDInsight 存取即可。
Microsoft Entra 網域服務
Microsoft Entra Domain Services 提供與 Windows Server Active Directory 完全相容的受控網域。 Microsoft 會負責管理、修補及監視高可用性 (HA) 設定中的網域。 您可以放心地部署叢集,不必擔心網域控制站的維護問題。
使用者、群組和密碼都會從 Microsoft Entra ID 同步。 從您的 Microsoft Entra 執行個體單向同步處理至 Microsoft Entra Domain Services 可讓使用者利用相同的公司認證登入叢集。
如需詳細資訊,請參閱使用 Microsoft Entra Domain Services 來設定具有 ESP 的 HDInsight 叢集。
內部部署 Active Directory 或在 IaaS VM 上的 Active Directory
如果您有內部部署的 Active Directory 執行個體或網域上有更複雜的 Active Directory 設定,則可以使用 Microsoft Entra 來將那些身分識別同步處理到 Microsoft Entra ID。 之後,您可以在該 Active Directory 租用戶上啟用 Microsoft Entra Domain Services。
因為 Kerberos 依賴密碼雜湊,以您必須對 Microsoft Entra Domain Services 啟用密碼雜湊同步處理。
如果您使用與「Active Directory 同盟服務」(AD FS) 的同盟,就必須啟用密碼雜湊同步。(如需建議的設定,請參閱這段影片)。密碼雜湊同步可在您的 AD FS 基礎結構發生失敗時協助進行災害復原,還可協助提供認證外洩防護。 如需詳細資訊,請參閱使用 Microsoft Entra Connect Sync 來啟用密碼雜湊同步處理。
單獨在 IaaS VM 上使用內部部署 Active Directory 或 Active Directory 時,若沒有 Microsoft Entra ID 和 Microsoft Entra Domain Services,則不支援搭配 ESP 的 HDInsight 叢集設定。
注意
自 2024 年 3 月 30 日起,Azure AD 和 MSOnline PowerShell 模組已被淘汰。 若要深入了解,請閱讀淘汰更新。 在此日期之後,對這些模組的支援僅限於對 Microsoft Graph PowerShell SDK 的移轉協助和安全性修正。 淘汰的模組將繼續運作至 2025 年 3 月 30 日。
我們建議移轉至 Microsoft Graph PowerShell 以與 Microsoft Entra ID (以前稱為 Azure AD) 互動。 如需了解常見的移轉問題,請參閱移轉常見問題。 注意:MSOnline 1.0.x 版可能會在 2024 年 6 月 30 日之後發生中斷。
如果您使用同盟且密碼雜湊已正確同步,但卻驗證失敗,請檢查 PowerShell 服務主體是否已啟用雲端密碼驗證。 如果未啟用,則您必須針對 Microsoft Entra 租用戶設定主領域探索 (HRD) 原則。 檢查並設定 HRD 原則:
安裝 Azure AD PowerShell 模組預覽版。
Install-Module AzureAD
使用系統管理員 (租用戶系統管理員) 認證進行連線。
Connect-AzureAD
檢查是否已經建立 Microsoft Azure Powershell 服務主體。
Get-AzureADServicePrincipal -SearchString "Microsoft Azure PowerShell"
如果沒有,請建立服務主體。
$powershellSPN = New-AzureADServicePrincipal -AppId 1950a258-227b-4e31-a9cf-717495945fc2
建立原則並將其附加至此服務主體。
# Determine whether policy exists Get-AzureADPolicy | Where {$_.DisplayName -eq "EnableDirectAuth"} # Create if not exists $policy = New-AzureADPolicy ` -Definition @('{"HomeRealmDiscoveryPolicy":{"AllowCloudPasswordValidation":true}}') ` -DisplayName "EnableDirectAuth" ` -Type "HomeRealmDiscoveryPolicy" # Determine whether a policy for the service principal exist Get-AzureADServicePrincipalPolicy ` -Id $powershellSPN.ObjectId # Add a service principal policy if not exist Add-AzureADServicePrincipalPolicy ` -Id $powershellSPN.ObjectId ` -refObjectID $policy.ID