Following up on the KIP discussion. Two options for authorizing consumers to read topic "t" as part of group "g": 1. READ permission on resource /topic/t 2. READ permission on resource /topic/t AND WRITE permission on /group/g
The advantage of (1) is that it is simpler. The disadvantage is that any member of any group that reads from t can commit offsets as any other member of a different group. This doesn't effect data security (who can access what) but it is a bit of a management issue--a malicious person can cause data loss or duplicates for another consumer by committing offset. I think I favor (2) but it's worth it to think it through. -Jay On Tue, Apr 21, 2015 at 2:43 PM, Parth Brahmbhatt < pbrahmbh...@hortonworks.com> wrote: > Hey Jun, > > Yes and we support wild cards for all acl entities principal, hosts and > operation. > > Thanks > Parth > > On 4/21/15, 9:06 AM, "Jun Rao" <j...@confluent.io> wrote: > > >Harsha, Parth, > > > >Thanks for the clarification. This makes sense. Perhaps we can clarify the > >meaning of those rules in the wiki. > > > >Related to this, it seems that we need to support wildcard in cli/request > >protocol for topics? > > > >Jun > > > >On Mon, Apr 20, 2015 at 9:07 PM, Parth Brahmbhatt < > >pbrahmbh...@hortonworks.com> wrote: > > > >> The iptables on unix supports the DENY operator, not that it should > >> matter. The deny operator can also be used to specify ³allow user1 to > >>READ > >> from topic1 from all hosts but host1,host2². Again we could add a host > >> group semantic and extra complexity around that, not sure if its worth > >>it. > >> In addition with DENY operator you are now not forced to create a > >>special > >> group just to support the authorization use case. I am not convinced > >>that > >> the operator it self is really all that confusing. There are 3 practical > >> use cases: > >> - Resource with no acl what so ever -> allow access to everyone ( just > >>for > >> backward compatibility, I would much rather fail close and force users > >>to > >> explicitly grant acls that allows access to all users.) > >> - Resource with some acl attached -> only users that have a matching > >>allow > >> acl are allowed (i.e. ³allow READ access to topic1 to user1 from all > >> hosts², only user1 has READ access and no other user has access of any > >> kind) > >> - Resource with some allow and some deny acl attached -> users are > >>allowed > >> to perform operation only when they satisfy allow acl and do not have > >> conflicting deny acl. Users that have no acl(allow or deny) will still > >>not > >> have any access. (i.e. ³allow READ access to topic1 to user1 from all > >> hosts except host1 and host², only user1 has access but not from host1 > >>an > >> host2) > >> > >> I think we need to make a decision on deny primarily because with > >> introduction of acl management API, Acl is now a public class that will > >>be > >> used by Ranger/Santry and other authroization providers. In Current > >>design > >> the acl has a permissionType enum field with possible values of Allow > >>and > >> Deny. If we chose to remove deny we can assume all acls to be of allow > >> type and remove the permissionType field completely. > >> > >> Thanks > >> Parth > >> > >> On 4/20/15, 6:12 PM, "Gwen Shapira" <gshap...@cloudera.com> wrote: > >> > >> >I think thats how its done in pretty much any system I can think of. > >> > > >> > >> > >