mumrah commented on code in PR #12673:
URL: https://github.com/apache/kafka/pull/12673#discussion_r976972071


##########
docs/security.html:
##########
@@ -1136,13 +1136,29 @@ <h3 class="anchor-heading"><a id="security_sasl" 
class="anchor-link"></a><a href
     </ol>
 
     <h3 class="anchor-heading"><a id="security_authz" 
class="anchor-link"></a><a href="#security_authz">7.4 Authorization and 
ACLs</a></h3>
-    Kafka ships with a pluggable Authorizer and an out-of-box authorizer 
implementation that uses zookeeper to store all the acls. The Authorizer is 
configured by setting <tt>authorizer.class.name</tt> in server.properties. To 
enable the out of the box implementation use:
+    Kafka ships with a pluggable authorization framework, which is configured 
by setting <tt>authorizer.class.name</tt> in server.properties. Configured 
implementations must extend 
<code>org.apache.kafka.server.authorizer.Authorizer</code>. Kafka provides 
default implementations which store ACLs in the cluster metadata (either 
Zookeeper or the KRaft metadata log).
+
+    For Zookeeper-based clusters, the provided implementation is configurd as 
follows:
     <pre class="line-numbers"><code 
class="language-text">authorizer.class.name=kafka.security.authorizer.AclAuthorizer</code></pre>
-    Kafka acls are defined in the general format of "Principal P is 
[Allowed/Denied] Operation O From Host H on any Resource R matching 
ResourcePattern RP". You can read more about the acl structure in <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-11+-+Authorization+Interface";>KIP-11</a>
 and resource patterns in <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-290%3A+Support+for+Prefixed+ACLs";>KIP-290</a>.
 In order to add, remove or list acls you can use the Kafka authorizer CLI. By 
default, if no ResourcePatterns match a specific Resource R, then R has no 
associated acls, and therefore no one other than super users is allowed to 
access R. If you want to change that behavior, you can include the following in 
server.properties.
+    For KRaft clusters, use the following configuration on all nodes (whether 
controllers/brokers are combined or configured separately):

Review Comment:
   ```suggestion
       For KRaft clusters, use the following configuration on all nodes 
(brokers, controllers, or combined broker/controller nodes):
   ```



##########
docs/security.html:
##########
@@ -1136,13 +1136,29 @@ <h3 class="anchor-heading"><a id="security_sasl" 
class="anchor-link"></a><a href
     </ol>
 
     <h3 class="anchor-heading"><a id="security_authz" 
class="anchor-link"></a><a href="#security_authz">7.4 Authorization and 
ACLs</a></h3>
-    Kafka ships with a pluggable Authorizer and an out-of-box authorizer 
implementation that uses zookeeper to store all the acls. The Authorizer is 
configured by setting <tt>authorizer.class.name</tt> in server.properties. To 
enable the out of the box implementation use:
+    Kafka ships with a pluggable authorization framework, which is configured 
by setting <tt>authorizer.class.name</tt> in server.properties. Configured 
implementations must extend 
<code>org.apache.kafka.server.authorizer.Authorizer</code>. Kafka provides 
default implementations which store ACLs in the cluster metadata (either 
Zookeeper or the KRaft metadata log).
+
+    For Zookeeper-based clusters, the provided implementation is configurd as 
follows:

Review Comment:
   ```suggestion
       For Zookeeper-based clusters, the provided implementation is configured 
as follows:
   ```



##########
docs/security.html:
##########
@@ -1136,13 +1136,29 @@ <h3 class="anchor-heading"><a id="security_sasl" 
class="anchor-link"></a><a href
     </ol>
 
     <h3 class="anchor-heading"><a id="security_authz" 
class="anchor-link"></a><a href="#security_authz">7.4 Authorization and 
ACLs</a></h3>
-    Kafka ships with a pluggable Authorizer and an out-of-box authorizer 
implementation that uses zookeeper to store all the acls. The Authorizer is 
configured by setting <tt>authorizer.class.name</tt> in server.properties. To 
enable the out of the box implementation use:
+    Kafka ships with a pluggable authorization framework, which is configured 
by setting <tt>authorizer.class.name</tt> in server.properties. Configured 
implementations must extend 
<code>org.apache.kafka.server.authorizer.Authorizer</code>. Kafka provides 
default implementations which store ACLs in the cluster metadata (either 
Zookeeper or the KRaft metadata log).
+
+    For Zookeeper-based clusters, the provided implementation is configurd as 
follows:
     <pre class="line-numbers"><code 
class="language-text">authorizer.class.name=kafka.security.authorizer.AclAuthorizer</code></pre>
-    Kafka acls are defined in the general format of "Principal P is 
[Allowed/Denied] Operation O From Host H on any Resource R matching 
ResourcePattern RP". You can read more about the acl structure in <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-11+-+Authorization+Interface";>KIP-11</a>
 and resource patterns in <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-290%3A+Support+for+Prefixed+ACLs";>KIP-290</a>.
 In order to add, remove or list acls you can use the Kafka authorizer CLI. By 
default, if no ResourcePatterns match a specific Resource R, then R has no 
associated acls, and therefore no one other than super users is allowed to 
access R. If you want to change that behavior, you can include the following in 
server.properties.
+    For KRaft clusters, use the following configuration on all nodes (whether 
controllers/brokers are combined or configured separately):
+    <pre class="line-numbers"><code 
class="language-text">authorizer.class.name=org.apache.kafka.metadata.authorizer.StandardAuthorizer</code></pre>
+
+    Kafka ACLs are defined in the general format of "Principal {P} is 
[Allowed|Denied] Operation {O} From Host {H} on any Resource {R} matching 
ResourcePattern {RP}". You can read more about the ACL structure in <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-11+-+Authorization+Interface";>KIP-11</a>
 and resource patterns in <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-290%3A+Support+for+Prefixed+ACLs";>KIP-290</a>.
 In order to add, remove or list ACLs, you can use the Kafka ACL CLI 
<code>kafka-acls.sh</code>. By default, if no ResourcePatterns match a specific 
Resource R, then R has no associated ACLs, and therefore no one other than 
super users is allowed to access R. If you want to change that behavior, you 
can include the following in server.properties.
     <pre class="line-numbers"><code 
class="language-text">allow.everyone.if.no.acl.found=true</code></pre>
     One can also add super users in server.properties like the following (note 
that the delimiter is semicolon since SSL user names may contain comma). 
Default PrincipalType string "User" is case sensitive.
     <pre class="line-numbers"><code 
class="language-text">super.users=User:Bob;User:Alice</code></pre>
 
+    <h5 class="anchor-heading"><a id="kraft_principal_forwarding" 
class="anchor-link"></a><a href="#kraft_principal_forwarding">KRaft Principal 
Forwarding</a></h5>
+
+    In KRaft clusters, admin requests such as <code>CreateTopics</code> and 
<code>DeleteTopics</code> are sent to the broker listeners and forwarded to the 
current controller through the first listener configured in 
<code>controller.listener.names</code>.
+    Authorization of these requests is done on the controller node. This is 
achieved by way of an <code>Envelope</code> request which packages both the 
underlying request from the client as well as the client principal.

Review Comment:
   Is it worth linking to the KIP that adds Envelope requests?



##########
docs/security.html:
##########
@@ -1136,13 +1136,29 @@ <h3 class="anchor-heading"><a id="security_sasl" 
class="anchor-link"></a><a href
     </ol>
 
     <h3 class="anchor-heading"><a id="security_authz" 
class="anchor-link"></a><a href="#security_authz">7.4 Authorization and 
ACLs</a></h3>
-    Kafka ships with a pluggable Authorizer and an out-of-box authorizer 
implementation that uses zookeeper to store all the acls. The Authorizer is 
configured by setting <tt>authorizer.class.name</tt> in server.properties. To 
enable the out of the box implementation use:
+    Kafka ships with a pluggable authorization framework, which is configured 
by setting <tt>authorizer.class.name</tt> in server.properties. Configured 
implementations must extend 
<code>org.apache.kafka.server.authorizer.Authorizer</code>. Kafka provides 
default implementations which store ACLs in the cluster metadata (either 
Zookeeper or the KRaft metadata log).
+
+    For Zookeeper-based clusters, the provided implementation is configurd as 
follows:
     <pre class="line-numbers"><code 
class="language-text">authorizer.class.name=kafka.security.authorizer.AclAuthorizer</code></pre>
-    Kafka acls are defined in the general format of "Principal P is 
[Allowed/Denied] Operation O From Host H on any Resource R matching 
ResourcePattern RP". You can read more about the acl structure in <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-11+-+Authorization+Interface";>KIP-11</a>
 and resource patterns in <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-290%3A+Support+for+Prefixed+ACLs";>KIP-290</a>.
 In order to add, remove or list acls you can use the Kafka authorizer CLI. By 
default, if no ResourcePatterns match a specific Resource R, then R has no 
associated acls, and therefore no one other than super users is allowed to 
access R. If you want to change that behavior, you can include the following in 
server.properties.
+    For KRaft clusters, use the following configuration on all nodes (whether 
controllers/brokers are combined or configured separately):
+    <pre class="line-numbers"><code 
class="language-text">authorizer.class.name=org.apache.kafka.metadata.authorizer.StandardAuthorizer</code></pre>
+
+    Kafka ACLs are defined in the general format of "Principal {P} is 
[Allowed|Denied] Operation {O} From Host {H} on any Resource {R} matching 
ResourcePattern {RP}". You can read more about the ACL structure in <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-11+-+Authorization+Interface";>KIP-11</a>
 and resource patterns in <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-290%3A+Support+for+Prefixed+ACLs";>KIP-290</a>.
 In order to add, remove or list ACLs, you can use the Kafka ACL CLI 
<code>kafka-acls.sh</code>. By default, if no ResourcePatterns match a specific 
Resource R, then R has no associated ACLs, and therefore no one other than 
super users is allowed to access R. If you want to change that behavior, you 
can include the following in server.properties.
     <pre class="line-numbers"><code 
class="language-text">allow.everyone.if.no.acl.found=true</code></pre>
     One can also add super users in server.properties like the following (note 
that the delimiter is semicolon since SSL user names may contain comma). 
Default PrincipalType string "User" is case sensitive.
     <pre class="line-numbers"><code 
class="language-text">super.users=User:Bob;User:Alice</code></pre>
 
+    <h5 class="anchor-heading"><a id="kraft_principal_forwarding" 
class="anchor-link"></a><a href="#kraft_principal_forwarding">KRaft Principal 
Forwarding</a></h5>
+
+    In KRaft clusters, admin requests such as <code>CreateTopics</code> and 
<code>DeleteTopics</code> are sent to the broker listeners and forwarded to the 
current controller through the first listener configured in 
<code>controller.listener.names</code>.

Review Comment:
   ```suggestion
       In KRaft clusters, admin requests such as <code>CreateTopics</code> and 
<code>DeleteTopics</code> are sent to the broker listeners by the client. The 
broker then forwards the request to the active controller through the first 
listener configured in <code>controller.listener.names</code>.
   ```



##########
docs/security.html:
##########
@@ -1136,13 +1136,29 @@ <h3 class="anchor-heading"><a id="security_sasl" 
class="anchor-link"></a><a href
     </ol>
 
     <h3 class="anchor-heading"><a id="security_authz" 
class="anchor-link"></a><a href="#security_authz">7.4 Authorization and 
ACLs</a></h3>
-    Kafka ships with a pluggable Authorizer and an out-of-box authorizer 
implementation that uses zookeeper to store all the acls. The Authorizer is 
configured by setting <tt>authorizer.class.name</tt> in server.properties. To 
enable the out of the box implementation use:
+    Kafka ships with a pluggable authorization framework, which is configured 
by setting <tt>authorizer.class.name</tt> in server.properties. Configured 
implementations must extend 
<code>org.apache.kafka.server.authorizer.Authorizer</code>. Kafka provides 
default implementations which store ACLs in the cluster metadata (either 
Zookeeper or the KRaft metadata log).

Review Comment:
   Should we mention "server.properties" explicitly? Do we do that elsewhere in 
the docs? 
   



##########
docs/security.html:
##########
@@ -1136,13 +1136,29 @@ <h3 class="anchor-heading"><a id="security_sasl" 
class="anchor-link"></a><a href
     </ol>
 
     <h3 class="anchor-heading"><a id="security_authz" 
class="anchor-link"></a><a href="#security_authz">7.4 Authorization and 
ACLs</a></h3>
-    Kafka ships with a pluggable Authorizer and an out-of-box authorizer 
implementation that uses zookeeper to store all the acls. The Authorizer is 
configured by setting <tt>authorizer.class.name</tt> in server.properties. To 
enable the out of the box implementation use:
+    Kafka ships with a pluggable authorization framework, which is configured 
by setting <tt>authorizer.class.name</tt> in server.properties. Configured 
implementations must extend 
<code>org.apache.kafka.server.authorizer.Authorizer</code>. Kafka provides 
default implementations which store ACLs in the cluster metadata (either 
Zookeeper or the KRaft metadata log).
+
+    For Zookeeper-based clusters, the provided implementation is configurd as 
follows:
     <pre class="line-numbers"><code 
class="language-text">authorizer.class.name=kafka.security.authorizer.AclAuthorizer</code></pre>
-    Kafka acls are defined in the general format of "Principal P is 
[Allowed/Denied] Operation O From Host H on any Resource R matching 
ResourcePattern RP". You can read more about the acl structure in <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-11+-+Authorization+Interface";>KIP-11</a>
 and resource patterns in <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-290%3A+Support+for+Prefixed+ACLs";>KIP-290</a>.
 In order to add, remove or list acls you can use the Kafka authorizer CLI. By 
default, if no ResourcePatterns match a specific Resource R, then R has no 
associated acls, and therefore no one other than super users is allowed to 
access R. If you want to change that behavior, you can include the following in 
server.properties.
+    For KRaft clusters, use the following configuration on all nodes (whether 
controllers/brokers are combined or configured separately):
+    <pre class="line-numbers"><code 
class="language-text">authorizer.class.name=org.apache.kafka.metadata.authorizer.StandardAuthorizer</code></pre>
+
+    Kafka ACLs are defined in the general format of "Principal {P} is 
[Allowed|Denied] Operation {O} From Host {H} on any Resource {R} matching 
ResourcePattern {RP}". You can read more about the ACL structure in <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-11+-+Authorization+Interface";>KIP-11</a>
 and resource patterns in <a 
href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-290%3A+Support+for+Prefixed+ACLs";>KIP-290</a>.
 In order to add, remove or list ACLs, you can use the Kafka ACL CLI 
<code>kafka-acls.sh</code>. By default, if no ResourcePatterns match a specific 
Resource R, then R has no associated ACLs, and therefore no one other than 
super users is allowed to access R. If you want to change that behavior, you 
can include the following in server.properties.

Review Comment:
   Can we break this long line?



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to