Kafka-ui Contributing

Kafka를 도입하면서 ui tool이 필요했고, 토픽, connect, schema registry, cluster 정보 등을 통합하여 한 화면에서 보여주는 Kafka ui를 선택

RBAC(Role Based Access Control) 기능도 탑재되어서 관리자 권한과 개발자 권한 등 권한 관리도 가능하다.

원하는 목표는 관리자 권한과 읽기 전용 권한으로 나누는 것.
읽기 전용은 누구나 인증(authenticate)만 완료되었다면 부여받도록 하고 싶었다.

RBAC (Role based access control) | kafbat UI

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
굉장히 꼼꼼히 봐주고 빠르게 반영해줘서 릴리즈 될 수 있었다.