Rundeck 3 でユーザのアクセス権限(ACL)を設定する方法

結論

  • CLI で作業する必要はありません

具体的な手順

1. 右上の歯車のメニューから Access Control を選びます

f:id:gregminster:20190211114510p:plain

2. + Create ACL Policy をクリックします

f:id:gregminster:20190211114725p:plain

3. Create System ACL Policy に遷移します

f:id:gregminster:20190211114828p:plain

4. Name を決めます

ここはユーザ名やグループ名などを含んだ分かりやすい名前にすべきでしょう(後から変更できます)。

f:id:gregminster:20190211114933p:plain

5. 設定内容を書く

設定内容を YAML で書いていきます。書式については 公式ドキュメント を参考にしましょう。最初から設定されている admin の内容がテンプレート的に参考になるので以下に貼り付けます。

description: Admin, all access.
context:
  project: '.*' # all projects
for:
  resource:
    - allow: '*' # allow read/create all kinds
  adhoc:
    - allow: '*' # allow read/running/killing adhoc jobs
  job:
    - allow: '*' # allow read/write/delete/run/kill of all jobs
  node:
    - allow: '*' # allow read/run for all nodes
by:
  group: admin

---

description: Admin, all access.
context:
  application: 'rundeck'
for:
  resource:
    - allow: '*' # allow create of projects
  project:
    - allow: '*' # allow view/admin of all projects
  project_acl:
    - allow: '*' # allow admin of all project-level ACL policies
  storage:
    - allow: '*' # allow read/create/update/delete for all /keys/* storage content
by:
  group: admin

by: の 部分の username または group を適用したいユーザ名またはグループ名に書き換えるととりあえずは動きます(権限は全開になりますが)。具体的な書き方については公式ドキュメントの内容例をそのまま貼り付けます。

    by:
      username: 'bob'

    by: #using a regular expression
      username: 'dev\d+'

    by:
      group: [test,qa,prod]

    by: #using a regular expression
      group: 'dev_team_(alpha|beta|gamma)'

    by:
      username:
        - simon
        - frank

注意するところとしては、context: のところで application: 'rundeck' と指定することが必須です。これさえ指定していればとりあえずはざっくりとした権限の設定はできます。例えば、以下のように書くと、grouphoge の人たちと usernamefuga の人に全権限が与えられます。

description: SAMPLE NO ACL DESU
context:
  application: 'rundeck'
for:
  resource:
    - allow: '*'
  project:
    - allow: '*'
  project_acl:
    - allow: '*'
  storage:
    - allow: '*'
by:
  group: hoge
  username: fuga

5. 設定内容を確認するために設定したユーザでログインしてみる

ここまでの内容が正しく設定できていれば正しく権限が設定されているはずです。ログインをして確かめてみてください。再起動は不要ですが、ログイン状態の場合は一度ログアウトして再度ログインします。

X. プロジェクトメニューの中の Access Control メニューについて

プロジェクトメニューの中にある Access Control メニューは現時点では無効とのことです。公式ドキュメントには以下のようにあります。

The YAML format has changed since version 1.2 to address several issues:

Access control on resources other than Jobs can now be declared
Project level access control is now supported
“Deny” rules can now be declared
Application level access control is also supported, replacing the Role mapping
The Rundeck server no longer uses role-mapping and instead defers to the aclpolicy for all authorizations.

したがって、YAML での権限設定は、トップメニューの YAML の中ですべて設定しましょう。

補足

Rundeck 3 については粒度を細かくして記事にしているので、他の記事 も参考にするとよいかもしれません。

あと、困ったら何はともあれ 公式ドキュメント です。

Powered by はてなブログ