RunDeck/ACL/Custom /非管理员组

Cok*_*aka 6 acl rundeck

难以让属于"用户"组的用户有权访问(至少读取)项目.我已经阅读并尝试了我在互联网上找到的几个例子,似乎都没有用.

我现在需要的是:允许属于"user"组的任何用户阅读名为MYPROJECT的项目.我有这个,保存在/ etc/rundeck下名为user.aclpolicy的文件中.我等了60多秒.我也试过重启RunDeck.没运气.

我一直在:

您没有授权访问项目.联系您的管理员.(用户角色:raka,用户)

description: application access to a project
  application: 'rundeck'
for:
  resource:
    - equals:
        kind: project
      deny: [create] # deny create of projects
    - equals:
        kind: system
      allow: [read] # allow read of system info
    - equals:
        kind: user
      deny: [admin] # allow modify user profiles
  project:
    - equals:
        name: 'MYPROJECT'
      allow: [read] # allow access
      deny: [import,export,configure,delete] # deny admin actions
  storage:
    - deny: [read,create,update,delete] # allow access for /keys/* storage content
by:
  group: user
Run Code Online (Sandbox Code Playgroud)

YAML上面有什么问题?我还检查了/ var/lib/rundeck/exp/webapp/WEB-INF下的web.xml,以确保在那里注册了角色名"user".

我的realm.properties包含以下行:

raka:greentooth60,user
Run Code Online (Sandbox Code Playgroud)

我也试过这个.基本上复制"管理员"组的任何内容.为此我还尝试将它直接放在admin.aclpolicy而不是单独的文件中.仍然没有运气.

description: User, 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: user
Run Code Online (Sandbox Code Playgroud)

RunDeck版本:Rundeck 2.6.9-1 cafe bonbon indigo tower 2016-08-03

这是RunDeck(.deb)的debian安装.我可以查看哪些日志文件来分析这样的情况?

谢谢,拉卡

jon*_*tan 8

RunDeck ACL可能违反直觉,需要一些时间来习惯.为了可见性,特别是在开始编写RunDeck ACL策略时,最好只设置允许用户执行的操作,而不是拒绝访问.默认情况下,不允许任何操作,因此您只需添加allow语句即可为用户提供对资源的访问权限.

RunDeck需要"应用程序"上下文和"项目"上下文的ACL策略.您正在read应用程序上下文中指定对项目的访问权限,并.*在项目上下文中按名称(在您的情况下)访问所有作业,但您还需要提供read对资源类型的访问权限job才能使作业可见.请参阅下面的示例.

有用的日志

为了解决RunDeck问题,我发现以下日志很有用:

tail -f /var/log/rundeck/{rundeck.log,service.log}
Run Code Online (Sandbox Code Playgroud)

测试ACL策略

如果要针对ACL文件测试特定用户操作,可以使用rd-acl与RunDeck一起安装的工具.例如,要测试组成员是否user可以读取restart some server项目中的作业MYPROJECT,您可以执行以下操作:

rd-acl test -p 'MYPROJECT' -g user -c project -j 'restart some server' -a read
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息,请参阅rd-acl手册.

只读ACL示例

下面是一个示例(已测试Rundeck 2.6.9-1),应该允许组"user"中的任何人访问RunDeck服务器上的所有内容:

context:
  application: rundeck
description: "normal users will only have read permissions"
for:
  project:
    - match:
        name: '.*'
      allow: [read]
  system:
    - match:
        name: '.*'
      allow: [read]
by:
  group: user

---

context:
  project: '.*'
description: "normal users will only have read permissions"
for:
  resource:
    - equals:
        kind: 'node'
      allow: [read,refresh]
    - equals:
        kind: 'job'
      allow: [read]
    - equals:
        kind: 'event'
      allow: [read]
  job:
    - match:
        name: '.*'
      allow: [read]
  node:
    - match:
        nodename: '.*'
      allow: [read,refresh]
by:
  group: user
Run Code Online (Sandbox Code Playgroud)


小智 5

在处理“您无权访问项目”时,您可能会偶然发现的另一件事是权限。

如果出于某种原因您使用 root 用户创建了带有简单副本的 aclpolicy 文件,则需要将所有者和组更改为“rundeck”(当然,除非您更改了 rundeck 运行的用户)。

这让我今天放松了 30 分钟,希望这对某人有帮助。