Hi Jiwei,

Sorry, my title seems confusing. I just refactor the
PulsarAuthorizationProvider by moving superuser/tenantAdmin checks to
AuthorizationService from PulsarAuthorizationProvider.

IMO, the superuser and tenant admin are built-in in the Pulsar, not
the third party, we also provide the isSuperUser and isTenantAdmin
methods used for fine-grained control in the AuthorizationProvider, so
I think to move superuser/tenantAdmin checks to AuthorizationService
from PulsarAuthorizationProvider.

Thanks,
Zixuan

guo jiwei <techno...@apache.org> 于2023年7月10日周一 16:07写道:
>
> Hi Zixuan,
>   From the perspective of interface implementation, for example, for
> `allowTopicOperationAsync`,
>   we need to determine whether the role is admin or super user in
> PulsarAuthorizationProvider, not in AuthorizationService.
>
> Regards
> Jiwei Guo (Tboy)
>
>
> On Fri, Jul 7, 2023 at 5:20 PM Zixuan Liu <node...@gmail.com> wrote:
>
> > Hello everyone,
> >
> > When a role wants to use the resource, the role needs to have resource
> > permissions.
> >
> > The process is to first check whether the role is the superuser or
> > tenant administrator. If yes, operations are allowed. Otherwise, check
> > the policies stored in zk.
> >
> > Right now, we have the AuthorizationService and AuthorizationProvider,
> > the AuthorizationService wraps the AuthorizationProvider call. When
> > you check the code, you will find that both classes have the
> > superuser/tenantAdmin checks in certain places, this may cause
> > confusion when developing the custom AuthorizationProvider, so I
> > suggest unifying superuser/tenantAdmin checks in the
> > `AuthorizationService`, and then the `AuthorizationProvider` only
> > needs to consider their business permissions.
> >
> > I created a PR a while ago, you can check it out:
> > https://github.com/apache/pulsar/pull/20145,
> >
> > Thanks,
> > Zixuan
> >

Reply via email to