授權 Apache Ambari 檢視的使用者
已啟用企業安全性套件 (ESP) 的 HDInsight 叢集 提供企業級功能,包括 Microsoft Entra ID 型驗證。 您可以 同步新增至已提供叢集存取權的 Microsoft Entra 群組的新使用者 ,讓這些特定使用者能夠執行特定動作。 ESP HDInsight 叢集和標準 HDInsight 叢集都支援在 Apache Ambari 中使用使用者、群組和許可權。
Active Directory 使用者可以使用其網域認證登入叢集節點。 他們也可以使用其網域認證來驗證與 Hue、Ambari Views、ODBC、JDBC、PowerShell 和 REST API 等其他已核准端點的叢集互動。
警告
請勿變更 Linux 型 HDInsight 叢集上 Ambari 監視程式 (hdinsightwatchdog) 的密碼。 變更密碼會中斷使用腳本動作或搭配叢集執行調整作業的能力。
如果您尚未這麼做,請遵循 這些指示 來布建新的ESP叢集。
存取Ambari管理頁面
若要前往 Apache Ambari Web UI 上的 Ambari 管理頁面,請瀏覽至 https://CLUSTERNAME.azurehdinsight.net
。 輸入您在建立叢集時定義的叢集管理員使用者名稱和密碼。 接下來,從 Ambari 儀錶板中,選取 [管理] 功能表下方的 [管理 Ambari]:
新增使用者
透過入口網站新增使用者
從 [管理] 頁面中,選取 [ 使用者]。
選取 [+ 建立本機使用者]。
提供 使用者 名稱和 密碼。 選取 [ 儲存]。
透過PowerShell新增使用者
將、 NEWUSER
和 PASSWORD
取代CLUSTERNAME
為適當的值,以編輯下列變數。
# Set-ExecutionPolicy Unrestricted
# Begin user input; update values
$clusterName="CLUSTERNAME"
$user="NEWUSER"
$userpass='PASSWORD'
# End user input
$adminCredentials = Get-Credential -UserName "admin" -Message "Enter admin password"
$clusterName = $clusterName.ToLower()
$createUserUrl="https://$($clusterName).azurehdinsight.net/api/v1/users"
$createUserBody=@{
"Users/user_name" = "$user"
"Users/password" = "$userpass"
"Users/active" = "$true"
"Users/admin" = "$false"
} | ConvertTo-Json
# Create user
$statusCode =
Invoke-WebRequest `
-Uri $createUserUrl `
-Credential $adminCredentials `
-Method POST `
-Headers @{"X-Requested-By" = "ambari"} `
-Body $createUserBody | Select-Object -Expand StatusCode
if ($statusCode -eq 201) {
Write-Output "User is created: $user"
}
else
{
Write-Output 'User is not created'
Exit
}
$grantPrivilegeUrl="https://$($clusterName).azurehdinsight.net/api/v1/clusters/$($clusterName)/privileges"
$grantPrivilegeBody=@{
"PrivilegeInfo" = @{
"permission_name" = "CLUSTER.USER"
"principal_name" = "$user"
"principal_type" = "USER"
}
} | ConvertTo-Json
# Grant privileges
$statusCode =
Invoke-WebRequest `
-Uri $grantPrivilegeUrl `
-Credential $adminCredentials `
-Method POST `
-Headers @{"X-Requested-By" = "ambari"} `
-Body $grantPrivilegeBody | Select-Object -Expand StatusCode
if ($statusCode -eq 201) {
Write-Output 'Privilege is granted'
}
else
{
Write-Output 'Privilege is not granted'
Exit
}
Write-Host "Pausing for 100 seconds"
Start-Sleep -s 100
$userCredentials = "$($user):$($userpass)"
$encodedUserCredentials = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes($userCredentials))
$zookeeperUrlHeaders = @{ Authorization = "Basic $encodedUserCredentials" }
$getZookeeperurl="https://$($clusterName).azurehdinsight.net/api/v1/clusters/$($clusterName)/services/ZOOKEEPER/components/ZOOKEEPER_SERVER"
# Perform query with new user
$zookeeperHosts =
Invoke-WebRequest `
-Uri $getZookeeperurl `
-Method Get `
-Headers $zookeeperUrlHeaders
Write-Output $zookeeperHosts
透過 Curl 新增使用者
將、ADMINPASSWORD
、 NEWUSER
和 USERPASSWORD
取代CLUSTERNAME
為適當的值,以編輯下列變數。 腳本的設計目的是要以bash執行。 Windows 命令提示字元需要稍微修改。
export CLUSTER_NAME="CLUSTERNAME"
export ADMIN_PASSWORD='ADMINPASSWORD'
export USER="NEWUSER"
export USER_PASSWORD='USERPASSWORD'
# create user
curl -k -u admin:$ADMIN_PASSWORD -H "X-Requested-By: ambari" -X POST \
-d "{\"Users/user_name\":\"$USER\",\"Users/password\":\"$USER_PASSWORD\",\"Users/active\":\"true\",\"Users/admin\":\"false\"}" \
https://$CLUSTER_NAME.azurehdinsight.net/api/v1/users
echo "user created: $USER"
# grant permissions
curl -k -u admin:$ADMIN_PASSWORD -H "X-Requested-By: ambari" -X POST \
-d '[{"PrivilegeInfo":{"permission_name":"CLUSTER.USER","principal_name":"'$USER'","principal_type":"USER"}}]' \
https://$CLUSTER_NAME.azurehdinsight.net/api/v1/clusters/$CLUSTER_NAME/privileges
echo "Privilege is granted"
echo "Pausing for 100 seconds"
sleep 10s
# perform query using new user account
curl -k -u $USER:$USER_PASSWORD -H "X-Requested-By: ambari" \
-X GET "https://$CLUSTER_NAME.azurehdinsight.net/api/v1/clusters/$CLUSTER_NAME/services/ZOOKEEPER/components/ZOOKEEPER_SERVER"
將許可權授與 Apache Hive 檢視
Ambari 隨附 Apache Hive 和 Apache TEZ 等的檢視實例。 若要授與一或多個 Hive 檢視實例的存取權,請移至 Ambari 管理頁面。
從管理頁面中,選取左側 [檢視] 功能表標題下的 [檢視] 連結。
在 [檢視] 頁面上,展開 HIVE數據 列。 將Hive服務新增至叢集時,會建立一個預設Hive檢視。 您也可以視需要建立更多 Hive 檢視實例。 選取 Hive 檢視:
捲動至 [檢視] 頁面底部。 在 [ 許可權] 區段下,您有兩個選項可將其許可權授與網域用戶檢視:
授與這些用戶的許可權
授與這些群組的許可權
若要新增使用者,請選取 [ 新增使用者 ] 按鈕。
開始輸入使用者名稱,您會看到先前定義名稱的下拉式清單。
選取或完成輸入用戶名稱。 若要將此使用者名稱新增為新使用者,請選取 [ 新增 ] 按鈕。
若要儲存變更,請選取 藍色複選框。
若要新增群組,請選取 [ 新增群組 ] 按鈕。
開始輸入組名。 選取現有組名或新增群組的程式與新增使用者的程式相同。
若要儲存變更,請選取 藍色複選框。
當您想要將許可權指派給使用者使用該檢視時,將使用者直接新增至檢視很有用,但不希望他們成為具有額外許可權的群組成員。 若要減少系統管理額外負荷,將許可權指派給群組可能更簡單。
將許可權授與 Apache TEZ 檢視
Apache TEZ 檢視實例可讓使用者監視和偵錯 Apache Hive 查詢和 Apache Pig 腳本提交的所有 Tez 作業。 布建叢集時,會建立一個預設的Tez檢視實例。
若要將使用者和群組指派給 Tez 檢視實例,請展開 [檢視] 頁面上的 [TEZ ] 數據列,如先前所述。
若要新增使用者或群組,請重複上一節中的步驟 3 - 5。
將使用者指派給角色
使用者和群組有五個安全性角色,依降低訪問許可權的順序列出:
- 叢集 管理員 istrator
- 叢集運算子
- 服務管理員
- 服務操作員
- 叢集使用者
若要管理角色,請移至 [Ambari 管理] 頁面,然後選取左側 [叢集] 功能表群組內的 [角色] 連結。
若要查看每個角色的許可權清單,請按兩下 [角色] 頁面上 [角色] 資料表標頭旁的藍色問號。
在此頁面上,有兩個不同的檢視可用來管理使用者和群組的角色:封鎖和清單。
封鎖檢視
[封鎖] 檢視會在自己的數據列中顯示每個角色,並提供 [指派角色給這些使用者 ] 和 [將這些角色指派給這些群組 ] 選項,如先前所述。
清單檢視
[清單] 檢視提供兩個類別的快速編輯功能:使用者和群組。
[清單] 檢視的 [使用者] 類別會顯示所有使用者的清單,讓您在下拉式清單中選取每個使用者的角色。
[清單] 檢視的 [群組] 類別會顯示所有群組,以及指派給每個群組的角色。 在我們的範例中,群組清單會從叢集網域設定的Access使用者群組屬性中指定的 Microsoft Entra 群組 進行同步處理。 請參閱 建立已啟用 ESP 的 HDInsight 叢集。
在上圖中,「hiveusers」群組會指派 「叢集使用者 」角色。 這是一個只讀角色,可讓該群組的用戶檢視,但無法變更服務組態和叢集計量。
以僅限檢視的使用者身分登入Ambari
我們已將 Microsoft Entra 網域使用者 「hiveuser1」 權限指派給 Hive 和 Tez 檢視。 當我們啟動Ambari Web UI並輸入此使用者的網域認證時(電子郵件格式和密碼的 Microsoft Entra 使用者名稱),使用者會重新導向至 [Ambari 檢視] 頁面。 從這裡,用戶可以選取任何可存取的檢視。 使用者無法瀏覽網站的任何其他部分,包括儀錶板、服務、主機、警示或系統管理員頁面。
以叢集使用者身分登入Ambari
我們已將 Microsoft Entra 網域使用者 「hiveuser2」 指派給 叢集使用者 角色。 此角色能夠存取儀錶板和所有功能表項。 叢集使用者所允許的選項比系統管理員少。 例如,hiveuser2 可以檢視每個服務的組態,但無法編輯它們。