Kerberos

Обзор работы Kerberos

Строгая аутентификация и проверка подлинности каждого пользователя является обязательным требованием для безопасного доступа к кластеру Hadoop. Все пользователи должны быть безошибочно идентифицированы внутри кластера. Пользователи, успешно прошедшие идентификацию, получают доступ к ресурсам (например, файлы и директории) и могут взаимодействовать с кластером (например, выполнять MapReduce-задачи).

Если пользователю выдан доступ к кластеру под определенным именем, все компоненты кластера также доверяют этому имени. Процесс аутентификации может быть упрощен с использованием базы данных Kerberos, которая содержит учетные данные доступа для всех пользователей. Ресурсы Hadoop-кластера (такие как хосты и сервисы) также должны проходить взаимную аутентификацию. Это необходимо для предотвращения доступа к кластеру различных вредоносных систем, действующих под видом компонентов кластера.

Основные понятия Kerberos
Термин Описание

Key Distribution Center, KDC

Доверенный сервис, предоставляющий тикеты и временные сеансовые ключи

Kerberos KDC Server

Компьютер или сервер, на котором расположен KDC

Kerberos Client

Хост кластера, выполняющий аутентификацию через KDC

Kerberos Principal

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

Key

Уникальный ключ, присваиваемый каждому принципалу. Данный ключ отправляется в систему аутентификации

Keytab

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

Realm

Сеть Kerberos, которая включает KDC и одного или нескольких клиентов

KDC Admin Account

Аккаунт администратора, который используется в ADCM для создания новых принципалов и генерации KDC-ключей

Ticket Granting Server (TGS)

Сервер, выдающий тикеты аутентификации (ticket) и права доступа

Authentication Server (AS)

Сервер, выполняющий первоначальную проверку аутентификации и выпускающий Ticket Granting Ticket (TGT)

Ticket Granting Ticket

Тикет на выдачу тикета (TGT). Включает в себя следующее: вторая копия ключа сессии, имя пользователя, окончание действия тикета. Тикет зашифрован мастер-ключом KDC, который известен только KDC. Это означает, что только KDC может расшифровать TGT

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

Hadoop использует Kerberos для строгой аутентификации и для проверки подлинности пользователей и сервисов. Сервер Kerberos называется Key Distribution Center (KDC). Он состоит из трех ключевых компонентов:

  • База данных пользователей и сервисов MIT KDC — хранит принципалы и соответствующие пароли Kerberos.

  • Сервер Аутентификации (Authentication Server, AS) — выполняет первоначальную проверку подлинности и выдает тикет на выдачу тикета (Ticket Granting Ticket, TGT).

  • Сервис выдачи тикета (Ticket-Granting Service, TGS) — выдает Kerberos-токен на основании первичного тикета на выдачу тикета (TGT).

Упрощенный процесс аутентификации Kerberos представлен ниже:

  1. Принципал инициализирует процесс аутентификации на сервере аутентификации (AS).

  2. В качестве ответа AS отправляет принципалу TGT, зашифрованный паролем принципала. Этот пароль известен только принципалу и AS.

  3. Принципал расшифровывает полученный TGT, используя пароль Kerberos. С этого момента каждый принципал может использовать TGT для получения тикетов аутентификации от TGS. Эти тикеты позволяют принципалу получить доступ к различным сервисам.

Так как ресурсы кластера (сервисы и хосты) не могут каждый раз предоставлять пароль для расшифровки TGT, используется файл keytab. Этот файл содержит учетные данные для аутентификации ресурса. Совокупность хостов, пользователей и сервисов, управляемых Kerberos-сервером, называется Realm.

Пример

Ниже приведен простой пример процесса аутентификации с использованием Kerberos. В примере задействованы следующие компоненты:

  • EXAMPLE.COM — Kerberos realm.

  • Алиса — пользователь с именем принципала (UPN) alice@EXAMPLE.COM.

  • myservice — сервис, расположенный в узле server1.example.com и имеющий имя принципала сервиса (SPN) myservice/server1.example.com@EXAMPLE.COM.

  • kdc.example.com — центр распределения ключей (KDC) для области EXAMPLE.COM.

Чтобы получить доступ к сервису myservice, Алиса должна предоставить действующий тикет аутентификации для myservice. Этот процесс описан ниже (некоторые детали пропущены для краткости):

  1. Алиса должна получить тикет на выдачу тикета (TGT). Для этого Алиса инициирует запрос к Серверу Аутентификации (AS), который расположен на хосте kdc.example.com. Алиса идентифицирует себя как alice@EXAMPLE.COM.

  2. В качестве ответа, AS отправляет Алисе тикет на выдачу тикета (TGT), зашифрованный паролем принципала alice@EXAMPLE.COM.

  3. После получения зашифрованного сообщения Алиса использует пароль принципала alice@EXAMPLE.COM для декодирования сообщения.

  4. После успешного декодирования сообщения с TGT Алиса запрашивает сервисный тикет у сервиса выдачи тикетов (TGS, расположен на kdc.example.com), чтобы получить доступ к myservice/server1.example.com@EXAMPLE.COM. В запросе от Алисы содержится TGT, а в ответе — тикет аутентификации сервиса.

  5. Сервис выдачи тикетов (TGS) проверяет полученный TGT и выдает Алисе сервисный тикет аутентификации, зашифрованный ключом принципала myservice/server1.example.com@EXAMPLE.COM.

  6. Алиса отправляет сервисный тикет на сервис myservice. Сервис myservice расшифровывает сервисный тикет, используя ключ принципала myservice/server1.example.com@EXAMPLE.COM. Также сервис myservice выполняет проверку расшифрованного сервисного тикета.

  7. После успешной аутентификации Алиса получает права на использование сервиса myservice.

Процесс, описанный выше, показан на следующей схеме:

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

Типы центров распределения ключей (KDC)

Для керберизации кластера доступны следующие типы центров распределения ключей (KDC):

  • MIT Kerberos — состоит из базы данных принципалов и хранилища ключей Kerberos.

  • MS Active Directory — содержит базу данных принципалов и хранилище ключей Windows Server.

  • FreeIPA — бесплатная система управления идентификацией пользователей для Linux/UNIX с открытым исходным кодом.

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

Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней