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:

Apache Ambari dashboard manage.

Adicionar usuários

Adicionar usuários por meio do portal

  1. Na página de gerenciamento, selecione Usuários.

    Apache Ambari management page users.

  2. Selecione + Criar Usuário Local.

  3. 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.

  1. Na página de gerenciamento, selecione o link Exibições no título de menu Exibições à esquerda.

    Apache Ambari views view links.

  2. 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:

    HDInsight Views - Apache Hive view.

  3. 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áriosGrant permission to these users.

Conceder permissão a esses gruposGrant permission to these groups.

  1. 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.

      Apache Ambari user auto completes.

    • 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.

      Apache Ambari grant user permissions.

  2. 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.

      Apache Ambari grant permissions.

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.

HDInsight Views - Apache Tez view.

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.

Apache Ambari roles menu links.

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.

Apache Ambari roles menu link permissions.

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.

Apache Ambari roles block view.

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.

    Apache Ambari roles list view - users.

  • 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.

    Apache Ambari roles list view - groups.

    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.

Apache Ambari user with views only.

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.

Apache Ambari dashboard display.

Próximas etapas