Rundeck ACL项目名通配符使用及无权限项目隐藏咨询
问题解答
1. Rundeck ACL中项目名称的通配符使用问题
Rundeck的ACL规则里,项目名称匹配支持正则表达式,但你之前的写法存在错误:
'SNL*'属于字面匹配逻辑,只会匹配SNL、SNLL、SNLLL这类名称(*在这里代表前一个字符重复任意次),并非“以SNL开头”的任意项目。/^SNL*/这个正则的问题在于*修饰的是L,实际含义是“以SN开头,后面跟任意多个L”,不符合你的需求。
正确的写法是用正则匹配以SNL开头的任意字符,配置如下:
context: project: /^SNL.*/
这里^代表字符串开头,.*代表任意长度的任意字符,能精准匹配所有名称以SNL开头的项目。
2. 彻底隐藏非授权项目的方法
你当前的ACL中,application: 'rundeck'上下文的project规则直接设置了allow: read,这会让用户看到所有项目列表,哪怕没有项目内的操作权限。要彻底隐藏未授权项目,需要在application层的项目规则中添加匹配条件,仅允许读取符合规则的项目。
修正后的完整ACL配置:
description: Jobbers, Projects access. context: project: /^SNL.*/ # 匹配所有以SNL开头的项目 for: resource: - allow: read adhoc: - allow: [read,run,kill] job: - allow: [read,run,kill] node: - allow: [read,refresh,run] by: group: yy-xxxxx --- description: Jobbers access to rundeck. context: application: 'rundeck' for: resource: - allow: read project: - allow: read match: name: /^SNL.*/ # 仅允许读取以SNL开头的项目 project_acl: - allow: read storage: - allow: read by: group: yy-xxxxx
配置完成后,用户在仪表盘只会看到名称以SNL开头的项目,其他项目会完全隐藏。
内容的提问来源于stack exchange,提问作者sigfried
相关产品推荐
相关产品推荐

