Kafka-ui Contributing
Kafka를 도입하면서 ui tool이 필요했고, 토픽, connect, schema registry, cluster 정보 등을 통합하여 한 화면에서 보여주는 Kafka ui를 선택
RBAC(Role Based Access Control) 기능도 탑재되어서 관리자 권한과 개발자 권한 등 권한 관리도 가능하다.
원하는 목표는 관리자 권한과 읽기 전용 권한으로 나누는 것.
읽기 전용은 누구나 인증(authenticate)만 완료되었다면 부여받도록 하고 싶었다.

oauth_github를 인증 수단으로 사용하고 user, organization, team 에 대해서 권한 처리 가능한데 특정 organization, team에 대해서 특정 권한을 주고
해당 그룹에 초대하여 재배포 없이 권한 관리할 수 있도록 한다.
rbac:
roles:
- name: "read-only"
clusters:
...
subjects:
- provider: oauth_github
type: team
value: "kafka-readonly"
permissions:
- resource: topic
value: "public.*"
actions: # can be a multiline list
- VIEW
- MESSAGES_READ
- ANALYSIS_VIEW
- resource: consumer
value: ".*"
actions: [ VIEW ]
- resource: schema
value: ".*"
actions: [ VIEW ]
해당 방법으로 진행하려 했으나 한계점 존재.
https://docs.github.com/en/rest/orgs/orgs?apiVersion=2022-11-28#list-organizations-for-the-authenticated-user
해당 api를 사용하는데 인증된 유저가 소속된 organization이 30개를 넘어가는 순간 인가되지 못한다.
따라서 일단 per_page를 100개로 늘렸다.
https://github.com/provectus/kafka-ui/pull/3864
그래도 한계점이 존재
애초에 read-only와 같은 권한은 default 권한으로 있으면 좋을거 같다는 생각에 이슈 생성 및 PR 생성.
https://github.com/kafbat/kafka-ui/issues/344
https://github.com/kafbat/kafka-ui/pull/1056
굉장히 꼼꼼히 봐주고 빠르게 반영해줘서 릴리즈 될 수 있었다.