Подключение к Ranger через KMS REST API

Обзор

Ranger KMS REST API основан на Hadoop KMS REST API, поэтому методы и эндпоинты у них совпадают. Чтобы отправлять запрос с хоста в кластере, требуется иметь валидный тикет Kerberos. Полный список методов и эндпоинтов доступен в документации Ranger KMS REST API.

Простым способом работы с запросами является curl (он и будет продемонстрирован ниже), но вы можете отправлять запросы любым удобным способом с любого хоста в кластере с валидным тикетом. Шаблон команды представлен ниже:

$ curl -i --negotiate -u : -X <request_type> <ranger_kms_host>/kms/<endpoint>

где:

  • <request_type> — тип HTTP-запроса (GET, POST, DELETE). Если вместе с запросом отправляются некоторые данные, укажите их тип с помощью -H и прикрепите их с помощью -d.

  • <ranger_kms_host> — URL хоста Ranger KMS с портом (например, http://stikhomirov-adps.ru-central1.internal:9292).

  • <endpoint> — ресурс, к которому будет отправлен запрос.

Опция -i позволяет получить HTTP-заголовки и увидеть статус запроса. Опция -u является обязательной, но игнорируется, т.к. для аутентификации используется тикет.

Пример

Пример ниже демонстрирует получение названий ключей с помощью Ranger KMS REST API. Так как по умолчанию ключей в Ranger KMS нет, перед демонстрацией примера требуется создать хотя бы один через REST API или веб-интерфейс. Далее показан второй вариант.

Подготовка

  1. Залогиньтесь в веб-интерфейс Ranger Admin как keyadmin, откройте страницу Key Manager через вкладку Encryption, выберите сервис kms и нажмите Add New Key.

    Страница Encryption
    Страница Encryption
    Страница Encryption
    Страница Encryption
  2. Заполните необходимые данные и нажмите Save внизу страницы. Новый ключ появится на странице Key Manager.

    Страница Create Key
    Страница Create Key
    Страница Create Key
    Страница Create Key

Процесс

  1. Авторизуйтесь на хосте, где есть валидный тикет Kerberos.

  2. Убедитесь, что версия curl содержит GSS-Negotiate среди своих функций, запустив команду ниже:

    $ curl -V

    Возможный вывод:

    curl 7.29.0 (x86_64-redhat-linux-gnu) libcurl/7.29.0 NSS/3.90 zlib/1.2.7 libidn/1.28 libssh2/1.8.0
    Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp scp sftp smtp smtps telnet tftp
    Features: AsynchDNS GSS-Negotiate IDN IPv6 Largefile NTLM NTLM_WB SSL libz unix-sockets
  3. Убедитесь, что в кеше есть валидный тикет, запустив команду klist.

  4. Запустите команду ниже.

    $ curl -i --negotiate -u : -X GET <ranger_kms_host>/kms/v1/keys/names
  5. В ответе после заголовков находится массив с названиями ключей. Имя ключа из примера возвращается следующим образом:

    [ "testkey" ]
Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней