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
