Использование Ranger в Kafka
После активации плагина Ranger Kafka, создания сервиса Ranger или подключения к существующему сервису (в зависимости от значения параметра Override service policies) все действия в сервисе Kafka (создание топиков, запись сообщений, чтение сообщений, изменение конфигурации топиков и т.д.) возможны только после настройки политики авторизации для пользователя.
Настройка политики авторизации
ПРИМЕЧАНИЕ
|
Чтобы добавить новую политику для пользователя к сервису Ranger для 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
,Auditor
). -
Group — выбор группы/групп, к которым принадлежит пользователь.
Создание пользователя в RangerСоздание пользователя в Ranger
-
-
Кликните Save.
-
В окне Service Manager кликните на название сервиса Ranger для Kafka.
Переход к созданному сервису политикПереход к созданному сервису политик -
В открывшемся окне List of Policies нажмите Add new policy, чтобы добавить новую политику для пользователя.
Создание политики авторизацииСоздание политики авторизации -
В открывшемся окне Create Policy:
-
заполните поля в разделе Policy Details:
-
Policy Name — имя политики. Это имя не может быть дублировано для такого же сервиса в системе. Поле обязательно для заполнения.
-
Policy Label — предоставляет следующие возможности:
-
Позволяет пользователю группировать наборы политик с помощью одной или нескольких меток.
-
Пользователь может искать политики по названиям меток. Поиск можно осуществлять как на странице списка политик, так и на странице отчета.
-
Помогает пользователю экспортировать/импортировать политики. Если пользователю необходимо экспортировать определенный набор политик, он может найти метку политики и экспортировать определенный набор политик.
-
-
Description — цель политики. Это поле является необязательным.
-
Policy Conditions — нажав + под Add conditions, можно добавить дополнительные условия.
-
Add Validity Period — время начала и окончания политики.
-
-
в разделе Policy Details установите нужные положения переключателей:
-
Audit Logging — определяет, будет ли проводиться аудит конкретной политики.
-
Enable/Disabled — по умолчанию политика включена. Вы можете отключить политику, чтобы ограничить доступ пользователей/групп для этой политики.
-
Override/Normal — указывает политику переопределения. Если выбрано
Override
, разрешения на доступ в политике переопределяют разрешения на доступ в существующих политиках. Эту функцию можно использовать вместе с Add Validity Period для создания временных политик доступа, которые переопределяют существующие политики.
-
-
в разделе Resources:
-
При необходимости заполните поле, определяющее значение параметра (
topic
,transactionalid
,cluster
,delegationtoken
,consumergroup
). -
Установите нужное положение переключателя Include/Exclude. Положение
Include
означает, что будут учитываться значения, введенные в поле. ПоложениеExclude
исключит все имена таблиц или столбцов, введенные в этом конкретном поле.Разделы Policy Details и Resources окна Create PolicyРазделы Policy Details и Resources окна Create Policy
-
-
заполните поля в разделе Allow Condition:
-
Select Role — роль, к которой применяется эта политика. Роль — набор разрешений. Роли представляют собой более простой способ управления набором разрешений на основе определенных критериев доступа.
-
Select Group — группа, к которой применяется эта политика. Чтобы повысить статус пользователя до администратора, установите флажок Delegate Admin. Администраторы могут редактировать или удалять политику и создавать дочерние политики. Публичная группа содержит всех пользователей, поэтому предоставление доступа к публичной группе дает доступ всем пользователям.
-
Select User — пользователь, к которому применяется эта политика (вне уже указанной группы). Можно сделать пользователя администратором этой политики. Администраторы могут создавать дочерние политики на основе существующих политик.
-
Permissions — добавляет или удаляет разрешения:
-
Publish
— процесс, который публикует сообщения производителей топиков в Kafka. -
Consume
— процесс, который читает и обрабатывает сообщения производителей топиков в Kafka. -
Configure
— настройка брокера/кластера Kafka. -
Describe
— получение метаданных по топику в Kafka.
-
-
Delegate Admin — для назначения привилегий администратора пользователям или группам, указанным в политике.
-
Deny All Other Accesses — запрещает все остальные доступы.
Раздел 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]