共用方式為


授權 Apache Ambari 檢視的使用者

啟用企業安全性套件 (ESP) 的 HDInsight 叢集可提供企業級功能,包括以 Microsoft Entra ID 為基礎的驗證。 您可以將已新增至已獲得存取權之 Microsoft Entra 群組的新使用者同步至叢集,讓這些特定使用者能夠執行特定動作。 當您在 Apache Ambari 中使用使用者、群組和許可權時,ESP HDInsight 叢集和標準 HDInsight 叢集都支援。

Active Directory 使用者可以使用其網域認證來登入叢集節點。 他們也可以使用其網域認證來驗證叢集與其他已核准之端點 (例如 Hue、Ambari 檢視、ODBC、JDBC、PowerShell 和 REST API) 的互動。

警告

請勿變更以 Linux 為基礎之 HDInsight 叢集上的 Ambari 看門狗 (hdinsightwatchdog) 密碼。 變更密碼會破壞在叢集上使用指令碼動作或執行調整作業的能力。

如果您尚未這麼做,請依照這些指示來佈建新 ESP 叢集。

存取 Ambari 管理頁面

若要移至 Ambari 管理頁面,請在 Apache Ambari Web UI 上瀏覽至 https://CLUSTERNAME.azurehdinsight.net。 輸入您建立叢集時所定義的叢集系統管理員使用者名稱和密碼。 接著,從 Ambari 儀表板中,選取 [admin] \(系統管理員\) 功能表底下的 [Manage Ambari] \(管理 Ambari\)

Apache Ambari 儀錶板管理。

新增使用者

透過入口網站新增使用者

  1. 從 [管理] 頁面中,選取 [使用者]

    Apache Ambari 管理頁面使用者。

  2. 選取 [+ 建立本機使用者]

  3. 提供 [使用者名稱] 和 [密碼]。 選取 [儲存]

透過 PowerShell 新增使用者

透過將 CLUSTERNAMENEWUSERPASSWORD 取代為適當的值來編輯下列變數。

# 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 新增使用者

透過將 CLUSTERNAMEADMINPASSWORDNEWUSERUSERPASSWORD 取代為適當的值來編輯下列變數。 指令碼是設計為使用 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 HiveApache TEZ 等等的檢視執行個體。 若要授與對一或多個 Hive 檢視執行個體的存取權,請移至 Ambari 管理頁面

  1. 從管理頁面中,選取左邊 [檢視] \(Views\) 功能表標題底下的 [檢視] \(Views\) 連結。

    Apache Ambari 檢視連結。

  2. 在 [檢視] \(Views\) 頁面上,展開 [HIVE] 資料列。 將 Hive 服務新增到叢集時,會建立一個預設的 Hive 檢視。 您也可以視需要建立更多 Hive 檢視執行個體。 選取一個 Hive 檢視:

    HDInsight 檢視 - Apache Hive 檢視。

  3. 向下捲動到 [檢視] \(Views\) 頁面底部。 在 [權限] \(Permissions\) 區段底下,您有兩個選項來授與網域使用者對檢視的權限:

將權限授與這些使用者授與這些用戶的許可權。

將權限授與這些群組授與這些群組的許可權。

  1. 若要新增使用者,請選取 [Add User] \(新增使用者\) 按鈕。

    • 開始輸入使用者名稱,您將會看到先前已定義之名稱的下拉式清單。

      Apache Ambari 用戶自動完成。

    • 選取使用者名稱,或完成使用者名稱輸入。 若要新增此使用者名稱作為新使用者,請選取 [New] \(新增\) 按鈕。

    • 若要儲存您的變更,請選取藍色核取方塊

      Apache Ambari 授與用戶許可權。

  2. 若要新增群組,請選取 [Add Group] \(新增群組\) 按鈕。

    • 開始輸入群組名稱。 不論是選取現有的群組名稱,還是新增新的群組,程序都與新增使用者相同。

    • 若要儲存您的變更,請選取藍色核取方塊

      Apache Ambari 授與許可權。

當您想要指派權限給使用者來使用該檢視,但不想要讓使用者成為具有額外權限之群組的成員時,將使用者直接新增到檢視會相當有用。 若要降低系統管理額外負擔,將權限指派給群組可能會是更簡單的方式。

授與對 Apache TEZ 檢視的權限

Apache TEZ 檢視執行個體可讓使用者對所有 Tez 作業 (由 Apache Hive 查詢和 Apache Pig 指令碼所提交) 進行監視和偵錯。 佈建叢集時,會建立一個預設的 Tez 檢視執行個體。

若要將使用者和群組指派給 Tez 檢視執行個體,請依照先前所述,展開 [Views] \(檢視\) 頁面上的 [TEZ]TEZ 資料列。

HDInsight 檢視 - Apache Tez 檢視。

若要新增使用者或群組,請重複上一節中的步驟 3 到 5。

將使用者指派給角色

使用者和群組有 5 個安全性角色,依存取權限由高至低列出:

  • 叢集系統管理員
  • 叢集操作員
  • 服務管理員
  • 服務操作員
  • 叢集使用者

若要管理角色,請移至 Ambari 管理頁面,然後選取左邊 [Clusters] \(叢集\) 功能表群組內的 [Roles] \(角色\) 連結。

Apache Ambari 角色功能表連結。

若要查看賦予每個角色的權限清單,請按一下 [Roles] \(角色\) 頁面上 [Roles] \(角色\) 資料表標頭旁邊的藍色問號。

Apache Ambari 角色功能表連結許可權。

在此頁面上,有兩個不同的檢視,可供您用來管理使用者和群組的角色:[Block] \(區塊\) 和 [List] \(清單\)。

[區塊] 檢視

[封鎖] 檢視會在自己的數據列中顯示每個角色,並提供 Assign roles to these users 和 *Assign roles to these groups 選項,如先前所述。

Apache Ambari 角色區塊檢視。

清單檢視

[List] \(清單\) 檢視提供快速編輯功能,分成兩個類別:[Users] \(使用者\) 和 [Groups] \(群組\)。

  • [List] \(清單\) 檢視的 [Users] \(使用者\) 類別會顯示所有使用者的清單,可讓您從下拉式清單中選取每個使用者的角色。

    Apache Ambari 角色清單檢視 - 使用者。

  • [List] \(清單\) 檢視的 [Groups] \(群組\) 類別會顯示所有群組,以及指派給每個群組的角色。 在我們的範例中,群組清單是透過同步處理,從叢集 [Domain] \(網域\) 設定之 [Access user group] \(存取使用者群組\) 屬性中指定的 Microsoft Entra 群組取得。 請參閱建立啟用 ESP 的 HDInsight 叢集

    Apache Ambari 角色清單檢視 - 群組。

    在上圖中, Hive 使用者 群組會獲 指派叢集使用者 角色。 這是一個唯讀角色,可讓該群組的使用者檢視服務組態和叢集計量,但無法進行變更。

以僅具有檢視權限的使用者身分登入 Ambari

我們已經為 Microsoft Entra 網域使用者 "hiveuser1" 指派對 Hive 和 Tez 檢視的權限。 當我們啟動 Ambari Web UI 並輸入此使用者的網域認證 (電子郵件格式的 Microsoft Entra 使用者名稱,以及密碼) 時,系統會將此使用者重新導向到 Ambari [Views] \(檢視\) 頁面。 從此頁面中,使用者可以選取任何可存取的檢視。 使用者無法瀏覽網站的任何其他部分,包括儀表板、服務、主機、警示或系統管理員頁面。

只有檢視的 Apache Ambari 使用者。

以叢集使用者身分登入 Ambari

我們已經將 Microsoft Entra 網域使用者 "hiveuser2" 指派給 [Cluster User] \(叢集使用者\) 角色。 此角色能夠存取儀表板及所有功能表項目。 叢集使用者獲允許使用的選項比系統管理員少。 例如,hiveuser2 可以檢視每個服務的組態,但無法加以編輯。

Apache Ambari 儀錶板顯示。

下一步