title: How do I limit a Kafka client to only access one customer's data?
body: <p>I'm evaluating Apache Kafka for publishing some event streams (and commands) between my services running on machines.</p>
  
  <p>However, most of those machines are owned by customers, on their premises, and connected to their networks. </p>
  
  <p>I don't want a machine owned by one customer to have access to another customer's data.</p>
  
  <p>I see that Kafka has an <a href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-11+-+Authorization+Interface" rel="nofollow noreferrer">access control module</a>, which looks like it lets you restrict a client's access based on topic. </p>
  
  <p>So, I could create a <strong>topic per customer</strong> and restrict each customer to just their own topic. This seems like a bad idea that I could regret in the future, because I've seen things that recommend restricting the number of Kafka topics to the 1000s at most.</p>
  
  <p>Another design is to create a <strong>partition per customer</strong>. However, I don't see a way to restrict access if I do that.</p>
  
  <p>Is there a way out of this quandary?</p>