Подключение к 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 или веб-интерфейс. Далее показан второй вариант.
Подготовка
-
Залогиньтесь в веб-интерфейс Ranger Admin как
keyadmin
, откройте страницу Key Manager через вкладку Encryption, выберите сервис kms и нажмите Add New Key.Страница EncryptionСтраница Encryption -
Заполните необходимые данные и нажмите Save внизу страницы. Новый ключ появится на странице Key Manager.
Страница Create KeyСтраница Create Key
Процесс
-
Авторизуйтесь на хосте, где есть валидный тикет Kerberos.
-
Убедитесь, что версия 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
-
Убедитесь, что в кеше есть валидный тикет, запустив команду
klist
. -
Запустите команду ниже.
$ curl -i --negotiate -u : -X GET <ranger_kms_host>/kms/v1/keys/names
-
В ответе после заголовков находится массив с названиями ключей. Имя ключа из примера возвращается следующим образом:
[ "testkey" ]