Предоставление пользователям доступа к представлениям Apache Ambari

Кластеры HDInsight с поддержкой корпоративного пакета безопасности (ESP) предоставляют возможности корпоративного уровня, включая проверку подлинности на основе идентификатора Microsoft Entra. Вы можете синхронизировать новых пользователей , добавленных в группы Microsoft Entra, которым предоставлен доступ к кластеру, что позволяет конкретным пользователям выполнять определенные действия. Работа с пользователями, группами и разрешениями в Apache Ambari поддерживается как для кластера ESP HDInsight, так и для стандартного кластера HDInsight.

Пользователи Active Directory могут входить на узлы кластера с доменными учетными данными. Кроме того, эти учетные данные можно использовать для аутентификации в других утвержденных конечных точках, например Hue, Ambari Views, ODBC, JDBC, PowerShell и интерфейсах REST API.

Предупреждение

Не изменяйте пароль модуля наблюдения Ambari (hdinsightwatchdog) в кластере HDInsight под управлением Linux. Это не позволит выполнять действия сценария или операции масштабирования в кластере.

Выполните эти инструкции, чтобы подготовить новый кластер ESP, если у вас его еще нет.

Переход на страницу управления Ambari

Чтобы открыть страницу управления Ambari в пользовательском веб-интерфейсе Apache Ambari, перейдите по адресу https://CLUSTERNAME.azurehdinsight.net. Введите имя пользователя и пароль администратора кластера, определенные при создании кластера. Затем на панели мониторинга Ambari выберите Manage Ambari (Управление Ambari) в меню admin (Администрирование).

Apache Ambari dashboard manage.

Добавить пользователей

Добавление пользователей с помощью портала

  1. На странице управления выберите Пользователи.

    Apache Ambari management page users.

  2. Выберите + Create Local User (Создать локального пользователя).

  3. Введите имя пользователя и пароль. Щелкните Save (Сохранить).

Добавление пользователей с помощью 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.

  1. На странице управления щелкните ссылку Views (Представления) под заголовком меню Views (Представления) в левой части экрана.

    Apache Ambari views view links.

  2. На странице "Views" (Представления) разверните строку HIVE. При добавлении службы Hive в кластер создается представление по умолчанию Hive. При необходимости можно также создать дополнительные экземпляры представлений Hive. Выберите представление Hive.

    HDInsight Views - Apache Hive view.

  3. Прокрутите страницу "Views" (Представления) вниз. В разделе Permissions (Разрешения) доступно два параметра для предоставления разрешений на представление пользователям домена:

Предоставление разрешения этим пользователямGrant permission to these users.

Предоставление разрешения этим группамGrant permission to these groups.

  1. Чтобы добавить пользователя, нажмите кнопку Add User (Добавить пользователя).

    • Начните вводить имя пользователя, и вы увидите раскрывающийся список ранее определенных имен.

      Apache Ambari user auto completes.

    • Выберите имя пользователя из списка или завершите его ввод. Чтобы добавить нового пользователя с этим именем, нажмите кнопку New (Создать).

    • Чтобы сохранить изменения, щелкните синий флажок.

      Apache Ambari grant user permissions.

  2. Чтобы добавить группу, нажмите кнопку Add Group (Добавить группу).

    • Начните вводить имя группы. Процедура выбора существующего имени группы или добавления новой группы выполняется так же, как и добавление пользователей.

    • Чтобы сохранить изменения, щелкните синий флажок.

      Apache Ambari grant permissions.

Непосредственное добавление пользователей для представления удобно, когда пользователю нужно назначить разрешения для использования этого представления, но вы не хотите добавлять его в группу, имеющую дополнительные разрешения. Чтобы уменьшить объем административных операций, может оказаться проще назначать разрешения группам.

Предоставление разрешений для представлений Apache TEZ

С помощью экземпляров представлений Apache TEZ пользователи могут отслеживать и отлаживать все задания Tez, отправляемые запросами Apache Hive и сценариями Apache Pig. Доступен один экземпляр представления по умолчанию Tez, создаваемый при подготовке кластера.

Чтобы назначить пользователей и группы для экземпляра представления Tez, разверните строку TEZ на странице "Views" (Представления), как было описано выше.

HDInsight Views - Apache Tez view.

Чтобы добавить пользователей или группы, повторите шаги 3–5 из предыдущего раздела.

Назначение пользователей ролям

Существуют пять ролей безопасности для пользователей и групп, которые приведены ниже в порядке убывания уровня разрешений на доступ:

  • администратор кластера;
  • оператор кластера;
  • Администратор служб
  • оператор службы;
  • пользователь кластера.

Для управления ролями перейдите на страницу управления Ambari, а затем щелкните ссылку Roles (Роли) в группе меню Clusters (Кластеры) в левой части экрана.

Apache Ambari roles menu links.

Чтобы просмотреть список разрешений, предоставляемых каждой роли, щелкните синий вопросительный знак рядом с заголовком таблицы Roles (Роли) на странице "Roles" (Роли).

Apache Ambari roles menu link permissions.

На этой странице размещены два разных представления, которые можно использовать для управления ролями пользователей и групп: "Block" (Блок) и "List" (Список).

Представление "Block" (Блок)

Представление "Block" (Блок) отображает каждую роль в отдельной строке, а также содержит параметры Assign roles to these users (Назначить роли этим пользователям) и Assign roles to these groups (Назначить роли этим группам), как описано выше.

Apache Ambari roles block view.

Представление списка

Представление "List" (Список) предоставляет возможности быстрого редактирования в двух категориях: "Users" (Пользователи) и "Groups" (Группы).

  • В категории "Users" (Пользователи) представления "List" (Список) отображается список всех пользователей, в котором из раскрывающегося списка можно выбрать роль для каждого пользователя.

    Apache Ambari roles list view - users.

  • Категория "Groups" (Группы) представления "List" (Список) содержит все группы, а также роли, назначенные каждой группе. В нашем примере список групп синхронизируется из групп Microsoft Entra, указанных в свойстве группы пользователей Access параметров домена кластера. См. Создание кластера HDInsight с корпоративным пакетом безопасности.

    Apache Ambari roles list view - groups.

    На приведенном выше рисунке группе hiveusers назначена роль Cluster User (Пользователь кластера). Это роль только для чтения, которая позволяет пользователям в группе просматривать, но не изменять конфигурации службы и метрики кластера.

Вход в Ambari от имени пользователя с доступом только к представлениям

Мы назначили пользователям домена Microsoft Entra разрешения hiveuser1 для представлений Hive и Tez. При запуске веб-интерфейса Ambari и вводе учетных данных домена этого пользователя (имя пользователя Microsoft Entra в формате электронной почты и пароль) пользователь перенаправляется на страницу "Представления Ambari". Здесь пользователь сможет выбрать любое доступное представление. Пользователь не может посетить какую-либо другую часть сайта, включая страницы панели мониторинга, служб, узлов, предупреждений или администрирования.

Apache Ambari user with views only.

Вход в Ambari от имени пользователя кластера

Мы назначили пользователю домена Microsoft Entra hiveuser2 роль пользователя кластера. Эта роль предоставляет доступ к панели мониторинга и всем пунктам меню. Пользователю кластера доступно меньше параметров, чем администратору. Например, пользователь hiveuser2 может просмотреть конфигурации для каждой из служб, но не может их изменить.

Apache Ambari dashboard display.

Следующие шаги