Autorizar usuários para o Apache Ambari Views
clusters Azure HDInsight habilitados para ESP (Enterprise Security Package) fornecem recursos de nível empresarial, incluindo a autenticação baseada em Microsoft Entra ID. Você pode sincronizar novos usuários adicionados aos grupos do Microsoft Entra e que receberam acesso ao cluster, permitindo a esses usuários específicos executar determinadas ações. Trabalhar com usuários, grupos e permissões no Apache Ambari é suportado para clusters ESP HDInsight e clusters HDInsight padrão.
Os usuários do Active Directory podem entrar nos nós de cluster usando suas credenciais de domínio. Eles também podem usar suas credenciais de domínio para autenticar interações de cluster com outros terminais aprovados, como Hue, Ambari Views, ODBC, JDBC, PowerShell e APIs REST.
Aviso
Não altere a senha do watchdog Ambari (hdinsightwatchdog) no seu cluster HDInsight baseado em Linux. A alteração da senha interrompe a capacidade de usar as ações de script ou executar operações de dimensionamento com o cluster.
Se você ainda não fez isso, siga estas instruções para provisionar um novo cluster ESP.
Acessar a página de gerenciamento do Ambari
Para obter o página de gerenciamento do Ambari na IU da Web do Apache Ambari, navegue até https://CLUSTERNAME.azurehdinsight.net
. Insira o nome de usuário e a senha do administrador de cluster que você definiu ao criar o cluster. Em seguida, no painel do Ambari, selecione Gerenciar Ambari abaixo do menu admin:
Adicionar usuários
Adicionar usuários por meio do portal
Na página de gerenciamento, selecione Usuários.
Selecione + Criar Usuário Local.
Forneça o Nome de Usuário e a Senha. Selecione Salvar.
Adicionar usuários por meio do PowerShell
Edite as variáveis a seguir, substituindo CLUSTERNAME
, NEWUSER
e PASSWORD
pelos valores apropriados.
# 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
Adicionar usuários por meio do Curl
Edite as variáveis a seguir, substituindo CLUSTERNAME
, ADMINPASSWORD
, NEWUSER
e USERPASSWORD
pelos valores apropriados. O script foi projetado para ser executado com bash. Pequenas modificações seriam necessárias para um prompt de comando do 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"
Conceder permissões às exibição do Hive
O Ambari vem com instâncias de visualização para Apache Hive e Apache TEZ, entre outros. Para conceder acesso a uma ou mais instâncias de exibição do Hive, acesse a página de gerenciamento do Ambari.
Na página de gerenciamento, selecione o link Exibições no título de menu Exibições à esquerda.
Na página Exibições, expanda a linha HIVE. Há uma exibição padrão do Hive que é criada quando o serviço do Hive é adicionado ao cluster. Você também pode criar mais instâncias de exibição do Hive conforme necessário. Selecione uma exibição do Hive:
Role até o fim da página Exibições. Na seção Permissões, você tem duas opções para conceder as permissões para a exibição aos usuários do domínio:
Conceder permissão a esses usuários
Conceder permissão a esses grupos
Para adicionar um usuário, selecione o botão Adicionar Usuário.
Comece a digitar o nome de usuário e você verá uma lista suspensa de nomes previamente definidos.
Selecione ou terminar de digitar o nome de usuário. Para adicionar esse nome de usuário como um novo usuário, selecione o botão Novo.
Para salvar suas alterações, marque a caixa de seleção azul.
Para adicionar um grupo, selecione o botão Adicionar Grupo.
Comece a digitar o nome do grupo. O processo para selecionar um nome de grupo existente ou adicionar um novo grupo é o mesmo da adição de usuários.
Para salvar suas alterações, marque a caixa de seleção azul.
Adicionar usuários diretamente a uma exibição é útil quando você deseja atribuir permissões a um usuário para usar essa exibição, mas não deseja que ele seja membro de um grupo que tenha permissões adicionais. Para reduzir a quantidade de sobrecarga administrativa, pode ser mais simples atribuir permissões a grupos.
Conceder permissões para exibições do Apache TEZ
As instâncias de visualização do Apache TEZ permitem que os usuários monitorem e depurem todos os trabalhos do Tez, enviados por consultas do Apache Hive e scripts do Apache Pig. Há uma instância padrão de exibição do Tez que é criada quando o cluster é provisionado.
Para atribuir usuários e grupos a uma instância de exibição do Tez, expanda a linha TEZ na página Exibições, conforme descrito anteriormente.
Para adicionar usuários ou grupos, repita as etapas 3 a 5 da seção anterior.
Atribuir usuários a funções
Há cinco funções de segurança para usuários e grupos, listados em ordem decrescente de permissões de acesso:
- Administrador do cluster
- Operador do cluster
- Administrador de serviços
- Operador de serviço
- Usuário do cluster
Para gerenciar as funções, acesse a página de gerenciamento do Ambari e, em seguida, selecione o link Funções no grupo de menus Clusters à esquerda.
Para ver a lista de permissões concedidas a cada função, clique no ponto de interrogação azul ao lado do cabeçalho da tabela Funções na página Funções.
Nessa página, há duas exibições diferentes que você pode usar para gerenciar funções para usuários e grupos: Bloco e Lista.
Exibição Bloco
A exibição Bloco exibe cada função em sua própria linha e fornece as opções Atribuir funções a esses usuários e Atribuir funções a esses grupos, conforme descrito anteriormente.
Modo de exibição de lista
A exibição Lista fornece recursos de edição rápidos em duas categorias: Usuários e Grupos.
A categoria Usuários da exibição Lista exibe uma lista de todos os usuários, permitindo que você selecione uma função para cada usuário na lista suspensa.
A categoria Grupos da exibição Lista exibe todos os grupos e a função atribuída a cada grupo. Em nosso exemplo, a lista de grupos é sincronizada com os grupos do Microsoft Entra especificados na propriedade Acessar grupo de usuários das configurações de domínio do cluster. Ver criar um cluster HDInsight com ESP habilitado.
Na imagem acima, o grupo "hiveusers" tem a função Usuário de Cluster atribuída. Essa é uma função somente leitura que permite que os usuários daquele grupo exibam mas não alterem as configurações do serviço e as métricas do cluster.
Fazer logon no Ambari como um usuário somente exibição
Nós atribuímos permissões para exibições do Hive e do Tez ao usuário de domínio do Microsoft Entra "hiveuser1". Quando iniciamos a interface do usuário da web do Ambari e inserimos as credenciais de domínio do usuário (nome de usuário do Microsoft Entra no formato de email e também a senha), o usuário é redirecionado para a página Ambari Views. Neste local, o usuário pode selecionar qualquer exibição acessível. O usuário não pode visitar nenhuma outra parte do site, inclusive as páginas de painel, serviços, hosts, alertas ou de administrador.
Fazer logon no Ambari como um usuário de cluster
Atribuímos nosso usuário de domínio do Microsoft Entra "hiveuser2" à função de Usuário do Cluster. Essa função é capaz de acessar o painel e todos os itens de menu. Um usuário de cluster tem menos opções permitidas que um administrador. Por exemplo, o hiveuser2 pode exibir as configurações de cada um dos serviços, mas não pode editá-las.