Как устранить неполадки с аутентификацией Kerberos для Hive Metastore

HadoopHadoopBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом руководстве представлена всесторонняя инструкция по устранению неполадок с аутентификацией Kerberos для Hive Metastore в среде Hadoop. Мы рассмотрим основы аутентификации Kerberos, пройдемся по процессу настройки Kerberos для Hive Metastore и изучим эффективные стратегии решения распространенных проблем с аутентификацией.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL hadoop(("Hadoop")) -.-> hadoop/HadoopHiveGroup(["Hadoop Hive"]) hadoop(("Hadoop")) -.-> hadoop/HadoopYARNGroup(["Hadoop YARN"]) hadoop/HadoopYARNGroup -.-> hadoop/yarn_setup("Hadoop YARN Basic Setup") hadoop/HadoopYARNGroup -.-> hadoop/resource_manager("Resource Manager") hadoop/HadoopYARNGroup -.-> hadoop/node_manager("Node Manager") hadoop/HadoopHiveGroup -.-> hadoop/hive_setup("Hive Setup") hadoop/HadoopHiveGroup -.-> hadoop/secure_hive("Securing Hive") subgraph Lab Skills hadoop/yarn_setup -.-> lab-417739{{"Как устранить неполадки с аутентификацией Kerberos для Hive Metastore"}} hadoop/resource_manager -.-> lab-417739{{"Как устранить неполадки с аутентификацией Kerberos для Hive Metastore"}} hadoop/node_manager -.-> lab-417739{{"Как устранить неполадки с аутентификацией Kerberos для Hive Metastore"}} hadoop/hive_setup -.-> lab-417739{{"Как устранить неполадки с аутентификацией Kerberos для Hive Metastore"}} hadoop/secure_hive -.-> lab-417739{{"Как устранить неполадки с аутентификацией Kerberos для Hive Metastore"}} end

Основы аутентификации Kerberos

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

Концепции Kerberos

  1. Принципал (Principal): Принципал Kerberos - это уникальная идентификация в области Kerberos (realm), которая может быть пользователем, хостом или сервисом.
  2. Область (Realm): Область Kerberos - это логический сетевой домен, в котором выполняется аутентификация Kerberos. Обычно она именуется в соответствии с соглашением об именах доменов, например, EXAMPLE.COM.
  3. Центр распределения ключей (Key Distribution Center, KDC): KDC - это центральный орган в области Kerberos, который отвечает за аутентификацию принципалов и выдачу билетов.
  4. Билет на получение билетов (Ticket Granting Ticket, TGT): TGT - это билет, выданный KDC, который позволяет принципалу запрашивать билеты на доступ к другим принципалам или сервисам.
  5. Билет на доступ к сервису (Service Ticket): Билет на доступ к сервису - это билет, выданный KDC принципалу, который позволяет этому принципалу пройти аутентификацию в конкретном сервисе.

Процесс аутентификации Kerberos

  1. Клиент (принципал) запрашивает у KDC билет на получение билетов (TGT), предоставляя свое имя пользователя и пароль.
  2. KDC проверяет учетные данные клиента и выдает TGT, который зашифрован с использованием пароля клиента.
  3. Клиент использует TGT для запроса у KDC билета на доступ к конкретному сервису.
  4. KDC проверяет TGT клиента и выдает билет на доступ к сервису, который зашифрован с использованием секретного ключа сервиса.
  5. Клиент представляет билет на доступ к сервису сервису, который проверяет билет и предоставляет клиенту доступ.
sequenceDiagram participant Client participant KDC participant Service Client->>KDC: Request TGT KDC-->>Client: Issue TGT Client->>KDC: Request Service Ticket KDC-->>Client: Issue Service Ticket Client->>Service: Present Service Ticket Service-->>Client: Grant access

Настройка Kerberos для Hive Metastore

Hive Metastore - это важный компонент экосистемы Hadoop, который хранит метаданные о таблицах Hive, разделах, столбцах и другой связанной информации. Чтобы обеспечить безопасность Hive Metastore, рекомендуется интегрировать его с аутентификацией Kerberos.

Предварительные требования

  1. Сервер Kerberos KDC (Key Distribution Center) установлен и настроен.
  2. На сервере и клиентах Hive установлены и настроены клиентские библиотеки Kerberos.

Шаги по настройке Kerberos для Hive Metastore

  1. Создайте Kerberos-принципала (principal) для сервиса Hive Metastore:

    kadmin.local -q "addprinc -randkey hive/[email protected]"
  2. Создайте файл ключевой таблицы (keytab) для принципала сервиса Hive Metastore:

    kadmin.local -q "ktadd -k /etc/hive/conf/hive.keytab hive/[email protected]"
  3. Настройте Hive Metastore для использования аутентификации Kerberos:

    • В файле hive-site.xml установите следующие свойства:
      <property>
        <name>hive.metastore.authentication</name>
        <value>KERBEROS</value>
      </property>
      <property>
        <name>hive.metastore.kerberos.principal</name>
        <value>hive/[email protected]</value>
      </property>
      <property>
        <name>hive.metastore.kerberos.keytab.file</name>
        <value>/etc/hive/conf/hive.keytab</value>
      </property>
  4. Перезапустите сервис Hive Metastore, чтобы изменения вступили в силу.

Проверка аутентификации Kerberos для Hive Metastore

  1. Получите Kerberos-тикет для пользователя:

    kinit [email protected]
  2. Подключитесь к Hive Metastore с использованием пользователя, прошедшего аутентификацию по Kerberos:

    beeline -u "jdbc:hive2://hive-metastore.example.com:10000/;principal=hive/[email protected]"

Если подключение прошло успешно, то Hive Metastore теперь настроен для использования аутентификации Kerberos.

Устранение неполадок с аутентификацией Kerberos

При настройке аутентификации Kerberos для Hive Metastore вы можете столкнуться с различными проблемами. Вот некоторые распространенные проблемы и шаги по их устранению:

Проверка конфигурации Kerberos

  1. Убедитесь, что клиент Kerberos правильно настроен на сервере и клиентах Hive:

    • Проверьте файл /etc/krb5.conf на правильность настроек области Kerberos (realm) и сервера KDC.
    • Убедитесь, что пути к принципалам Kerberos (principal) и файлам ключевых таблиц (keytab) указаны правильно в файле hive-site.xml.
  2. Используйте команду kinit для получения Kerberos-тикета для пользователя и проверьте его действительность:

    kinit [email protected]
    klist

Распространенные проблемы с аутентификацией Kerberos

  1. Неудачная аутентификация: Если вы сталкиваетесь с ошибкой, подобной "Authentication failed: javax.security.sasl.SaslException: GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)]":

    • Убедитесь, что принципал Kerberos и файл ключевой таблицы правильно настроены в файле hive-site.xml.
    • Проверьте, что файл ключевой таблицы Kerberos имеет правильные разрешения и может быть прочитан сервисом Hive Metastore.
  2. Неудачная авторизация: Если вы сталкиваетесь с ошибкой, подобной "Access denied: user [user] is not allowed to impersonate [hive]":

    • Проверьте сопоставление принципалов Kerberos в файле hive-site.xml.
    • Убедитесь, что у пользователя есть необходимые разрешения для доступа к Hive Metastore.
  3. Истечение срока действия тикета: Если вы сталкиваетесь с ошибкой, подобной "Kerberos ticket has expired":

    • Получите новый Kerberos-тикет с помощью команды kinit.
    • Проверьте период действительности Kerberos-тикета и, при необходимости, скорректируйте его.
  4. Проблемы с сетевым соединением: Если вы сталкиваетесь с ошибкой, подобной "Cannot contact any KDC for realm 'EXAMPLE.COM'":

    • Проверьте сетевую связь между сервером Hive, клиентами и сервером Kerberos KDC.
    • Проверьте настройки брандмауэра и убедитесь, что необходимые порты открыты.

Устраняя эти распространенные проблемы, вы можете выявить и решить проблемы с аутентификацией Kerberos для Hive Metastore.

Заключение

По окончании этого учебника, посвященного Hadoop, вы будете хорошо понимать аутентификацию Kerberos и сможете устранять и решать проблемы, связанные с Kerberos, для Hive Metastore в своей инфраструктуре Hadoop. Эти знания помогут вам обеспечить безопасный и надежный доступ к данным в экосистеме Hadoop.