Если вы все еще не понимаете принцип Kerberos после прочтения, считайте меня неудачником!

задняя часть

системная среда

  • Операционная система: CentOS 6 или CentOS 7
  • Версия JDK: 1.8.0_151
  • Версия Амбари: 2.6.1
  • HDP-версия: 2.6.4.0

Расширенные ссылки

1. Обзор Kerberos

Сильная аутентификация и установление идентичностей пользователя являются основой безопасного доступа к Hadoop. Пользователи должны быть в состоянии надежно «идентифицировать» себя, а затем размножаться, что идентичность на протяжении всего кластера Hadoop. Как только это сделано, эти пользователи могут получить доступ к ресурсам (такие как файлы или каталоги) или взаимодействовать с кластером (например, работающие на работу MapReduce). Помимо пользователей, сами ресурсы Hadoop Cluster самими (такие как Hosts и Services) должны пройти аутентификацию друг с другом, чтобы избежать потенциально вредоносных систем или демонов «олицетворяющих» доверенных компонентов кластера, чтобы получить доступ к данным.

Использование HadoopKerberosв видеСтрогая аутентификация и распространение удостоверений для пользователей и службОсновы.Kerberos — это протокол проверки подлинности компьютерной сети, который позволяет объекту обмениваться данными в незащищенной сетевой среде, чтобы безопасно подтвердить свою личность другому объекту.Kerberos — это сторонний механизм аутентификации, при котором пользователи и службы полагаются на третью сторону (сервер Kerberos) для аутентификации друг друга.Kerberos Serverсам назвалЦентр распространения ключей или KDC. На высоком уровне он состоит из трех частей:

  • пользователей и сервисы, о которых он знает (называемыеосновной корпус) И их соответствующую базу данных паролей Kerberos.
  • ОдинСервер аутентификации (AS): подтвердите личность Клиента (убедитесь, что вы являетесь лицом, указанным в удостоверении личности), и, если проверка будет пройдена, Клиенту будет выдан Билет на предоставление билетов (TGT).
  • ОдинСервер выдачи билетов (сокращенно TGS): получите билет (серверный билет, сокращенно ST) для доступа к серверной части через TGT (билет, отправленный AS клиенту). ST (Service Ticket) также имеет информацию, называемую TGS Ticket.

В качестве примера возьмем обычный поезд:

Пользователь в первую очередь запрашивает аутентификацию от AS. В ВИДЕвозвращениеKerberos User Основное использование шифрования паролейTGT, пароль известен только основному пользователю и AS. Принципал-пользователь расшифровывает TGT локально, используя свой пароль Kerberos, с тех пор и доticketПо истечении срока действия принципал-пользователь может использовать TGT для получения билета службы от TGS.Служебные билеты позволяют участникам получать доступ к службам.

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

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

Поскольку ресурс кластера (хост или служба) не может предоставлять пароль каждый раз при расшифровке TGT, они используют метод, называемыйkeytabспециальный файл,Этот файл содержит учетные данные проверки подлинности для субъекта ресурсов..

Сервер Kerberos контролируетсяХосты, пользователи и наборы услугназываетсяполе.

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

Аутентификация Kerberos делится на две фазы: первоначальная аутентификация, обеспечивающая последующую аутентификацию, и сами все последующие аутентификации.

1. Первоначальная проверка: билет на получение билета

На следующей диаграмме показано, как выполнить начальную проверку:

  • Клиент запускает сеанс Kerberos, запрашивая билет на предоставление билетов (TGT) из центра распространения ключей (KDC). Этот запрос обычно выполняется автоматически при входе в систему.

    Для получения дополнительных билетов на конкретную услугу требуется TGT. Билеты на выдачу билетов аналогичны паспортам. Как и паспорт, TGT идентифицирует вас и позволяет получить несколько «виз», здесь «виз» (билетов) не для зарубежных стран, а для удаленных компьютеров или сетевых служб. Как и паспорта и визы, билеты на выдачу билетов и различные другие билеты имеют ограниченный срок действия. Разница в том, что команда на основе Kerberos информирует вас о том, что у вас есть паспорт, и получает для вас визу. Вам не нужно проводить транзакцию самостоятельно.

    Другая ситуация, аналогичная билету на выдачу билетов, - это трехдневный ски-пасс, который можно использовать в четырех разных горнолыжных зонах. Пока срок действия вашего входного билета не истек, вы можете предъявить его на любом горнолыжном курорте, который вы решите посетить, и получить билет на подъемник, предоставленный этим горнолыжным курортом. Получив билет на подъемник, вы можете кататься на лыжах столько, сколько захотите. Если на следующий день вы поедете в другую зону катания, вам нужно будет снова предъявить свой пропуск и получить еще один билет на подъемник для новой зоны катания. Разница в том, что заказ на основе Kerberos уведомит вас о том, что у вас есть ски-пасс выходного дня, и даст вам билет на подъемник. Таким образом, вам не придется выполнять транзакцию самостоятельно.

  • KDC создает TGT и отправляет его клиенту в зашифрованном виде. Клиент расшифровывает TGT, используя свой пароль.

  • С действительным TGT клиент может запрашивать билеты для всех типов сетевых операций (например, rlogin или telnet), если срок действия TGT не истек. Этот билет обычно действителен в течение одного дня. Каждый раз, когда клиент выполняет уникальную сетевую операцию, у KDC запрашивается билет для этой операции.

2. Последующая проверка Kerberos

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

  • Клиент как доказательство их личности, отправив свой TGT в KDC, KDC запрашивает определенную услугу (например, удаленно войти в другой компьютер).

  • KDC отправил билет определенного сервиса клиенту.

    Например, предположим, что пользовательjoeДля доступа к необходимомуkrb5Проверьте общую файловую систему NFS. Поскольку пользователь уже аутентифицирован (то есть у него уже есть билет на выдачу билета), клиентская система NFS автоматически и прозрачно получит билет для службы NFS от KDC при попытке доступа к файлу.

    Например, предположим, что пользовательjoeна сервереbostonИспользуйте rlogin на . Поскольку пользователь уже аутентифицирован (то есть у него уже есть билет на выдачу билета), пользователь автоматически и прозрачно получит билет при выполнении команды rlogin. Этот пользователь может использовать этот билет для удаленного входа в любое время, чтобыbostonПока срок действия билета не истек. еслиjoeДля удаленного входа в компьютерdenver, вам нужно выполнить шаг 1, чтобы получить еще один билет.

  • Клиент отправляет билет на сервер.

    При использовании службы NFS клиент NFS автоматически и прозрачно отправляет билет службы NFS на сервер NFS.

  • Сервер разрешает этому клиенту доступ.

Судя по этим шагам, сервер не взаимодействует с KDC. Но на самом деле сервер связывается с KDC и регистрируется в KDC, как это делал первый клиент. Для простоты эта часть опущена.

Для получения более Kerberos объяснить принципы, относящиеся к следующей ссылке для понимания Принципов Kerberos также полезно:

В-третьих, основная концепция Kerberos.

1. Key Distribution Center, or KDC

Надежные источники для проверки подлинности в средах с поддержкой Kerberos.

2. Kerberos KDC Server

Компьютер или сервер, выступающий в роли центра распространения ключей (KDC).

3. Kerberos Client

Любая машина в кластере, которая проходит аутентификацию в KDC.

4. KDC Admin Account

Административная учетная запись, которую Ambari использует для создания принципалов в KDC и создания таблиц ключей.

5. Principal

Субъект Kerberos (также известный какосновной корпус) используется для обозначения уникального идентификатора в системе шифрования Kerberos.основной корпусвозможноПользователь(какjoe)илиСлужить(какnamenodeилиhive).

По соглашению имя субъекта делится на три части:Основное имя, экземпляр и область. Например, типичная основная часть Kerberos может бытьjoe/admin@EXAMPLE.COM.在本实例中:

  • joeявляется основным именем. Основное имя может быть именем пользователя, как показано здесь, или службой, такой как namenode.

  • adminявляется экземпляром. Для субъектов-пользователей экземпляры необязательны, для субъектов-служб экземпляры обязательны. Например, если пользовательjoeиногда выступает в роли системного администратора, он может использоватьjoe/adminОтличать себя от обычной личности пользователя. Аналогично, еслиjoeимеет учетную запись на двух разных хостах, он может использовать два основных имени с разными экземплярами, например.joe/node1.example.comиjoe/node2.example.com.请注意,Kerberos 服务会将joeиjoe/adminрассматриваются как два совершенно разных предмета.

    Для субъектов-служб экземпляр — это полное имя узла. Например,node1.example.comТак обстоит дело.

  • EXAMPLE.COMэто область Kerberos. Сферы рассматриваются в следующем подразделе.

Хадупкаждая служба и подслужбадолжны иметь своиосновной корпус. в данной областиосновное имяЗависит отосновное имяиимя экземплярасоставленный, в данном случае,имя экземпляраэто хост, на котором работает службаFQDN. Поскольку служба не входит в систему с паролем для получения своего билета, учетные данные аутентификации ее принципала хранятся вkeytabkeytab, который извлекается из базы данных Kerberos и хранится локально в безопасном каталоге вместе с субъектом-службой на узле компонента службы. НапримерNameNodeКомпонентыnode1.example.comна хосте включитьkerberosПосле этого он автоматически сгенерируетnn.service.keytabфайл и сохраняется в/etc/security/keytabsкаталог, владельцем пользователя являетсяhdfs:hadoop, разрешения есть400, как показано на рисунке:

служба ambari hadoop и принципалы, хранящиеся в Kerberos KDC, как показано ниже:

Соглашения об именах участников и Keytab

соглашение Пример
Principals service_component_name/FQDN@EXAMPLE.COM nn/node1.example.com@EXAMPLE.COM
Keytabs $service_component_abbreviation.service.keytab /etc/security/keytabs/nn.service.keytab

Обратите внимание на основное имя каждого субъекта-службы в предыдущем примере. Эти первичные имена, такие как nn или hive, представляют службу NameNode или Hive соответственно. Каждое основное имя добавляетсяИмя экземпляра, которое является полным доменным именем хоста, на котором он работает.. Это соглашение обеспечивает уникальные основные имена для служб, работающих на нескольких хостах, таких как DataNodes и NodeManagers. Добавьте имя хоста, чтобы отличать, например, запросы от DataNode A от запросов от DataNode B. Это важно по следующим причинам:

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

Ambari Principals

В дополнение к субъекту-службе Hadoop самой Ambari требуется набор участников Ambari для выполнения службы.дым", выполнять проверки работоспособности предупреждений и извлекать метрики из компонентов кластера. Файл keytab для участников Ambari находится на каждом узле кластера, как и файл keytab для субъектов-служб.

Ambari Principals описывать
Дым и пользователи Сервиса «Без головы» Ambari используется для выполнения «дымовых» проверок служб и проверки работоспособности предупреждений.
Ambari Server user При включении кластеризации для Kerberos конечные точки компонентов REST (например, компоненты YARN ATS) требуют проверки подлинности SPNEGO. Серверу Ambari требуется доступ к этим API и участнику Kerberos для аутентификации в этих API с помощью SPNEGO.

6. realms name

Сеть Kerberos, содержащая KDC и множество клиентов, аналогичная домену, в просторечии называемому областью.

7. keytab

keytab — это файл, содержащий принципы и зашифрованные основные ключи.

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

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

8. билет

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

  • Основное название службы
  • Основное имя пользователя
  • IP-адрес хоста пользователя
  • отметка времени
  • Значения, которые определяют срок службы билета
  • копия сеансового ключа

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

9. учетные данные

представляет собой пакет, содержащий билет и соответствующий сеансовый ключ. Учетные данные шифруются ключом запрашивающего принципала. Как правило, KDC генерирует учетные данные в ответ на запрос клиента на получение билета.

10. аутентификатор

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

4. Жизненный цикл билета

Всякий раз, когда основной орган приобретает билет, включая билет на получение билета (TGT-Granting Ticket, TGT), вы можете пройти Kinit.-lЗначение времени жизни, указанное опцией, если билет получен с помощью kinit. По умолчанию kinit использует максимальное значение времени жизни. Максимальное значение времени жизни (max_life), указанное в файле kdc.conf.

доступно через кинит-rОбновляемое значение времени жизни, указанное параметром, если для получения или обновления билета используется kinit. Максимальное возобновляемое значение срока службы (max_renewable_life), указанное в файле kdc.conf.

5. Основное имя Kerberos

Каждый билет идентифицируется основным именем. Имя участника может идентифицировать пользователя или службу. Вот несколько примеров основных имен:

основное имя инструкция
username@EXAMPLE.COM принципал пользователя
username/admin@EXAMPLE.COM администратора, который можно использовать для управления базой данных KDC.
K/M@EXAMPLE.COM Принципал имени главного ключа. Принципал имени главного ключа может быть связан с каждым
Основная ассоциация KDC.
krbtgt/EXAMPLE.COM@EXAMPLE.COM Принципал, используемый при создании билета на выдачу билетов.
kadmin/host1.example.com@EXAMPLE.COM Принципал основного сервера KDC, который разрешает доступ к KDC с помощью kadmind.
ambari-qa-xxx@EXAMPLE.COM Ambari используется для выполнения «дымовых» проверок служб и проверки работоспособности предупреждений.
HTTP/host1.example.com@EXAMPLE.COM Субъект, используемый для доступа к веб-интерфейсу Hadoop.

6. Вопросы, требующие внимания

1. Синхронизация часов

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

Максимальное значение по умолчанию для разницы фаз часов составляет 300 секунд (5 минут). Из соображений безопасности не увеличивайте разность фаз часов более чем на 300 секунд.

Метод настройки синхронизации часов:я указываю

Семь, преимущества и недостатки Kerberos

1. Преимущества

Более высокая производительность

Хотя мы неоднократно говорили, что Kerberos — это процесс аутентификации с участием трех сторон: Клиента, Сервера и KDC. Однако, как только Клиент получает Билет, который использовался для доступа к определенному Серверу, Сервер может проверить Клиента на основе этого Билета без необходимости повторного участия KDC. По сравнению с традиционным NTLM на основе Windows NT 4.0, который полностью полагается на доверенную третью сторону, он имеет значительное улучшение производительности.

Для достижения двусторонней аутентификации (взаимная аутентификация)

Традиционная аутентификация NTLM основана на предположении, что удаленная служба, к которой обращается Клиент, является доверенной и не требует аутентификации, поэтому NTLM не обеспечивает функцию двусторонней аутентификации. Это, очевидно, несколько идеалистично, и Kerberos компенсирует этот недостаток: клиенты могут требовать аутентификации личности Сервера перед доступом к ресурсам Сервера.

Поддержка делегирования

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

Совместимость

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

2. Неадекватность

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

  • Сеансовый ключ службы, совместно используемый сервером Kerberos и пользователем, является паролем пользователя.Серверу не нужно проверять подлинность пользователя при ответе, он напрямую предполагает, что пароль есть только у законных пользователей. Если злоумышленник перехватывает ответное сообщение, легко организовать криптографическую атаку.

  • AS (служба аутентификации личности) и TGS в Kerberos — это централизованное управление, которое легко создать узким местом.Производительность и безопасность системы также сильно зависят от производительности и безопасности AS и TGS. Перед AS и TGS должен быть контроль доступа для повышения безопасности AS и TGS.

  • Управление ключами усложняется по мере увеличения числа пользователей. Kerberos имеет хэш-значение пароля каждого пользователя, а AS и TGS отвечают за распределение ключей связи между пользователями. Предполагая, что есть n пользователей, которые хотят общаться одновременно, необходимо сохранить n × (n-1)/2 ключей.

8. Резюме

Эта статья в основном изОбзор Kerberos, описание процесса аутентификации, объяснение основных понятий, особенности Kerberos, преимущества и недостаткиПредставить Kerberos из аспектовКак использовать сервисы Hadoop в среде KerberosУчебник по статье, будем ждать с нетерпением, ха-ха

ссылка на расширение

использованная литература