共用方式為


授權 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]:

Apache Ambari dashboard manage.

新增使用者

透過入口網站新增使用者

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

    Apache Ambari management page users.

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

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

透過PowerShell新增使用者

將、 NEWUSERPASSWORD 取代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 新增使用者

將、ADMINPASSWORDNEWUSERUSERPASSWORD 取代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 HiveApache TEZ 等的檢視實例。 若要授與一或多個 Hive 檢視實例的存取權,請移至 Ambari 管理頁面

  1. 從管理頁面中,選取左側 [檢視] 功能表標題下的 [檢視] 連結。

    Apache Ambari views view links.

  2. 在 [檢視] 頁面上,展開 HIVE數據 列。 將Hive服務新增至叢集時,會建立一個預設Hive檢視。 您也可以視需要建立更多 Hive 檢視實例。 選取 Hive 檢視:

    HDInsight Views - Apache Hive view.

  3. 捲動至 [檢視] 頁面底部。 在 [ 許可權] 區段下,您有兩個選項可將其許可權授與網域用戶檢視:

授與這些用戶的許可權Grant permission to these users.

授與這些群組的許可權Grant permission to these groups.

  1. 若要新增使用者,請選取 [ 新增使用者 ] 按鈕。

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

      Apache Ambari user auto completes.

    • 選取或完成輸入用戶名稱。 若要將此使用者名稱新增為新使用者,請選取 [ 新增 ] 按鈕。

    • 若要儲存變更,請選取 藍色複選框

      Apache Ambari grant user permissions.

  2. 若要新增群組,請選取 [ 新增群組 ] 按鈕。

    • 開始輸入組名。 選取現有組名或新增群組的程式與新增使用者的程式相同。

    • 若要儲存變更,請選取 藍色複選框

      Apache Ambari grant permissions.

當您想要將許可權指派給使用者使用該檢視時,將使用者直接新增至檢視很有用,但不希望他們成為具有額外許可權的群組成員。 若要減少系統管理額外負荷,將許可權指派給群組可能更簡單。

將許可權授與 Apache TEZ 檢視

Apache TEZ 檢視實例可讓使用者監視和偵錯 Apache Hive 查詢和 Apache Pig 腳本提交的所有 Tez 作業。 布建叢集時,會建立一個預設的Tez檢視實例。

若要將使用者和群組指派給 Tez 檢視實例,請展開 [檢視] 頁面上的 [TEZ ] 數據列,如先前所述。

HDInsight Views - Apache Tez view.

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

將使用者指派給角色

使用者和群組有五個安全性角色,依降低訪問許可權的順序列出:

  • 叢集 管理員 istrator
  • 叢集運算子
  • 服務管理員
  • 服務操作員
  • 叢集使用者

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

Apache Ambari roles menu links.

若要查看每個角色的許可權清單,請按兩下 [角色] 頁面上 [角色] 資料表標頭旁的藍色問號。

Apache Ambari roles menu link permissions.

在此頁面上,有兩個不同的檢視可用來管理使用者和群組的角色:封鎖和清單。

封鎖檢視

[封鎖] 檢視會在自己的數據列中顯示每個角色,並提供 [指派角色給這些使用者 ] 和 [將這些角色指派給這些群組 ] 選項,如先前所述。

Apache Ambari roles block view.

清單檢視

[清單] 檢視提供兩個類別的快速編輯功能:使用者和群組。

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

    Apache Ambari roles list view - users.

  • [清單] 檢視的 [群組] 類別會顯示所有群組,以及指派給每個群組的角色。 在我們的範例中,群組清單會從叢集網域設定的Access使用者群組屬性中指定的 Microsoft Entra 群組 進行同步處理。 請參閱 建立已啟用 ESP 的 HDInsight 叢集。

    Apache Ambari roles list view - groups.

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

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

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

Apache Ambari user with views only.

以叢集使用者身分登入Ambari

我們已將 Microsoft Entra 網域使用者 「hiveuser2」 指派給 叢集使用者 角色。 此角色能夠存取儀錶板和所有功能表項。 叢集使用者所允許的選項比系統管理員少。 例如,hiveuser2 可以檢視每個服務的組態,但無法編輯它們。

Apache Ambari dashboard display.

下一步