你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
授权用户访问 Apache Ambari 视图
支持企业安全性套餐 (ESP) 的 HDInsight 群集提供了企业级功能,包括基于 Microsoft Entra ID 的身份验证。 可以将已添加的新用户同步到已拥有群集访问权限的 Microsoft Entra 组,从而允许这些特定用户执行某些操作。 ESP HDInsight 群集和标准 HDInsight 群集均支持使用 Apache Ambari 中的用户、组和权限。
Active Directory 用户可以使用其域凭据登录到群集节点。 他们还可以使用自己的域凭据在其他已批准的终结点(例如 Hue、Ambari 视图、ODBC、JDBC、PowerShell 和 REST API)上进行身份验证,以便与群集交互。
警告
不要在基于 Linux 的 HDInsight 群集上更改 Ambari 监视程序 (hdinsightwatchdog) 的密码。 更改密码将导致无法通过群集使用脚本操作或执行缩放操作。
如果尚未如此操作,请按照这些说明预配新的 ESP 群集。
访问 Ambari 管理页
要访问 Apache Ambari Web UI 上的 Ambari 管理页面,请浏览到 https://CLUSTERNAME.azurehdinsight.net
。 输入创建群集时定义的群集管理员用户名和密码。 接下来,在 Ambari 仪表板中,选择“管理”菜单下面的“管理 Ambari”:
添加用户
通过门户添加用户
在管理页中,选择“用户”。
选择“+ 创建本地用户”。
提供“用户名”和“密码” 。 选择“保存”。
通过 PowerShell 添加用户
编辑以下变量,方法是将 CLUSTERNAME
、NEWUSER
和 PASSWORD
替换为适当的值。
# 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 添加用户
编辑以下变量,方法是将 CLUSTERNAME
、ADMINPASSWORD
、NEWUSER
和 USERPASSWORD
替换为适当的值。 该脚本旨在使用 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。
将用户分配到角色
用户和组有五个安全角色,下面按访问权限的降序列出了这些角色:
- 群集管理员
- 群集操作员
- 服务管理员
- 服务操作员
- 群集用户
若要管理角色,请转到 Ambari 管理页,在左侧的“群集”菜单组中选择“角色”链接。
若要查看授予每个角色的权限列表,请单击“角色”页上“角色”表标题旁边的蓝色问号。
在此页上,有两个可用于管理用户角色和组角色的不同视图:“块”和“列表”。
“块”视图
“块”独行显示每个角色,提供前面所述的“向这些用户分配角色”和“向这些组分配角色”选项。
列表视图
“列表”视图提供两种类别的快速编辑功能:“用户”和“组”。
“列表”视图的“用户”类别显示所有用户的列表,可让我们在下拉列表中选择每个用户的角色。
“列表”视图的“组”类别显示所有组,以及分配给每个组的角色。 在本示例中,已从群集域设置的“访问用户组”属性中指定的 Microsoft Entra 组同步了组列表。 请参阅在启用了 ESP 的情况下创建 HDInsight 群集。
在上图中,为“hiveusers”组分配了“群集用户”角色。 这是一个只读的角色,允许该组的用户查看但不允许更改服务配置和群集指标。
以仅限查看用户的身份登录到 Ambari
我们向 Microsoft Entra 域用户“hiveuser1”分配了访问 Hive 和 Tez 视图的权限。 当我们启动 Ambari Web UI 并输入该用户的域凭据(电子邮件格式的 Microsoft Entra 用户名,以及密码)时,系统会将该用户重定向到 Ambari 的“视图”页。 在此页中,该用户可以选择任何可访问的视图。 该用户无法访问站点的其他任何部分,包括仪表板、服务、主机、警报或管理页。
以群集用户的身份登录到 Ambari
我们已将 Microsoft Entra 域用户“hiveuser2”分配到“群集用户”角色。 此角色有权访问仪表板和所有菜单项。 群集用户有权使用的选项比管理员要少。 例如,hiveuser2 可以查看每个服务的配置,但不能编辑这些配置。