zookeeper の ACL(Access Control List、アクセス制御リスト)権限は本番環境では特に重要なので、この章で特に紹介します。

ACL 権限はノードに対して読み書きなどの関連権限を設定でき、データの安全性を保証します。

permissions は異なる権限範囲とロールを指定できます。

ACL コマンドライン

  • getAcl コマンド:あるノードの acl 権限情報を取得します。
  • setAcl コマンド:あるノードの acl 権限情報を設定します。
  • addauth コマンド:認証許可情報を入力し、登録時に平文パスワードを入力すると、暗号化形式で保存されます。

ACL の構成

zookeeper の acl は[scheme:id:permissions]によって権限リストを構成します。

  • 1、scheme:採用するある種の権限メカニズムを表し、world、auth、digest、ip、super の数種類があります。
  • 2、id:アクセスを許可するユーザーを表します。
  • 3、permissions:権限の組み合わせ文字列で、cdrwa で構成され、各英字は異なる権限をサポートすることを表します。作成権限 create(c)、削除権限 delete(d)、読み取り権限 read(r)、書き込み権限 write(w)、管理権限 admin(a)。

world インスタンス

デフォルトノードの権限を確認し、ノードの permissions 権限部分を crwa に更新すると、ノードの削除に失敗します。world はオープンな権限を表します。

$ getAcl /サンプル/child
$ setAcl /サンプル/child world:anyone:crwa
$ delete /サンプル/child

auth インスタンス

auth は権限を付与するために使用され、先にユーザーを作成する必要があることに注意してください。

$ setAcl /サンプル/child auth:user1:123456:cdrwa
$ addauth digest user1:123456
$ setAcl /サンプル/child auth:user1:123456:cdrwa
$ getAcl /サンプル/child

digest インスタンス

現在のユーザーをログアウトし、端末に再接続します。digest はアカウント・パスワードでのログインと検証に使用できます。

$ ls /サンプル
$ create /サンプル/child01 サンプル
$ getAcl /サンプル/child01
$ setAcl /サンプル/child01 digest:user1:HYGa7IZRm2PUBFiFFu8xY2pPP/s=:cdra
$ getAcl /サンプル/child01
$ addauth digest user1:123456
$ getAcl /サンプル/child01

ヒント:暗号化パスワードは前のステップで作成したものです。

IP インスタンス

IP アドレスのアクセス権限を制限し、権限を IP アドレス 192.168.3.7 に設定した後、IP が 192.168.3.38 にはアクセス権限がなくなります。

$ create /サンプル/ip 0
$ getAcl /サンプル/ip
$ setAcl /サンプル/ip ip:192.168.3.7:cdrwa
$ get /サンプル/ip