Есть новая техника для добавления детальной безопасности при использовании Apache Hive и Spark для работы с большими наборами данных.
Spark позволяет использовать выражения SQL для данных в Hive, но до сих пор для авторизации требовалось использовать списки контроля доступа HDFS. Этому не хватает детализации, необходимой для столбчатых данных. В то время как идеальным решением было бы, если бы Spark мог распознавать и реагировать на тонкие настройки безопасности, одной из альтернатив является использование внешнего демона, который может взаимодействовать с настройками безопасности на уровне схемы.
LLAP (Live Long and Process, стон) — это набор долгоживущих демонов, который работает в тандеме со службой узла данных HDFS и обеспечивает возможность взаимодействия с безопасностью на основе схемы. LLAP был представлен в Hive 2. Это гибридная модель выполнения, которая предлагает такие преимущества, как кэширование столбчатых данных, удобные для JIT конвейеры операторов и снижение накладных расходов для нескольких запросов (включая параллельные запросы).
Объясняя эту технику в блоге HortonWorks, Вадим Вакс сказал, что с включенным LLAP Spark читает из HDFS напрямую через LLAP, что означает, что единственным другим необходимым элементом является централизованная система авторизации, которую может предоставить Apache Ranger. Это обеспечивает централизованную авторизацию и службы аудита для многих компонентов, которые работают на Yarn или полагаются на данные из HDFS, включая HDFS, Yarn, Hive (Spark с LLAP), HBase, Kafka, Storm, Solr, Atlas и Knox. Вакс говорит:
«Каждая из вышеперечисленных служб интегрируется с Ranger через плагин, который извлекает последние политики безопасности, кэширует их, а затем применяет их во время выполнения».
Таким образом, Spark получает инструкцию запроса и связывается с Hive, чтобы получить соответствующие схемы и план запроса. Затем подключаемый модуль Ranger Hive используется для проверки кэшированной политики безопасности и сообщает Spark, к каким столбцам он может получить доступ.
Apache Ranger предоставляет централизованную структуру безопасности для управления детальным контролем доступа к Hadoop и связанным компонентам (Apache Hive, HBase и т. Д.). Плагин Ranger находится на пути пользовательского запроса и может принять решение о том, должен ли пользовательский запрос быть авторизован. Плагин также собирает детали запросов на доступ, необходимые для аудита.
Как только Spark сообщается, к каким столбцам он может получить доступ, он затем использует LLAP для чтения из файловой системы. LLAP работает с любой фильтрацией или маскированием, и если запрос содержит запросы для столбцов, которые не авторизованы, LLAP прекращает обработку запроса и выдает исключение авторизации в Spark. Если используется маскирование, возвращаются ограниченные столбцы, но они содержат только звездочки или хэш исходного значения.
Ranger также можно использовать для обеспечения безопасности на уровне строк, поэтому запрос будет возвращать только те строки, на просмотр которых у пользователя есть разрешение. Как объясняет Вакс, политика уровня строк от Ranger предписывает Hive возвращать план запроса, который включает предикат, фильтрующий неавторизованные строки. Spark получает измененный план запроса и инициирует обработку, считывая данные через LLAP. LLAP гарантирует, что предикат применяется и что запрещенные строки не возвращаются.