如何设置 ACL 策略以允许用户仅在 Rundeck 上运行作业?

How can be set an ACL policy to allow a user to only run a job on Rundeck?

任何人都可以帮助我如何在 Rundeck 中配置用户以
1)只运行一个工作
2)拒绝修改/删除现有工作
3) 拒绝创造新工作

我想我需要在 aclpolicy.yaml 文件中设置此配置,但我找不到有关如何执行此操作的详细说明。

提前致谢


是的..很乐意提供帮助。

我假设您已经有一个项目和一份工作。说项目测试和工作测试工作。我假设您已经在 WEB.xml 文件上创建了一个角色/组作为 testrole,并且您有一个 .aclpolicy 作为 test.aclpolicy。上面的东西有关于 Rundeck 的详细文档,但是他们确实没有关于各种 rd-acl 用例的更好的文档。

在您的情况下,如果您希望您的用户 "testuser" 只运行/读取/终止作业执行,请使用以下 test.aclpolicy。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
---
for:
  job:
  - allow:
    - runAs
    - killAs
    - kill
    - read
    - run
    equals:
      name: testjob
  node:
  - allow:
    - read
    - run
  adhoc:
  - deny:
    - read
    - run
  resource:
  - allow: read
    equals:
      kind: event
description: generated
context:
  project: Test
by:
  group: testrole

---
 for:
  project:
  - allow: read
    equals:
      name: Test
description: generated
context:
  application: rundeck
by:
  group: testrole

如果您想为同一个用户在同一个项目中的多个作业赋予相同的权限,只需将 "equals" 替换为 "match" 并在 name 参数下,输入您的作业分隔管道 " |" 像 "testjob1|testjob2"..


如果您需要一个有权执行所有项目中的所有作业的用户,您可以配置下一个策略(来自 Leo 答案的小修改):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
---
description: 'Allow group runjob to run all jobs'
for:
  job:
  - allow:
    - runAs
    - killAs
    - kill
    - run
    - read
    match:
      name: '.*'
  node:
  - allow:
    - read
    - run
  adhoc:
  - deny:
    - read
    - run
  resource:
  - allow: read
    equals:
      kind: event
context:
  project: '.*'
by:
  group: runjob

---
description: 'Allow '
for:
  project:
  - allow: read
    match:
      name:  '.*'
context:
  application: rundeck
by:
  group: runjob