Использование Ranger в Kafka

После активации плагина Ranger все действия в сервисе Kafka (создание топиков, запись сообщений, чтение сообщений, изменение конфигурации топиков и т.д.) возможны только после настройки политики авторизации для пользователя.

Настройка политики авторизации

ПРИМЕЧАНИЕ
  • Перед настройкой авторизации для данного пользователя должен быть создан принципал в базе данных MIT Kerberos или учетная запись в базе данных MS Active Directory.

  • Для получения дополнительной информации по авторизации в Kafka при помощи Ranger можно обратиться к статье Adding KAFKA Policies.

Для добавления новой политики для пользователя к созданной службе Kafka:

  1. Создайте пользователя в Ranger. Для этого в верхнем меню интерфейса Ranger выберите SettingsUsers/Groups/Roles и нажать Add new user.

    ads ranger 13 dark
    Создание пользователя в Ranger
    ads ranger 13 light
    Создание пользователя в Ranger
  2. В открывшемся окне заполните необходимые данные для пользователя:

    • 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 — выбор группы/групп, к которым принадлежит пользователь.

      ads ranger 14 dark
      Создание пользователя в Ranger
      ads ranger 14 light
      Создание пользователя в Ranger
  3. Кликнуть Save.

  4. В окне Service Manager кликнуть на название службы Kafka.

    ads ranger 08 dark
    Переход к созданной службе политик
    ads ranger 08 light
    Переход к созданной службе политик
  5. В открывшемся окне List of Policies нажмите Add new policy, чтобы добавить новую политику для пользователя.

    ads ranger 12 dark
    Создание политики авторизации
    ads ranger 12 light
    Создание политики авторизации
  6. В открывшемся окне Create Policy в разделе Policy Details заполните:

    • Policy Name — имя политики. Это имя не может быть дублировано для такого же сервиса в системе. Это поле обязательно для заполнения.

    • Policy Label — предоставляет следующие возможности:

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

      • Пользователь может искать политики по названиям меток. Поиск можно осуществлять как на странице списка политик, так и на странице отчета.

      • Помогает пользователю экспортировать/импортировать политики. Если пользователю необходимо экспортировать определенный набор политик, он может найти метку политики и экспортировать определенный набор политик.

    • Topic — название категории или темы (топика), в которой публикуются сообщения.

    • Audit Logging — определяет, будет ли проводиться аудит конкретной политики.

    • Enable/Disable — по умолчанию политика включена. Вы можете отключить политику, чтобы ограничить доступ пользователей/групп для этой политики.

    • Include/Exclude — флаг включения означает, что будут учитываться значения, введенные в поле. Значение по умолчанию установлено как include. Флаг исключения исключит все имена таблиц или столбцов, введенные в этом конкретном поле.

    • Discription — цель политики. Это поле является необязательным.

      ads ranger 15 dark
      Раздел Policy Details окна Create Policy
      ads ranger 15 light
      Раздел Policy Details окна Create Policy
  7. В разделе 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, можно добавить дополнительные условия.

      ads ranger 16 dark
      Раздел Allow Condition окна Create Policy
      ads ranger 16 light
      Раздел Allow Condition окна Create Policy
    ПРИМЕЧАНИЕ
    Условия выполняются в порядке, указанном в политике. Сначала применяется условие, находящееся в начале списка, затем второе, третье и так далее.
  8. Кликнуть Add.

Работа авторизованного пользователя в Kafka

После активации Ranger и настройки политики авторизации для пользователя работа в Kafka происходит в соответствии с шагами, описанными в статьях:

Любое действие неавторизованного пользователя вызовет ошибку. Например, попытка записать сообщения в топик 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]
Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней