[和訳] Chef Server におけるより柔軟なパーミッション設定 #getchef
この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。
本稿は Server Admins Grant More Flexible Permissions Around User Management (2016/02/18) の和訳です。
新しいグローバルグループである server-admins を Chef Server 12.4.1 でリリースしました。このグループは、Chef Server でのユーザー管理に影響するパーミッションのカスタマイズ機能を改善します。
元々、ユーザーのタイプはレギュラーとスーパーの2つしかありませんでした。server-admins グループは、新たな可能性を加えます。それは、Chef Server の日々の管理に役立つパーミッションを必要としているが、スーパーユーザーである必要はない、第三階級のユーザーです。
server-admins グループのメンバーは、スーパーユーザーを除くすべてのユーザーに対して、CRUD (create, read, update, delete)アクセスができます。つまり、ユーザー管理において選択肢が広がり、knife user コマンドが再び有用になるということです。グループのメンバーは、新しい chef-server-ctl コマンドセットを通じてコントロールします。
もう少し詳しく見てみましょう。
knife user への回帰
例えば、利用している Chef Server にユーザーが複数いる場合を見てみましょう:
$ chef-server-ctl user-list
pivotal # スーパーユーザー
user1
user2
user3
user4
user5
(この例では、user1 として knife を使用します) 何か変更を加える前に、knife を基本的なユーザー管理で使用してみましょう(knife の最近のバージョンを使っていて、chef_server_url が organization ではなく使用しているサーバールートを指していることを確認してください):
$ knife user list -c ~/.chef/user1.rb
ERROR: You authenticated successfully as user1 but you are not authorized for this action
Response: Missing read permission
デフォルトでは、ユーザーは orgs に対してグローバルなので、スーパーユーザーでないユーザーは自分自身に関係するパーミッションになっています。一般的に、この権限の分離で問題をうまく解決できますが、あまり融通は利きません。
現時点では、user1 は特別な許可や変更の許されていない普通のユーザーです。しかし我々は、user1 が他のユーザーに対して変更を加えられるようにしたいのです。ここで server-adminsが役立ちます。
Chef Server にログインし、次を実行ください:
$ chef-server-ctl grant-server-admin-permissions user1
User user1 was added to server-admins.
This user can now list, read, and create users (even for orgs they are not members of) for this Chef Server.
(訳注:このユーザーは、この Chef Server のユーザーをリストしたり、読んだり、作成したりすることが、メンバーでない orgs に対してまで、可能になりました。)
ここで再び、user1 で knife コマンドを試してみましょう:
$ knife user list -c ~/.chef/user1.rb
pivotal
user1
user2
user3
user4
user5
user1 は server-admins のメンバーなので、knife user サブコマンドが Chef Server 12 で機能しています! この user1 は knife 経由で他のユーザーを作成、編集、削除までできるのです。例えば次のようにです:
$ knife user edit user2 -c ~/.chef/user1.rb
... (エディターが出ます)
Saved user[user2].
しかしながら、server-admins はスーパーユーザー(pivotal)にはアクセスできないので、重要なユーザーを削除して Chef Serverを壊すことはありません!
$ knife user delete pivotal -c ~/.chef/user1.rb
ERROR: You authenticated successfully as user1 but you are not authorized for this action
Response: missing read permission
見ての通り、新しいグループは Chef Server の日々の管理に非常に役立ちます。
user1 の特権を削除したい場合、Chef Server にログインし、次を実行するだけです:
$ chef-server-ctl list-server-admins
pivotal
user1
$ chef-server-ctl remove-server-admin-permissions user1
User user1 was removed from server-admins.
This user can no longer list, read, and create users for this Chef Server except for where they have default permissions (such as within an org).
$ chef-server-ctl list-server-admins
pivotal
(訳注:このユーザーは、orgの範囲内などデフォルトパーミッションのあるもの以外、この Chef Server のユーザーをリストしたり、読んだり、作成したりすることができなくなりました)
ここで user1 が knife user を使用しようとすると次のようになります:
$ knife user list -c ~/.chef/user1.rb
ERROR: You authenticated successfully as user1 but you are not authorized for this action
Response: missing read permission
より壮大な計画
長期的に、我々は server-admins のパーミッションを拡張する計画を練っています。ですので、そのグループにユーザーを追加する際はそのことを念頭に置いてください。これまで organization CRUD パーミッションを追加することが唯一の計画でしたが、我々は将来を見据えています。これは Chef Server におけるより柔軟で強力なパーミッションへの第一歩となるでしょう!
server-admins のより技術的な説明に関しては ドキュメント を参照してください。
Chef Server 12.4.1 は こちら からダウンロードできます。