I see the consumer group much like the username in relational database
access credentials. We routinely use the consumer group name as the means
of identifying the consumer for operational things, such as alerting based
on consumer group lag, autoscaling based on lag, and tooling around
manipulating the consumer group offset for a particular service. The
consumer group allows us to know, operationally, which offsets we are
observing or manipulating, and ideally we would like to limit the set of
consumer groups possible.

In practice, I regularly see people simply append an incrementing integer
to the end of their consumer group (cg, cg1, cg2, cg1234) when they want to
reset their application, INSTEAD of following offset reset or kafka-streams
application reset procedures. Sure, it would be nice to get everyone to
follow recommended procedures, but people do what they CAN do, not what
they're supposed to do. This has significant impact on the brokers and
surrounding tooling (orphaned internal topics with indefinite retention,
falsely-firing lag monitoring, broken auto-scaling), and instead of us
building out layers of supportive tooling to isolate ourselves from it, why
not simply set up ACLs to enforce which consumer groups an application can
and cannot use?

Does this need a KIP? Or is a bug report simply enough? I am unsure how
compatibility would work, so I am leaning towards a KIP...

Thanks
Adam

On Wed, Aug 21, 2019 at 5:59 PM Colin McCabe <cmcc...@apache.org> wrote:

> I think it's worth considering  separating out the permissions needed to
> create a consumer group from the permissions needed to join one.  We
> distinguish these permissions for topics, and people generally find it
> useful.  We could start checking CREATE on GROUP, perhaps?  It might be
> hard to do in a compatible way.
>
> cheers,
> Colin
>
>
> On Wed, Aug 21, 2019, at 12:05, Adam Bellemare wrote:
> > +users mailing list
> >
> > David,
> >
> > I don't think I really understand your email. Are you saying that this
> can
> > already be achieved only using the READ ACL?
> >
> > Thanks
> > Adam
> >
> >
> >
> > On Wed, Aug 21, 2019 at 3:58 AM David Jacot <dja...@confluent.io> wrote:
> >
> > > Hello,
> > >
> > > It would be better to ask such question on the user mailing list.
> > >
> > > The reason is that the group is created automatically when a consumer
> > > joins it. It is not created explicitly so it can be restricted.
> > >
> > > In your case, you could setup a ACL to authorize the application to
> only
> > > use the group you have defined. It would prevent the application from
> > > creating new groups. (READ Acl on Group resource with a specific name).
> > >
> > > Best,
> > > David
> > >
> > > On Mon, Aug 19, 2019 at 9:01 PM Adam Bellemare <
> adam.bellem...@gmail.com>
> > > wrote:
> > >
> > > > Hi All
> > > >
> > > > I am looking through the Confluent docs and core Kafka docs and
> don't see
> > > > an ACL for group creation:
> > > >
> https://docs.confluent.io/current/kafka/authorization.html#acl-format
> > > > and
> > > > https://kafka.apache.org/documentation/#security_authz
> > > >
> > > > My scenario is simple: We use the consumer group as the means of
> > > > identifying a single application, including tooling for managing
> > > > application resets, offset management, lag monitoring, etc. We often
> have
> > > > situations where someone resets their consumer group by appending an
> > > > incremented integer ("cg" to "cg1"), but it throws the rest of the
> > > > monitoring and management tooling out of whack.
> > > >
> > > > Is there a reason why we do not have ACL-based CREATE restrictions
> to a
> > > > particular consumer group? I am willing to do the work to implement
> this
> > > > and test it out, but I wanted to validate that there isn't a reason
> I am
> > > > missing.
> > > >
> > > > Thanks
> > > > Adam
> > > >
> > >
> >
>

Reply via email to