Использование Ranger в Kafka
После активации плагина Ranger все действия в сервисе Kafka (создание топиков, запись сообщений, чтение сообщений, изменение конфигурации топиков и т.д.) возможны только после настройки политики авторизации для пользователя.
Настройка политики авторизации
ПРИМЕЧАНИЕ
|
Для добавления новой политики для пользователя к созданной службе Kafka:
-
Создайте пользователя в Ranger. Для этого в верхнем меню интерфейса Ranger выберите Settings → Users/Groups/Roles и нажать Add new user.
Создание пользователя в RangerСоздание пользователя в Ranger -
В открывшемся окне заполните необходимые данные для пользователя:
-
User Name — имя пользователя. Это имя не может дублироваться в системе. Имя должно совпадать с именем пользователя в базе данных KDC или LDAP. Например, для пользователя с принципалом
writer@ADS-KAFKA.LOCAL
имя в Ranger должно бытьwriter
. -
New Password — пароль пользователя.
-
Password Confirm — подтверждение пароля пользователя.
-
First Name — личное имя пользователя.
-
Last Name — фамилия пользователя.
-
Email Address — email-адрес пользователя.
-
Select Role — выбор роли пользователя (Admin, User). Это обязательное поле.
-
Group — выбор группы/групп, к которым принадлежит пользователь.
Создание пользователя в RangerСоздание пользователя в Ranger
-
-
Кликнуть Save.
-
В окне Service Manager кликнуть на название службы Kafka.
Переход к созданной службе политикПереход к созданной службе политик -
В открывшемся окне List of Policies нажмите Add new policy, чтобы добавить новую политику для пользователя.
Создание политики авторизацииСоздание политики авторизации -
В открывшемся окне Create Policy в разделе Policy Details заполните:
-
Policy Name — имя политики. Это имя не может быть дублировано для такого же сервиса в системе. Это поле обязательно для заполнения.
-
Policy Label — предоставляет следующие возможности:
-
Позволяет пользователю группировать наборы политик с помощью одной или нескольких меток.
-
Пользователь может искать политики по названиям меток. Поиск можно осуществлять как на странице списка политик, так и на странице отчета.
-
Помогает пользователю экспортировать/импортировать политики. Если пользователю необходимо экспортировать определенный набор политик, он может найти метку политики и экспортировать определенный набор политик.
-
-
Topic — название категории или темы (топика), в которой публикуются сообщения.
-
Audit Logging — определяет, будет ли проводиться аудит конкретной политики.
-
Enable/Disable — по умолчанию политика включена. Вы можете отключить политику, чтобы ограничить доступ пользователей/групп для этой политики.
-
Include/Exclude — флаг включения означает, что будут учитываться значения, введенные в поле. Значение по умолчанию установлено как
include
. Флаг исключения исключит все имена таблиц или столбцов, введенные в этом конкретном поле. -
Discription — цель политики. Это поле является необязательным.
Раздел Policy Details окна Create PolicyРаздел Policy Details окна Create Policy
-
-
В разделе Allow Condition окна Create Policy заполните необходимые поля:
-
Select Role — роль, к которой применяется эта политика. Роль — набор разрешений. Роли представляют собой более простой способ управления набором разрешений на основе определенных критериев доступа.
-
Select Group — группа, к которой применяется эта политика. Чтобы повысить статус пользователя до администратора, установите флажок Delegate Admin. Администраторы могут редактировать или удалять политику и создавать дочерние политики. Публичная группа содержит всех пользователей, поэтому предоставление доступа к публичной группе дает доступ всем пользователям.
-
Select User — пользователь, к которому применяется эта политика (вне уже указанной группы). Можно сделать пользователя администратором этой политики. Администраторы могут создавать дочерние политики на основе существующих политик.
-
Permissions — добавляет или удаляет разрешения:
-
Publish
— процесс, который публикует сообщения производителей топиков в Kafka. -
Consume
— процесс, который читает и обрабатывает сообщения производителей топиков в Kafka. -
Configure
— настройка брокера/кластера Kafka. -
Describe
— получение метаданных по топику в Kafka.
-
-
Delegate Admin — для назначения привилегий администратора пользователям или группам, указанным в политике.
-
Policy Conditions — нажав + под Add conditions, можно добавить дополнительные условия.
Раздел Allow Condition окна Create PolicyРаздел Allow Condition окна Create Policy
ПРИМЕЧАНИЕУсловия выполняются в порядке, указанном в политике. Сначала применяется условие, находящееся в начале списка, затем второе, третье и так далее. -
-
Кликнуть Add.
Работа авторизованного пользователя в Kafka
После активации Ranger и настройки политики авторизации для пользователя работа в Kafka происходит в соответствии с шагами, описанными в статьях:
-
Использование MIT Kerberos в Kafka — для пользователя, имеющего принципал в среде, защищенной по протоколу Kerberos SASL.
-
Защита канала по протоколу SSL в Kafka — для пользователя, имеющего принципал в среде, использующей протокол Kerberos SASL с защитой канала по протоколу SSL.
-
Использование Kerberos с MS Active Directory в Kafka — для пользователя, имеющего учетную запись в Active Directory и соответствующий сертификат SSL LDAP-сервера.
Любое действие неавторизованного пользователя вызовет ошибку. Например, попытка записать сообщения в топик new-topic
для пользователя, в политике авторизации которого не указано разрешение Publish
, вызовет ошибки следующего содержания:
[2022-08-29 10:21:10,094] WARN [Producer clientId=console-producer] Error while fetching metadata with correlation id 3 : {new-topic=TOPIC_AUTHORIZATION_FAILED} (org.apache.kafka.clients.NetworkClient) [2022-08-29 10:21:10,097] ERROR [Producer clientId=console-producer] Topic authorization failed for topics [new-topic] (org.apache.kafka.clients.Metadata) [2022-08-29 10:21:10,098] ERROR Error when sending message to topic new-topic with key: null, value: 1 bytes with error: (org.apache.kafka.clients.producer.internals.ErrorLoggingCallback) org.apache.kafka.common.errors.TopicAuthorizationException: Not authorized to access topics: [new-topic]