TGViewer
Сочный DevOps Сочный DevOps @andtree_sec · 420 subscribers
Post #152 165
Интеграция kafbat и keycloak

Сначала на стороне keycloak нужно создать клиента. И обязательно создать маппер, который собственно за маппит ваши роли на верхней уровень, например roles. JSON должен быть примерно таким:
"roles": [
"<role1>",
"<role2>",
],

Допустим у нас будет две роли, admins, viewers. В kafka-ui.yaml нужно добавить следующее:
auth:
type: OAUTH2
oauth2:
client:
keycloak:
clientId: <clientId>
clientSecret: <clientSecret>
scope: openid
client-name: keycloak
provider: keycloak
redirect-url: https://<kafka_ui_domain>/login/oauth2/code/keycloak
authorization-grant-type: authorization_code
issuer-uri: https://<keycloak_domain>/realms/<realm_name>
user-name-attribute: preferred_username
custom-params:
type: oauth
roles-field: roles


Это касательно интеграции с keycloak. Поле roles-field как раз отвечает за получение из токена ролей и да, оно не умеет брать их из вложенной структуры вида resource_access.<client_id>.roles. Поэтому мы создали маппер выше.

Далее подключаем там же маппинг ролей уже на нашей стороне:
rbac:
roles:
- name: "admins"
clusters:
- <cluster_name_1>
- <cluster_name_2>
subjects:
- provider: oauth
type: role
value: "admins" ## Имя роли в KK

permissions:
- resource: applicationconfig
actions: all

- resource: clusterconfig
actions: all

- resource: topic
value: ".*"
actions: all

- resource: consumer
value: ".*"
actions: all

- resource: schema
value: ".*"
actions: all

- resource: connect
value: ".*"
actions: all

- resource: ksql
actions: all

- resource: acl
actions: all

- resource: audit
actions: all

- name: "viewers"
clusters:
- <cluster_name_1>
- <cluster_name_2>
subjects:
- provider: oauth
type: role
value: "viewers" ## Имя роли в KK
permissions:
- resource: clusterconfig
actions: [ "view" ]

- resource: topic
value: ".*"
actions:
- VIEW
- MESSAGES_READ

- resource: consumer
value: ".*"
actions: [ view ]

- resource: schema
value: ".*"
actions: [ view ]

- resource: connect
value: ".*"
actions: [ view ]

- resource: acl
actions: [ view ]


Любой залогиненый в KK пользователь получит пустой дашборд без возможности что-либо сделать. Пользователи добавленные в соответствующие группы в КК получат тот доступ, который мы указали в kafka-ui выше.

#kafka
  • 👍 1
  • 🔥 1
More from @andtree_sec
  1. Sep 7, 2026Давненько не было сообщений. Скорее всего в будущем они уйдут в telegraf, который я еще не…
  2. Jul 6, 2026Последнее время на работе часто приходится работать с apache flink и даже что-то писать на…
  3. Jun 4, 2026Немножко про молекула тесты... У нас принято использовать в переменных lookup плагин для д…
  4. May 20, 2026Очередной небольшой проект. Веб-приложение, которое агрегирует через стандартный механиз g…
  5. May 15, 2026Включаем профилирование в ansible Профилирование, это вывод даты, времени запуска и итогов…
  6. Apr 17, 2026Так выглядит общий dashbord работы с инцидентами.
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →