Autorizzare gli utenti per le visualizzazioni di Apache Ambari

I cluster HDInsight abilitati per Enterprise Security Package (ESP) offrono funzionalità di livello aziendale, inclusa l'autenticazione basata su ID Di Microsoft Entra. È possibile sincronizzare i nuovi utenti aggiunti ai gruppi di Microsoft Entra a cui è stato fornito l'accesso al cluster, consentendo a tali utenti specifici di eseguire determinate azioni. L'utilizzo di utenti, gruppi e autorizzazioni in Apache Ambari è supportato sia per cluster HDInsight con ESP sia per cluster HDInsight standard.

Gli utenti di Active Directory possono accedere ai nodi del cluster tramite le proprie credenziali di dominio che consentono anche di autenticare le interazioni tra cluster con antri endpoint approvati, ad esempio Hue, viste di Ambari, ODBC, JDBC, PowerShell e API REST.

Avviso

Non modificare la password del watchdog Ambari (hdinsightwatchdog) nel cluster HDInsight basato su Linux. Se si modifica la password, non sarà più possibile usare azioni script o eseguire operazioni di ridimensionamento con il cluster.

Se non è già stato fatto, seguire queste istruzioni per effettuare il provisioning di un nuovo cluster ESP.

Accedere alla pagina di gestione di Ambari

Per accedere alla pagina di gestione di Ambari, nell'interfaccia utente Web di Apache Ambari passare a https://CLUSTERNAME.azurehdinsight.net. Immettere il nome utente e la password di amministratore del cluster definiti durante la creazione del cluster. Nel dahsboard di Ambari selezionare Manage Ambari (Gestisci Ambari) nel menu admin (amministratore):

Apache Ambari dashboard manage.

Aggiungere utenti

Aggiungere utenti tramite il portale

  1. Nella pagina di gestione selezionare Utenti.

    Apache Ambari management page users.

  2. Selezionare + Crea utente locale.

  3. Specificare nome utente e password. Selezionare Salva.

Aggiungere utenti tramite PowerShell

Modificare le variabili seguenti sostituendo CLUSTERNAME, NEWUSERe PASSWORD con i valori appropriati.

# 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

Aggiungere utenti tramite Curl

Modificare le variabili seguenti sostituendo CLUSTERNAME, ADMINPASSWORD, NEWUSERe USERPASSWORD con i valori appropriati. Lo script è progettato per essere eseguito con bash. Per un prompt dei comandi di Windows sono necessarie modifiche minime.

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"

Concedere le autorizzazioni per le viste Apache Hive

Ambari è disponibile con le istanze di viste per Apache Hive e Apache TEZ, tra gli altri. Per concedere l'accesso a una o più istanze di viste Hive, andare alla pagina di gestione di Ambari.

  1. Nella pagina di gestione selezionare il collegamento Views (Viste) nell'intestazione del menu Views (Viste) a sinistra.

    Apache Ambari views view links.

  2. Nella pagina Views (Viste) espandere la riga HIVE. È disponibile una vista Hive predefinita creata quando il servizio Hive viene aggiunto al cluster. È anche possibile creare più istanze di viste Hive in base alle esigenze. Selezionare una vista Hive:

    HDInsight Views - Apache Hive view.

  3. Scorrere verso il basso nella pagina View (Vista). Nella sezione Permissions (Autorizzazioni) sono presenti due opzioni per concedere agli utenti del dominio le autorizzazioni sulla vista:

Concedere l'autorizzazione a questi utentiGrant permission to these users.

Concedere l'autorizzazione a questi gruppiGrant permission to these groups.

  1. Per aggiungere un utente, selezionare il pulsante Add User (Aggiungi utente).

    • Iniziare a digitare il nome utente. Verrà visualizzato un elenco a discesa dei nomi definiti in precedenza.

      Apache Ambari user auto completes.

    • Selezionare il nome utente o terminarne la digitazione. Per aggiungere il nome utente come un nuovo utente, selezionare il pulsante New (Nuovo).

    • Per salvare le modifiche, selezionare la casella di controllo blu.

      Apache Ambari grant user permissions.

  2. Per aggiungere un gruppo, selezionare il pulsante Add Group (Aggiungi gruppo).

    • Iniziare a digitare il nome del gruppo. Il processo di selezione di un nome di gruppo esistente o di aggiunta di un nuovo gruppo è analogo a quello per l'aggiunta di utenti.

    • Per salvare le modifiche, selezionare la casella di controllo blu.

      Apache Ambari grant permissions.

L'aggiunta di nuovi utenti direttamente a una vista è utile quando si desidera assegnare autorizzazioni a un utente a usare tale vista, ma non si desidera che l'utente sia un membro di un gruppo che dispone di autorizzazioni aggiuntive. Per ridurre la quantità di sovraccarico amministrativo, può risultare più semplice assegnare autorizzazioni ai gruppi.

Concedere le autorizzazioni per le viste Apache TEZ

Le istanze di viste Apache TEZ consentono agli utenti di monitorare ed eseguire il debug di tutti i processi Tez, inviati da query Apache Hive e script Apache Pig. È presente una sola istanza di viste Tez predefinita creata quando viene eseguito il provisioning del cluster.

Per assegnare utenti e gruppi a un'istanza di viste Tez, espandere la riga TEZ nella pagina Views (Viste), come descritto in precedenza.

HDInsight Views - Apache Tez view.

Per aggiungere utenti o gruppi, ripetere i passaggi da 3 a 5 nella sezione precedente.

Assegnare utenti ai ruoli

Esistono cinque ruoli di sicurezza per utenti e gruppi, elencati in ordine decrescente delle autorizzazioni di accesso:

  • Amministrazione cluster
  • Operatore del cluster
  • Amministratore del servizio
  • Operatore del servizio
  • Utente del cluster

Per gestire i ruoli, andare alla pagina di gestione di Ambari e quindi selezionare il collegamento Roles (Ruoli) nel gruppo di menu Clusters (Cluster) a sinistra.

Apache Ambari roles menu links.

Per visualizzare l'elenco delle autorizzazioni assegnate a ogni ruolo, fare clic sul punto interrogativo blu accanto all'intestazione di tabella Roles (Ruoli) nella pagina relativa.

Apache Ambari roles menu link permissions.

In questa pagina sono disponibili due viste che consentono di gestire i ruoli per gli utenti e gruppi, ovvero Block (Blocco) e List (Elenco).

Vista Blocco

La vista Block (Blocco) visualizza ogni ruolo nella propria riga e contiene le opzioni Assign roles to these users (Assegna ruoli a questi utenti) e Assign roles to these groups (Assegna ruoli a questi gruppi) come descritto in precedenza.

Apache Ambari roles block view.

Visualizzazione elenco

Nella vista List (Elenco) sono disponibili funzionalità di modifica rapida in due categorie, ovvero Users (Utenti) e Groups (Gruppi).

  • La categoria Users (Utenti) visualizza un elenco di tutti gli utenti, che consente di selezionare un ruolo per ogni utente nell'elenco a discesa.

    Apache Ambari roles list view - users.

  • La categoria Groups (Gruppi) visualizza tutti i gruppi e il ruolo e il ruolo assegnato a ogni gruppo. In questo esempio, l'elenco dei gruppi viene sincronizzato dai gruppi di Microsoft Entra specificati nella proprietà Gruppo utenti di Access delle impostazioni di dominio del cluster. Vedere Creazione di un cluster HDInsight con ESP abilitato.

    Apache Ambari roles list view - groups.

    Nell'immagine precedente il gruppo "hiveusers" è assegnato il ruolo Cluster User (Utente del cluster). Questo è un ruolo di sola lettura che consente agli utenti di tale gruppo di visualizzare le configurazioni del servizio e le metriche del cluster, ma non di modificarle.

Accedere al Ambari come un utente di sola visualizzazione

Sono state assegnate le autorizzazioni "hiveuser1" all'utente di dominio Microsoft Entra per le visualizzazioni Hive e Tez. Quando si avvia l'interfaccia utente Web di Ambari e si immettono le credenziali di dominio dell'utente (nome utente di Microsoft Entra in formato di posta elettronica e password), l'utente viene reindirizzato alla pagina Visualizzazioni Ambari. A questo punto l'utente può selezionare qualsiasi vista accessibile. L'utente non può altre parti del sito, ad esempio pagine di dashboard, servizi, host, avvisi o amministrazione.

Apache Ambari user with views only.

Accedere ad Ambari come un utente del cluster

L'utente di dominio "hiveuser2" di Microsoft Entra è stato assegnato al ruolo Utente cluster. Questo ruolo consente di accedere al dashboard e a tutte le voci di menu. Un utente del cluster dispone di un numero leggermente minore di opzioni consentite rispetto a un amministratore. L'utente hiveuser2, ad esempio, può visualizzare configurazioni per ognuno dei servizi, ma non modificarle.

Apache Ambari dashboard display.

Passaggi successivi