メインコンテンツまでスキップ

ACL の概要

Kafka の database へのアクセスは独立した 2 段階で制御します。この 2 つを混同することが、アプリケーションが接続には成功するのにすべての操作で失敗する典型的な原因です。

段階役割これがないと
Kafka userSASL で client を database に認証しますclient はそもそも接続できません
ACLその user に特定の topic と consumer group への権限を与えますclient は接続できても何にもアクセスできません

producer、consumer、Kafka Connect はいずれも Kafka user として認証します。この機能は Kafka engine のみが対象です。

注記

ACL のない Kafka user は何にもアクセスできません。user を作成したら ACL を付与してください。

SASL のメカニズム

user は PLAINSCRAM-SHA256SCRAM-SHA512 のいずれかのメカニズムで作成します。この選択は強度だけの問題ではありません。

警告

SASL/PLAIN で user を作成または更新すると Kafka の database が再起動し、producer と consumer が中断します。SCRAM のメカニズムでは再起動しません。SCRAM を優先するか、PLAIN の変更は負荷の低い時間帯に計画してください。

ACL で付与できる権限

ACL は database 単位で適用され、再起動なしで即座に反映されます。それぞれの ACL で resource type、prefix、許可する操作を指定します。1 つの user が複数の ACL を持てます。

Topic の場合:

操作許可される内容
Alltopic に対するすべての操作。
AlterKafka UI での topic の DANGER パラメータの編集。
AlterConfigsKafka UI での topic の DANGER 以外のパラメータの編集。
Readtopic の内容の読み取り。
Writetopic へのデータの書き込み。

Consumer group の場合:

操作許可される内容
Deletegroup の削除。
Describegroup の詳細の表示。
Readgroup の内容の読み取り。

適用範囲は prefix で決まります。All を入力するとすべての topic またはすべての consumer group が対象になり、それ以外の値を入力すると、その値で始まる名前のリソースが対象になります。

安全に運用するために

  • アプリケーションやサービスごとに user を 1 つ作成し、他に影響を与えずに権限を取り消せるようにします。
  • リソース単位ではなく prefix 単位で付与します。prefix の ACL は topic が増えても機能し続けます。
  • アーキテクチャ上可能であれば、producer と consumer の権限を別々の user に分けます。
  • All は明確な理由がある場合にのみ付与します。
  • パスワードは定期的に変更し、ACL の一覧を見直してアプリケーションが使わなくなったものを削除します。
  • PLAIN のメカニズムは再起動を伴うため、繁忙時間帯の user 作成は避けます。

次のステップ