[Ambari] Пароли сервисов для простых пользователей

В Ambari есть ряд сервисов, которым «есть что скрывать». Говоря проще, Nagios, Oozie и Hive используют пароли для некоторых своим «частей». Nagios вообще закрыт для посторонних (basic-auth), а Hive и Oozie используют БД (к которой, как известно, нужна пара «пользователь/пароль»).

При установке Ambari на 7-м шаге (Customize Services) администратор указывает эти пароли. После установки на страницах настройки сервисов (#/main/services/NAGIOS/configs, #/main/services/OOZIE/configs, #/main/services/HIVE/configs) эти данные видно только как «*******». Собственно, как обычно бывает с паролями на веб-формах. Администратору эти поля доступны для редактирования. Для простых пользователей они «disabled».

Подразумевается, что user’ам можно только смотреть на то, что доступно непосредственно в Ambari. А если прав админа нет, но очень посмотреть больше, чем доступно? Тогда надо копнуть в сторону обмена данными между UI и сервером. Скажу сразу, что данные идут без какого-либо шифрования и нужные нам пароли идут в «plain-text». Нужно только знать необходимые запросы.

Допустим, есть кластер и учетка пользователя на нем. Откроем его web-ui в Хроме и перейдем на вкладку Network. Далее, открываем страницу сервисов, выбираем Nagios (для начала) и открываем вкладку Configs. Выполнился запрос вида:

http://host:8080/api/v1/clusters/clusterName/configurations?(type=global&tag=version1388185676586)&_=1388186049409

По данному запросу возращается JSON с «глобальными» параметрами, один из которых — nagios_web_password, в котором в чистом виде записан пароль.

Теперь посмотрим Hive и Oozie. Запросы для них такие:

http://host:8080/api/v1/clusters/clusterName/configurations?(type=hive-site&tag=version1)
http://host:8080/api/v1/clusters/clusterName/configurations?(type=oozie-site&tag=version1)

Имена нужных полей соотвественно — «javax.jdo.option.ConnectionPassword» и «oozie.service.JPAService.jdbc.password». Важно! tag может быть не version1. Нужный tag находится по запросу:

http://host:8080/api/v1/clusters/clusterName?fields=Clusters/desired_configs,config_groups/*

Ответ будет вида:

{
  "href" : "http://host:8080/api/v1/clusters/clusterName?fields=Clusters/desired_configs,config_groups/*&_=1388186293960",
  "Clusters" : {
    "cluster_name" : "clusterName",
    "version" : "HDP-2.0.6",
    "desired_configs" : {
      "capacity-scheduler" : {
        "user" : "admin",
        "tag" : "version1"
      },
      "core-site" : {
        "user" : "admin",
        "tag" : "version1"
      },
      "global" : {
        "user" : "admin",
        "tag" : "version1388185676586"
      },
      "hdfs-site" : {
        "user" : "admin",
        "tag" : "version1"
      },
      "hive-site" : {
        "user" : "admin",
        "tag" : "version1"
      },
      "mapred-site" : {
        "user" : "admin",
        "tag" : "version1"
      },
      "oozie-site" : {
        "user" : "admin",
        "tag" : "version1"
      },
      "webhcat-site" : {
        "user" : "admin",
        "tag" : "version1"
      },
      "yarn-site" : {
        "user" : "admin",
        "tag" : "version1"
      }
    }
  },
  "config_groups" : [ ]
}

Отсюда и берутся нужные tag’и. Натворить очень много дел с такими данными не получится, но вот немного «расширить» свои возможности можно.

P.S. Стоит не забывать, что запросы надо выполнять будучи авторизованным в Ambari, иначе — 403.

, , , , ,

Оставить комментарий

Top ↑ | Main page | Back