RunDeck / ACL / Custom / for non-admin group
RunDeck / ACL / Custom / for non-admin group
无法让属于组 "user" 的用户访问(至少读取)项目。我已经阅读并尝试了几个在互联网上找到的示例,none 似乎有效。
我现在需要的是:允许属于组 "user" 的任何用户读取名为 MYPROJECT 的项目。我有这个,保存在 /etc/rundeck 下名为 user.aclpolicy 的文件中。我已经等了 60 多秒了。我也试过重新启动 RunDeck。运气不好。
我不断得到:
You have no authorized access to projects.
Contact your administrator. (User roles: raka, user)
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
上面的 YAML 有什么问题?我还检查了 /var/lib/rundeck/exp/webapp/WEB-INF 下的 web.xml 以确保角色名称 "user" 已在那里注册。
我的 realm.properties 包含这一行:
raka:greentooth60,user
这个我也试过了。基本上是复制 "admin" 组的任何内容。为此,我还尝试将其直接放在 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
RunDeck版本:Rundeck 2.6.9-1 cafe bonbon indigo tower 2016-08-03
这是 RunDeck (.deb) 的 debian 安装。我可以查看哪个日志文件来分析这种情况?
谢谢,
拉卡
RunDeck ACL 可能违反直觉,需要一些时间才能习惯。为了可见性,尤其是当您开始编写 RunDeck ACL 策略时,最好只设置允许用户执行的操作,而不是拒绝访问。默认情况下,什么都不允许,因此您只需要添加 allow
语句来授予用户访问资源的权限。
RunDeck 需要针对 "application" 上下文和 "project" 上下文的 ACL 策略。您指定 read
访问应用程序上下文中的项目,并在项目上下文中按名称访问所有作业(在您的情况下 .*
),但您还需要授予对 read
资源类型 job
以便作业可见。请参阅下面的示例。
有用的日志
对于 RunDeck 故障排除,我发现以下日志很有用:
tail -f /var/log/rundeck/{rundeck.log,service.log}
测试 ACL 策略
如果您想针对您的 ACL 文件测试特定的用户操作,您可以使用与 RunDeck 一起安装的工具 rd-acl
。例如,要测试组 user
的成员可以读取项目 MYPROJECT
中的工作 restart some server
,您可以这样做:
rd-acl test -p 'MYPROJECT' -g user -c project -j 'restart some server' -a read
有关详细信息,请参阅 rd-acl manual。
只读 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
您在处理 "You have no authorized access to projects" 时可能偶然发现的另一件事是权限。
如果出于某种原因您使用 root 用户创建了带有简单副本的 aclpolicy 文件,则需要将所有者和组更改为 'rundeck'(除非您更改了运行 rundeck 的用户,当然)。
今天让我放松了 30 分钟,希望这对某人有所帮助。
无法让属于组 "user" 的用户访问(至少读取)项目。我已经阅读并尝试了几个在互联网上找到的示例,none 似乎有效。
我现在需要的是:允许属于组 "user" 的任何用户读取名为 MYPROJECT 的项目。我有这个,保存在 /etc/rundeck 下名为 user.aclpolicy 的文件中。我已经等了 60 多秒了。我也试过重新启动 RunDeck。运气不好。
我不断得到:
You have no authorized access to projects. Contact your administrator. (User roles: raka, user)
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
上面的 YAML 有什么问题?我还检查了 /var/lib/rundeck/exp/webapp/WEB-INF 下的 web.xml 以确保角色名称 "user" 已在那里注册。
我的 realm.properties 包含这一行:
raka:greentooth60,user
这个我也试过了。基本上是复制 "admin" 组的任何内容。为此,我还尝试将其直接放在 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
RunDeck版本:Rundeck 2.6.9-1 cafe bonbon indigo tower 2016-08-03
这是 RunDeck (.deb) 的 debian 安装。我可以查看哪个日志文件来分析这种情况?
谢谢, 拉卡
RunDeck ACL 可能违反直觉,需要一些时间才能习惯。为了可见性,尤其是当您开始编写 RunDeck ACL 策略时,最好只设置允许用户执行的操作,而不是拒绝访问。默认情况下,什么都不允许,因此您只需要添加 allow
语句来授予用户访问资源的权限。
RunDeck 需要针对 "application" 上下文和 "project" 上下文的 ACL 策略。您指定 read
访问应用程序上下文中的项目,并在项目上下文中按名称访问所有作业(在您的情况下 .*
),但您还需要授予对 read
资源类型 job
以便作业可见。请参阅下面的示例。
有用的日志
对于 RunDeck 故障排除,我发现以下日志很有用:
tail -f /var/log/rundeck/{rundeck.log,service.log}
测试 ACL 策略
如果您想针对您的 ACL 文件测试特定的用户操作,您可以使用与 RunDeck 一起安装的工具 rd-acl
。例如,要测试组 user
的成员可以读取项目 MYPROJECT
中的工作 restart some server
,您可以这样做:
rd-acl test -p 'MYPROJECT' -g user -c project -j 'restart some server' -a read
有关详细信息,请参阅 rd-acl manual。
只读 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
您在处理 "You have no authorized access to projects" 时可能偶然发现的另一件事是权限。
如果出于某种原因您使用 root 用户创建了带有简单副本的 aclpolicy 文件,则需要将所有者和组更改为 'rundeck'(除非您更改了运行 rundeck 的用户,当然)。
今天让我放松了 30 分钟,希望这对某人有所帮助。