4.8. ZooKeeper の承認

Kafka と ZooKeeper 間で認証が有効になっている場合、ZooKeeper アクセス制御リスト(ACL)ルールを使用して、ZooKeeper に保存される Kafka のメタデータへのアクセスを自動的に制御できます。

4.8.1. ACL 設定

ZooKeeper ACL ルールの適用は、config/server.properties Kafka 設定ファイルの zookeeper.set.acl プロパティーによって制御されます。

このプロパティーはデフォルトでは無効になっており、true に設定して有効にします。

zookeeper.set.acl=true

ACL ルールが有効な場合、znode が ZooKeeper で作成されると、変更または削除が可能な Kafka ユーザーのみが ZooKeeper で作成されます。他のすべてのユーザーは読み取り専用アクセスを持ちます。

Kafka は、新規に作成された ZooKeeper znodes に対してのみ ACL ルールを設定します。クラスターの初回の起動後に ACL が有効になると、zookeeper-security-migration.sh ツールはすべての既存 znodes で ACL を設定することができます。

ZooKeeper でのデータの機密性

ZooKeeper に保存されるデータには以下が含まれます。

  • トピック名およびその設定
  • SASL SCRAM 認証が使用される場合に、ソルトおよびハッシュ化されたユーザー認証情報。

しかし、ZooKeeper は Kafka を使用して送受信されたレコードを保存しません。ZooKeeper に保存されるデータは特定されないことが想定されます。

データが機密であると思われる場合(トピック名には顧客 ID が含まれるなど)、保護に使用できる唯一のオプションはネットワークレベルで ZooKeeper を分離するだけで、Kafka ブローカーへのアクセスを許可します。