Tls в hive os что это
Перейти к содержимому

Tls в hive os что это

  • автор:

18. Hive. Установка и настройка

  1. В консоли Cloudera Manager в меню выбираем ‘Add Service’:
  2. Выбираем Hive.
  3. Выбираем зависимости:
  4. Распределяем роли. Рекомендуется устанавливать роли Hive Gateway на узлы кластера с ролью Spark Gateway, иначе Hive-таблицы не будут доступны для Spark’а.
  5. Настройка базы данных. Так как сейчас используется встроенная база данных, то никаких дополнительных действий не производим, а нажимаем кнопку ‘Test Connection’.
  6. На шаге Review Changes ничего не меняем:
  7. Наблюдаем запуск ролей. Здесь может произойти ошибка из-за отсутствия роли Spark Gateway на машине с устанавливаемой ролью HiveServer2. Решается в параллельном окне Cloudera Manager’а, где добавляем роль Spark Gateway на требуемый узел.
  8. Визард успешно закончен.

Перенастройка размещения log’ов

  1. В настройках Hive, используя категорию ‘Logs’ и фильтр ‘/var/log’, изменяем следующие параметры, добавляя ‘/data’ вместо ‘/var’:
  1. Нажимаем Save Changes.

Настройка зашифрованного обмена данными между HiveServer2 и клиентскими драйверами

В CDH 5.5 и более поздних версиях шифрование между HiveServer2 и его клиентами было отделено от аутентификации Kerberos. (До CDH 5.5 шифрование SASL QOP для клиентских драйверов JDBC требовало соединений, аутентифицированных Kerberos.) Отсоединение процесса аутентификации от процесса шифрования транспортного уровня означает, что HiveServer2 может поддерживать два разных подхода к шифрованию между службой и ее клиентами ( Beeline, JDBC / ODBC) независимо от того, используется ли Kerberos для аутентификации, а именно:

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

Здесь мы рассмотрим настройку только TLS шифрования.

3.1. Настройка TLS шифрования для HiveServer2

To configure TLS for Hive in clusters managed by Cloudera Manager:

  1. В настройках службы Hive, используя регион ‘Security’, изменяем следующие параметры:

Поле ввода для пароля хранилища доверенных сертификатов оставлено пустым, поскольку хранилище доверенных сертификатов обычно не защищено паролем — оно не содержит ключей, только общедоступные сертификаты, которые помогают установить цепочку доверия во время установления связи TLS. Кроме того, для чтения доверенного хранилища пароль не требуется.

  1. Нажимаем Save Changes.
  2. Перезапускаем все зависимые сервисы по приглашению Cloudera Manager Console.

Настройка аутентификации

На данный момент, включена kerberos-аутентификация для Hive. Следующие изменения в параметрах Hive добавят к kerberos-аутентификации LDAP-аутентификацию.

Starting with CDH 5.7 and later, clusters running LDAP-enabled HiveServer2 deployments also accept Kerberos authentication.

  1. В настройках службы Hive, используя регион ‘Security’, изменяем следующие параметры:
  1. Чуть ниже наблюдаем параметры, которые отвечают за TLS для WEB-интерфейса Hive.

Включение TLS для WEB-интерфейса Hive

После включения TLS, пропадёт неавторизованный доступ к WEB-интерфейсу Hive. Для доступа потребуется kerberos-тикет и настроенный Web-браузер для использования Kerberos в определённом домене.

  1. В настройках службы Hive, используя регион ‘Security’, изменяем следующие параметры:
  1. Нажимаем Save Changes.

Отключение доступа внешних приложений к Hive Metastore (Disabling Hive CLI etc.)

Setting this parameter blocks access to the Hive metastore for non-service users. This effectively disables Hive CLI, Spark, and Sqoop applications from interacting with the Hive service. These application will still run, but after setting this parameter as described here, they will no longer be able to access the Hive metastore and all Hive queries will fail. Users running these tools must be part of the hive, hue, or sentry groups to access the Hive service. To allow greater access, additional user groups must be added to the proxy list.

  1. В настройках службы Hive, используя фильтр ‘Hive Metastore Access Control and Proxy User Groups Override’, изменяем следующие параметры:
  • hive
  • hue
  • sentry

Могут быть указаны дополнительные пользовательские группы.

  1. Нажимаем Save Changes.
  2. Перезапускаем все зависимые сервисы по приглашению Cloudera Manager Console.

Настройка VPN в Hive OS

такая же шляпа.
служба поддержки вот так послала меня:
I’m afraid we don’t have the application for Hive OS, as this operating system isn’t supported,
but you can set up a VPN connection on your router, which would make your Hive OS device be connected to a VPN as well!

вот такие пироги.

Кто какой VPN использует для HIVE?
Поднять свой не предлагать

dio199
Бывалый
  • 12 Апр 2022
  • #62

такая же шляпа.
служба поддержки вот так послала меня:
I’m afraid we don’t have the application for Hive OS, as this operating system isn’t supported,
but you can set up a VPN connection on your router, which would make your Hive OS device be connected to a VPN as well!

вот такие пироги.

Кто какой VPN использует для HIVE?
Поднять свой не предлагать

d_bagrov
Знающий
  • 12 Апр 2022
  • #63
d_bagrov
Знающий
  • 12 Апр 2022
  • #64
push-remove ifconfig-ipv6
push-remove route-ipv6
Oceanov
Свой человек
  • 15 Апр 2022
  • #65
Bodybag
Пляшущий с бубном
  • 21 Апр 2022
  • #66
push-remove ifconfig-ipv6
push-remove route-ipv6

Подскажите где поколдовать в файле, на винде все отлично завелось в хайве делает мозги "OpenVPN setup failed"

dev tun
fast-io
persist-key
persist-tun
nobind
remote "server ip"

remote-random
pull
comp-lzo no
tls-client
verify-x509-name Server name-prefix
ns-cert-type server
key-direction 1
route-method exe
route-delay 2
tun-mtu 1500
fragment 1300
mssfix 1200
verb 3
cipher AES-256-CBC
keysize 256
auth SHA512
sndbuf 524288
rcvbuf 524288
auth-user-pass

Oceanov
Свой человек
  • 23 Апр 2022
  • #67

Подскажите где поколдовать в файле, на винде все отлично завелось в хайве делает мозги "OpenVPN setup failed"

dev tun
fast-io
persist-key
persist-tun
nobind
remote "server ip"

remote-random
pull
comp-lzo no
tls-client
verify-x509-name Server name-prefix
ns-cert-type server
key-direction 1
route-method exe
route-delay 2
tun-mtu 1500
fragment 1300
mssfix 1200
verb 3
cipher AES-256-CBC
keysize 256
auth SHA512
sndbuf 524288
rcvbuf 524288
auth-user-pass

Что такое TLS

Данный текст является вольным переводом вот этой главы замечательной книги «High Performance Browser Networking» авторства Ильи Григорика. Перевод выполнялся в рамках написания курсовой работы, потому очень вольный, но тем не менее будет полезен тем, кто слабо представляет что такое TLS, и с чем его едят.

Общие сведения о TLS

Протокол TLS (transport layer security) основан на протоколе SSL (Secure Sockets Layer), изначально разработанном в Netscape для повышения безопасности электронной коммерции в Интернете. Протокол SSL был реализован на application-уровне, непосредственно над TCP (Transmission Control Protocol), что позволяет более высокоуровневым протоколам (таким как HTTP или протоколу электронной почты) работать без изменений. Если SSL сконфигурирован корректно, то сторонний наблюдатель может узнать лишь параметры соединения (например, тип используемого шифрования), а также частоту пересылки и примерное количество данных, но не может читать и изменять их.

Конкретное место TLS (SSL) в стеке протоколов Интернета показано на схеме:

После того, как протокол SSL был стандартизирован IETF (Internet Engineering Task Force), он был переименован в TLS. Поэтому хотя имена SSL и TLS взаимозаменяемы, они всё-таки отличаются, так как каждое описывает другую версию протокола.

Первая выпущенная версия протокола имела название SSL 2.0, но была довольно быстра заменена на SSL 3.0 из-за обнаруженных уязвимостей. Как уже упоминалось, SSL был разработан компанией Netscape, так что в январе 1999 года IETF открыто стандартизирует его под именем TLS 1.0. Затем в апреле 2006 года была опубликована версия TLS 1.1, которая расширяла первоначальные возможности протокола и закрывала известные уязвимости. Актуальная версия протокола на данный момент – TLS 1.2, выпущенная в августе 2008 года.

Как уже говорилось, TLS был разработан для работы над TCP, однако для работы с протоколами дейтаграмм, такими как UDP (User Datagram Protocol), была разработана специальная версия TLS, получившая название DTLS (Datagram Transport Layer Security).

Шифрование, аутентификация и целостность
  • Шифрование – сокрытие информации, передаваемой от одного компьютера к другому;
  • Аутентификация – проверка авторства передаваемой информации;
  • Целостность – обнаружение подмены информации подделкой.

Также в рамках процедуры TLS Handshake имеется возможность установить подлинность личности и клиента, и сервера. Например, клиент может быть уверен, что сервер, который предоставляет ему информацию о банковском счёте, действительно банковский сервер. И наоборот: сервер компании может быть уверен, что клиент, подключившийся к нему – именно сотрудник компании, а не стороннее лицо (данный механизм называется Chain of Trust и будет рассмотрен в соответствующем разделе).

Наконец, TLS обеспечивает отправку каждого сообщения с кодом MAC (Message Authentication Code), алгоритм создания которого – односторонняя криптографическая функция хеширования (фактически – контрольная сумма), ключи которой известны обоим участникам связи. Всякий раз при отправке сообщения, генерируется его MAC-значение, которое может сгенерировать и приёмник, это обеспечивает целостность информации и защиту от её подмены.

Таким образом, кратко рассмотрены все три механизма, лежащие в основе криптобезопасности протокола TLS.

TLS Handshake

Перед тем, как начать обмен данными через TLS, клиент и сервер должны согласовать параметры соединения, а именно: версия используемого протокола, способ шифрования данных, а также проверить сертификаты, если это необходимо. Схема начала соединения называется TLS Handshake и показана на рисунке:

  1. Так как TLS работает над TCP, для начала между клиентом и сервером устанавливается TCP-соединение.
  2. После установки TCP, клиент посылает на сервер спецификацию в виде обычного текста (а именно версию протокола, которую он хочет использовать, поддерживаемые методы шифрования, etc).
  3. Сервер утверждает версию используемого протокола, выбирает способ шифрования из предоставленного списка, прикрепляет свой сертификат и отправляет ответ клиенту (при желании сервер может так же запросить клиентский сертификат).
  4. Версия протокола и способ шифрования на данном моменте считаются утверждёнными, клиент проверяет присланный сертификат и инициирует либо RSA, либо обмен ключами по Диффи-Хеллману, в зависимости от установленных параметров.
  5. Сервер обрабатывает присланное клиентом сообщение, сверяет MAC, и отправляет клиенту заключительное (‘Finished’) сообщение в зашифрованном виде.
  6. Клиент расшифровывает полученное сообщение, сверяет MAC, и если всё хорошо, то соединение считается установленным и начинается обмен данными приложений.

Также имеется дополнительное расширение процедуры Handshake, которое имеет название TLS False Start. Это расширение позволяет клиенту и серверу начать обмен зашифрованными данными сразу после установления метода шифрования, что сокращает установление соединения на одну итерацию сообщений. Об этом подробнее рассказано в пункте “TLS False Start”.

Обмен ключами в протоколе TLS

По различным историческим и коммерческим причинам чаще всего в TLS используется обмен ключами по алгоритму RSA: клиент генерирует симметричный ключ, подписывает его с помощью открытого ключа сервера и отправляет его на сервер. В свою очередь, на сервере ключ клиента расшифровывается с помощью закрытого ключа. После этого обмен ключами объявляется завершённым. Данный алгоритм имеет один недостаток: эта же пара отрытого и закрытого ключей используется и для аутентификации сервера. Соответственно, если злоумышленник получает доступ к закрытому ключу сервера, он может расшифровать весь сеанс связи. Более того, злоумышленник может попросту записать весь сеанс связи в зашифрованном варианте и занять расшифровкой потом, когда удастся получить закрытый ключ сервера. В то же время, обмен ключами Диффи-Хеллмана представляется более защищённым, так как установленный симметричный ключ никогда не покидает клиента или сервера и, соответственно, не может быть перехвачен злоумышленником, даже если тот знает закрытый ключ сервера. На этом основана служба снижения риска компрометации прошлых сеансов связи: для каждого нового сеанса связи создаётся новый, так называемый «временный» симметричный ключ. Соответственно, даже в худшем случае (если злоумышленнику известен закрытый ключ сервера), злоумышленник может лишь получить ключи от будущих сессий, но не расшифровать ранее записанные.

На текущий момент, все браузеры при установке соединения TLS отдают предпочтение именно сочетанию алгоритма Диффи-Хеллмана и использованию временных ключей для повышения безопасности соединения.

Следует ещё раз отметить, что шифрование с открытым ключом используется только в процедуре TLS Handshake во время первоначальной настройки соединения. После настройки туннеля в дело вступает симметричная криптография, и общение в пределах текущей сессии зашифровано именно установленными симметричными ключами. Это необходимо для увеличения быстродействия, так как криптография с открытым ключом требует значительно больше вычислительной мощности.

Возобновление сессии TLS

Как уже отмечалось ранее, полная процедура TLS Handshake является довольно длительной и дорогой с точки зрения вычислительных затрат. Поэтому была разработана процедура, которая позволяет возобновить ранее прерванное соединение на основе уже сконфигурированных данных.

Начиная с первой публичной версии протокола (SSL 2.0) сервер в рамках TLS Handshake (а именно первоначального сообщения ServerHello) может сгенерировать и отправить 32-байтный идентификатор сессии. Естественно, в таком случае у сервера хранится кэш сгенерированных идентификаторов и параметров сеанса для каждого клиента. В свою очередь клиент хранит у себя присланный идентификатор и включает его (конечно, если он есть) в первоначальное сообщение ClientHello. Если и клиент, и сервер имеют идентичные идентификаторы сессии, то установка общего соединения происходит по упрощённому алгоритму, показанному на рисунке. Если нет, то требуется полная версия TLS Handshake.

Процедура возобновления сессии позволяет пропустить этап генерации симметричного ключа, что существенно повышает время установки соединения, но не влияет на его безопасность, так как используются ранее нескомпрометированные данные предыдущей сессии.

Однако здесь имеется практическое ограничение: так как сервер должен хранить данные обо всех открытых сессиях, это приводит к проблеме с популярными ресурсами, которые одновременно запрашиваются тысячами и миллионами клиентов.

Для обхода данной проблемы был разработан механизм «Session Ticket», который устраняет необходимость сохранять данные каждого клиента на сервере. Если клиент при первоначальной установке соединения указал, что он поддерживает эту технологию, то в сервер в ходе TLS Handshake отправляет клиенту так называемый Session Ticket – параметры сессии, зашифрованные закрытым ключом сервера. При следующем возобновлении сессии, клиент вместе с ClientHello отправляет имеющийся у него Session Ticket. Таким образом, сервер избавлен от необходимости хранить данные о каждом соединении, но соединение по-прежнему безопасно, так как Session Ticket зашифрован ключом, известным только на сервере.

TLS False Start

Технология возобновления сессии бесспорно повышает производительность протокола и снижает вычислительные затраты, однако она не применима в первоначальном соединении с сервером, или в случае, когда предыдущая сессия уже истекла.

Для получения ещё большего быстродействия была разработана технология TLS False Start, являющаяся опциональным расширением протокола и позволяющая отправлять данные, когда TLS Handshake завершён лишь частично. Подробная схема TLS False Start представлена на рисунке:

Важно отметить, что TLS False Start никак не изменяет процедуру TLS Handshake. Он основан на предположении, что в тот момент, когда клиент и сервер уже знают о параметрах соединения и симметричных ключах, данные приложений уже могут быть отправлены, а все необходимые проверки можно провести параллельно. В результате соединение готово к использованию на одну итерацию обмена сообщениями раньше.

TLS Chain of trust
  1. И Алиса, и Боб генерируют собственные открытые и закрытые ключи.
  2. Алиса и Боб обмениваются открытыми ключами.
  3. Алиса генерирует сообщение, шифрует его своим закрытым ключом и отправляет Бобу.
  4. Боб использует полученный от Алисы ключ, чтобы расшифровать сообщение и таким образом проверяет подлинность полученного сообщения.

Пусть теперь Алиса получает сообщение от Чарли, с которым она не знакома, но который утверждает, что дружит с Бобом. Чтобы это доказать, Чарли заранее попросил подписать собственный открытый ключ закрытым ключом Боба, и прикрепляет эту подпись к сообщению Алисе. Алиса же сначала проверяет подпись Боба на ключе Чарли (это она в состоянии сделать, ведь открытый ключ Боба ей уже известен), убеждается, что Чарли действительно друг Боба, принимает его сообщение и выполняет уже известную проверку целостности, убеждаясь, что сообщение действительно от Чарли:

Описанное в предыдущем абзаце и есть создание «цепочки доверия» (или «Chain of trust», если по-английски).
В протоколе TLS данные цепи доверия основаны на сертификатах подлинности, предоставляемых специальными органами, называемыми центрами сертификации (CA – certificate authorities). Центры сертификации производят проверки и, если выданный сертификат скомпрометирован, то данный сертификат отзывается.

Из выданных сертификатов складывается уже рассмотренная цепочка доверия. Корнем её является так называемый “Root CA certificate” – сертификат, подписанный крупным центром, доверие к которому неоспоримо. В общем виде цепочка доверия выглядит примерно таким образом:

Естественно, возникают случаи, когда уже выданный сертификат необходимо отозвать или аннулировать (например, был скомпрометирован закрытый ключ сертификата, или была скомпрометирована вся процедура сертификации). Для этого сертификаты подлинности содержат специальные инструкции о проверке их актуальности. Следовательно, при построении цепочки доверия, необходимо проверять актуальность каждого доверительного узла.

Механизм этой проверки прост и в его основе лежит т.н. «Список отозванных сертификатов» (CRL – «Certificate Revocation List»). У каждого из центров сертификации имеется данный список, представляющий простой перечень серийных номеров отозванных сертификатов. Соответственно любой, кто хочет проверить подлинность сертификата, попросту загружает данный список и ищет в нём номер проверяемого сертификата. Если номер обнаружится – это значит, что сертификат отозван.

  • Центры сертификации должны справляться с нагрузкой в режиме реального времени;
  • Центры сертификации должны гарантировать свою доступность в любое время;
  • Из-за запросов реального времени центры сертификации получают информацию о том, какие сайты посещал каждый конкретный пользователь.

Таким образом, в данной статье рассмотрены все ключевые средства, предоставляемые протоколом TLS для защиты информации. За некоторую отсебятину в статье прошу прощения, это издержки изначальной цели выполнения перевода.

Создание ролей в керберизированным Hive с включённым TLS в Cloudera CDH с помощью утилиты beeline

Запрашиваем kerberos-билет на машине с установленной ролью Hive, запускаем beeline и подключаемся к Hive:

Без указания ssl-настроек в строке подключения, в логах HiveServer2 будут видны ошибки:

Добавление роли для администрирования Hive (server1) и назначение этой роли на группу администраторов:

На всякий случай, привожу различные операции. Кстати, команды можно набирать буквами в нижнем регистре.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *