<pre id="bdfbb"><ruby id="bdfbb"></ruby></pre>

    <pre id="bdfbb"><b id="bdfbb"></b></pre>

    <pre id="bdfbb"><del id="bdfbb"><mark id="bdfbb"></mark></del></pre>

          <p id="bdfbb"></p>
          <p id="bdfbb"><del id="bdfbb"><dfn id="bdfbb"></dfn></del></p>

          kafka認證和acl

          小編:管理員 22閱讀 2022.07.25

          7.4 認證和acl

          kafka附帶一個可插拔的ACL(Access Control List 訪問控制列表),它使用zookeeper來存儲。通過在server.properties中設置authorizer.class.name來啟用:

          authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer

          Kafka acls的格式為"Principal P is [Allowed/Denied] Operation O From Host H On Resource R”,你可以使用Kafka authorizer CLI 來添加,刪除或查詢所有acl。默認情況下,如果ResourcePatterns與特定的資源R沒有匹配,則除了超級用戶之外,都不允許訪問R。如果要更改該行為,可以在server.properties中包含以下內容。

          allow.everyone.if.no.acl.found=true 

          你也可以在server.properties添加超級用戶,像這樣(注意分隔符是分號,因為SSL的用戶名是逗號)。

          super.users=User:Bob;User:Alice 

          默認情況下,SSL用戶名的格式為“CN=writeuser,OU=Unknown,O=Unknown,L=Unknown,ST=Unknown,C=Unknown”?梢酝ㄟ^在server.properties中設置自定義的PrincipalBuilder來改變它,如下所示:

          principal.builder.class=CustomizedPrincipalBuilderClass 

          可以通過修改server.properties中的sasl.kerberos.principal.to.local.rules自定義規則。sasl.kerberos.principal.to.local.rules的格式是一個列表,其中每個規則的工作方式與Kerberos 配置文件 (krb5.conf)中的auth_to_local相同。 也支持小寫規則,可通過在規則的末尾添加“/L”,強制轉移全部結果為小寫。每個規則都以RULE開頭:并包含一個表達式,格式如下。 有關更多詳細信息,請參閱kerberos文檔。

          RULE:[n:string](regexp)s/pattern/replacement/
          RULE:[n:string](regexp)s/pattern/replacement/g
          RULE:[n:string](regexp)s/pattern/replacement//L
          RULE:[n:string](regexp)s/pattern/replacement/g/L

          舉個例子,添加規則,將user@MYDOMAIN.COM轉換為用戶,同時保持默認規則,示例如下:

          sasl.kerberos.principal.to.local.rules=RULE:[1:$1@$0](.*@MYDOMAIN.COM)s/@.*//,DEFAULT
          命令行界面

          Kafka認證管理CLI(和其他的CLI腳本)可以在bin目錄中找到。CLI腳本名是kafka-acls.sh。以下列出了所有腳本支持的選項:

          選項 描述 默認 類型選擇
          --add 添加一個acl Action
          --remove 移除一個acl Action
          --list 列出acl Action
          --authorizer authorizer的完全限定類名 kafka.security.auth.SimpleAclAuthorizer Configuration
          --authorizer-properties key=val,傳給authorizer進行初始化,例如:zookeeper.connect=localhost:2181 Configuration
          --cluster 指定集群作為資源。 Resource
          --topic [topic-name] 指定topic作為資源。 Resource
          --group [group-name] 指定 consumer-group 作為資源。 Resource
          -allow-principal 添加到允許訪問的ACL中,Principal是PrincipalType:name格式。
          你可以指定多個。
          Principal
          --deny-principal 添加到拒絕訪問的ACL中,Principal是PrincipalType:name格式。
          你可以指定多個。
          Principal
          --allow-host --allow-principal中的principal的IP地址允許訪問。 如果--allow-principal指定的默認值是*,則意味著指定“所有主機” Host
          --deny-host 允許或拒絕的操作。
          有效值為:讀,寫,創建,刪除,更改,描述,ClusterAction,全部
          ALL Operation
          --operation --deny-principal中的principals的IP地址拒絕訪問。 如果 --deny-principal指定的默認值是 * 則意味著指定 "所有主機" Host
          --producer 為producer角色添加/刪除acl。生成acl,允許在topic上WRITE, DESCRIBE和CREATE集群。 Convenience
          --consumer 為consumer role添加/刪除acl,生成acl,允許在topic上READ, DESCRIBE 和 consumer-group上READ。 Convenience
          --force 假設所有操作都是yes,規避提示 Convenience
          例子
          • 添加acl
            假設你要添加一個acl “以允許198.51.100.0和198.51.100.1,Principal為User:Bob和User:Alice對主題是Test-Topic有Read和Write的執行權限” ?赏ㄟ^以下命令實現:

            bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 --add --allow-principal User:Bob --allow-principal User:Alice --allow-host 198.51.100.0 --allow-host 198.51.100.1 --operation Read --operation Write --topic Test-topic

            默認情況下,所有的principal在沒有一個明確的對資源操作訪問的acl都是拒絕訪問的。在極少的情況下,acl允許訪問所有的資源,但一些principal我們可以使用 --deny-principal 和 --deny-host來拒絕訪問。例如,如果我們想讓所有用戶讀取Test-topic,只拒絕IP為198.51.100.3的User:BadBob,我們可以使用下面的命令:

            bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 --add --allow-principal User:* --allow-host * --deny-principal User:BadBob --deny-host 198.51.100.3 --operation Read --topic Test-topic

            需要注意的是--allow-host和deny-host僅支持IP地址(主機名不支持)。上面的例子中通過指定--topic [topic-name]作為資源選項添加ACL到一個topic。同樣,用戶通過指定--cluster和通過指定--group [group-name]消費者組添加ACL。

          • 刪除acl
            刪除和添加是一樣的,--add換成--remove選項,要刪除第一個例子中添加的,可以使用下面的命令:

            bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 --remove --allow-principal User:Bob --allow-principal User:Alice --allow-host 198.51.100.0 --allow-host 198.51.100.1 --operation Read --operation Write --topic Test-topic
          • acl列表
            我們可以通過--list選項列出所有資源的ACL。假設要列出Test-topic,我們可以用下面的選項執行CLI所有的ACL:

            bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 --list --topic Test-topic
          • 添加或刪除作為生產者或消費者的principal
            acl管理添加/移除一個生產者或消費者principal是最常見的使用情況,所以我們增加更便利的選項處理這些情況。為主題Test-topic添加一個生產者User:Bob,我們可以執行以下命令:

            bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 --add --allow-principal User:Bob --producer --topic Test-topic

            同樣,添加Alice作為主題Test-topic的消費者,用消費者組為Group-1,我們只用 --consumer 選項:

            bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 --add --allow-principal User:Bob --consumer --topic test-topic --group Group-1 

            注意,消費者的選擇,我們還必須指定消費者組。從生產者或消費者角色刪除主體,我們只需要通過--remove選項。

          關聯標簽:
          国产 亚洲 中文 在线 字幕,99资源网,超碰国产97一区二区三区,无码中文人妻中文中文人妻
            <pre id="bdfbb"><ruby id="bdfbb"></ruby></pre>

            <pre id="bdfbb"><b id="bdfbb"></b></pre>

            <pre id="bdfbb"><del id="bdfbb"><mark id="bdfbb"></mark></del></pre>

                  <p id="bdfbb"></p>
                  <p id="bdfbb"><del id="bdfbb"><dfn id="bdfbb"></dfn></del></p>