Абсолютно безопасно: 3 security-кита в Apache Hive

безопасность Apache Hive администрирование, SQL-on-Hadoop Hive администратор кластера примеры курсы обучение, Hive обучение администрирование примеры курсы Hadoop, Hadoop Hive кластер администратор примеры курсы обучение SQL Hadoop, Школа Больших Данных Учебный Центр Коммерсант

В этой статье для обучения дата-инженеров и администраторов SQL-on-Hadoop рассмотрим способы обеспечения информационной безопасности и защиты данных от несанкционированного доступа в Apache Hive. Классический security-набор: аутентификация, авторизация и шифрование.

Авторизация и аутентификация в Apache Hive

Будучи популярным инструментом стека SQL-on-Hadoop, Apache Hive поддерживает все механизмы обеспечения информационной безопасности, поддерживаемый базовой экосистемой и HDFS: аутентификацию, авторизацию и шифрование данных. Напомним, аутентификация — это проверка личности пользователя, а авторизация – это проверка того, что пользователь имеет право выполнять определенные действия в системе. С точки зрения доступа Apache Hive может использоваться следующими способами:

  • HCatalog API используется для доступа к Hive многими другими фреймворками, такими как Apache Pig, MapReduce, Presto, Spark SQL и Cloudera Impala. Через API HCatalog пользователи имеют прямой доступ к данным HDFS и метаданным Hive, которые доступны напрямую с помощью API сервера хранилища метаданных.
  • CLI-интерфейс Hive позволяет пользователям напрямую обратиться к данным HDFS и метаданным этой NoSQL-СУБД, непосредственно взаимодействуя с сервером хранилища метаданных.
  • ODBC/JDBC и другие клиенты HiveServer2, которые не имеют прямого доступа к данным и метаданным HDFS, а работают через HiveServer В целях безопасности это лучший способ доступа к Hive.

Apache Hive поддерживает несколько способов авторизации:

  • авторизация по умолчанию, которая сегодня считается устаревшей и не безопасной, т.к. не препятствует действиям злоумышленников, хотя и не позволяет пользователям совершать некоторые нежелательные действия. Она управляет контролем доступа, используя операторы предоставления и отзыва в CLI-интерфейсе. Поскольку с CLI пользователи имеют прямой доступ к файлам и каталогам HDFS, они могут легко взломать проверки безопасности. Также в этой модели предоставления привилегий не определены разрешения, необходимые для пользователя, поэтому любой пользователь может предоставить себе любой доступ, что небезопасно.
  • Авторизация на основе хранилища с помощью ACL-списков HDFS. Если пользователи используют API HCatalog или CLI-интерфейс Hive, они имеют прямой доступ к данным. Для защиты данных включаются ACL HDFS. В этом режиме разрешения HDFS работают как единый источник истины для защиты данных. Как правило, в хранилище метаданных Hive учетные данные базы данных настраиваются в файле конфигурации hive-site.xml. Злоумышленники могут легко прочитать учетные данные хранилища метаданных, а затем нанести серьезный ущерб данным, а также метаданным, поэтому сервер хранилища метаданных Hive также должен быть защищен. В этой авторизации можно включить безопасность на уровне хранилища метаданных. Это ограничит доступ к объектам метаданных через проверку наличия у пользователей соответствующих системных разрешений, соответствующих различным файлам и каталогам объектов метаданных.

Чтобы включить авторизацию Hive на основе хранилища данных HDFS, нужно настроить файл конфигурации hive-site.xml следующим образом:

<configuration>
<property>
   <name>hive.metastore.pre.event.listeners</name>
<value>org.apache.hadoop.hive.ql.security.authorization.AuthorizationPreEventListener</value>
</property>
<property>
   <name>hive.security.metastore.authorization.manager</name>
   <value>org.apache.hadoop.hive.ql.security.authorization.StorageBasedAuthorizationProvider</value>
</property>
<property>
   <name>hive.security.metastore.authenticator.manager</name>
   <value>org.apache.hadoop.hive.ql.security.HadoopDefaultMetastoreAuthenticator</value>
</property>
<property>
   <name>hive.security.metastore.authorization.auth.reads</name>
   <value>true</value>
</property>
</configuration>

В этом конфигурационном файле определены следующие свойства:

  • metastore.pre.event.listeners – свойство для определения класса прослушивателя перед событием, который загружается на стороне хранилища метаданных. API этого класса выполняются до возникновения любого события, такого как создание/изменение или удаление базы данных, таблицы или раздела. Настройка этого свойства включает безопасность на уровне хранилища метаданных. Для этого свойства следует установить значение org.apache.hadoop.hive.ql.security.authorization.AuthorizationPreEventListener.
  • security.metastore.authorization.manager – свойство для определения класса провайдера авторизации для безопасности хранилища метаданных. Значение по умолчанию для этого свойства — DefaultHiveMetastoreAuthorizationProvider, которое обеспечивает устаревшую авторизацию по умолчанию, описанную ранее. Чтобы включить авторизацию на основе хранилища на основе списков управления доступом Hadoop, надо задать для этого свойства значение org.apache.hadoop.hive.ql.security.authorization.StorageBasedAuthorizationProvider. Также можно написать свой собственный класс для управления авторизацией и настроить это свойство, чтобы включить пользовательский менеджер авторизации. Пользовательский класс диспетчера авторизации должен реализовывать интерфейс org.apache.hadoop.hive.ql.security.authorization.HiveMetastoreAuthorizationProvider.
  • security.metastore.authenticator.manager – свойство для определения класса диспетчера аутентификации, значение которого надо установить в org.apache.hadoop.hive.ql.security.HadoopDefaultMetastoreAuthenticator. Можно написать собственный класс для управления проверкой подлинности и настройки этого свойства. Пользовательский класс диспетчера проверки подлинности должен реализовать интерфейс org.apache.hadoop.hive.ql.security.HiveAuthenticationProvider.
  • security.metastore.authorization.auth.reads – свойство для определения того, должна ли авторизация хранилища метаданных проверять доступ для чтения или нет. Значение по умолчанию этого свойства — true.

Также в Apache Hive можно включить авторизацию на основе стандарта SQL. Хотя предыдущий способ авторизации на основе хранилища также обеспечивает управление доступом на уровне разделов, таблиц и баз данных, он не обеспечивает управление доступом на более детальном уровне, таком как столбцы и строки. Это связано с тем, что авторизация на основе хранилища зависит от контроля доступа, предоставляемого HDFS с использованием ACL-списков, который контролирует доступ на уровне файлов и каталогов. Поэтому для обеспечения мелкомасштабной безопасности можно использовать авторизацию на основе стандарта SQL.

Таким образом, защита Hive включает в себя настройку аутентификации для хранилища метаданных Hive, HiveServer2 и всех клиентов Hive с развертыванием LDAP и Kerberos для кластера. Авторизация для HiveServer2 может выполняться с использованием детальной RBAC-авторизации на основе ролей, реализованной с помощью политик Apache Sentry. Перед настройкой авторизации необходимо настроить проверку подлинности HiveServer2, поскольку Apache Sentry зависит от базовой структуры проверки подлинности для надежной идентификации запрашивающего пользователя. Следует настроить разрешения Sentry с помощью операторов GRANT и REVOKE, используя клиент HiveServer2 и CLI-интерфейс.

Примечательно, что платформа Cloudera не поддерживает собственные платформы авторизации Apache Ranger или Hive для настройки контроля доступа в Hive.

Hive содержит стандартную базу данных по умолчанию, доступ к которой может получить каждый пользователь, если параметр sentry.hive.restrict.defaultDB в конфигурационном файле sentry-site.xml установлен в значение false. Если для этого свойства установить значение true, нельзя будет использовать базу данных по умолчанию и выполнять основные операции, такие как перечисление имен баз данных.

Шифрование

Наконец, для защиты сетевого соединения между HiveServer2 и клиентами Hive используется шифрование. На платформе Cloudera шифрование между HiveServer2 и его клиентами отделено от проверки подлинности Kerberos. Ранее, до CDH 5.5 шифрование SASL QOP для клиентских драйверов JDBC требовало соединений, аутентифицированных с помощью защищенного протокола Kerberos. Отделение процесса аутентификации от процесса шифрования на транспортном уровне означает, что HiveServer2 может поддерживать два разных подхода к шифрованию между службой и ее клиентами (JDBC/ODBC) независимо от того, используется ли для аутентификации Kerberos. Этими подходами являются SASL и TLS/SSL.

В отличие от TLS/SSL, шифрование SASL QOP не требует сертификатов и предназначено для защиты основных коммуникаций Hadoop RPC. Однако SASL QOP может иметь проблемы с производительностью при обработке больших объемов данных, поэтому TLS/SSL может быть лучшим выбором.

Перед включением зон шифрования в Apache Hive следует решить, как будут храниться таблицы Hive: в одной или в нескольких зонах шифрования. Чтобы настроить одну зону шифрования для всего хранилища Hive, следует переименовать каталог /warehouse/tablespace в /warehouse/tablespace-old и создайте зону шифрования в /warehouse/tablespace. Далее с помощью Hadoop-утилиты распределенного копирования DistCp, о которой мы писали здесь, скопировать все данные из /warehouse/tablespace-old в /warehouse/tablespace.

Чтобы настроить рабочий каталог Hive, т.е. папку hive.exec.scratchdir так, чтобы она находился внутри зоны шифрования следует установить каталог /warehouse/tablespace/tmp и убедиться, что для него разрешения для установлены на 1777.

Чтобы получить доступ к зашифрованным базам данных и таблицам с разными ключами шифрования, следует настроить несколько зон шифрования. Например, чтобы настроить две зашифрованные таблицы, ez1.db и ez2.db, в двух разных зонах шифрования, надо создать 2 новые зоны шифрования: /warehouse/tablespace/managed/ez1.db и /warehouse/tablespace/managed/ez2.db. Далее загрузить данные в таблицы Hive ez1.db и ez2.db, используя операторы LOAD.

Больше подробностей про администрирование и эксплуатацию Apache Hive и других компонентов экосистемы Hadoop для хранения и аналитики больших данных вы узнаете на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве:

Я даю свое согласие на обработку персональных данных и соглашаюсь с политикой конфиденциальности.

Источники

  1. https://docs.cloudera.com/documentation/enterprise/6/6.3/topics/hive_security_intro.html
  2. https://www.packt.com/hive-security/
  3. https://docs.cloudera.com/HDPDocuments/HDP3/HDP-3.1.0/configuring-hdfs-encryption/content/configuring_hive_tables_for_hdfs_encryption.html

Поиск по сайту