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 ブローカーへのアクセスを許可します。