You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何自定义Rundeck API响应,移除执行日志中的敏感命令信息?

解决Rundeck API返回敏感命令信息的问题

问题说明

调用Rundeck API查询作业执行日志时,响应XML里会包含敏感的工作流命令(比如示例中的<description>hostname</description>字段),即便用最低权限用户发起请求,该信息依然会返回,需要彻底移除这个字段。

可行解决方案

1. 配置ACL策略限制字段访问

Rundeck的ACL规则可以精准控制用户对执行资源的字段权限。给低权限用户添加拒绝读取执行description字段的规则即可:

将以下规则添加到项目级或全局ACL配置文件中:

description: 禁止低权限用户查看执行命令
context:
  project: 'DEV'
for:
  execution:
    - deny: [read:description]
by:
  group: '你的低权限用户组名'

替换你的低权限用户组名为实际的用户组,重启Rundeck服务后规则生效。

2. 修改作业配置避免命令直接暴露

如果作业用的是内联命令(直接输入hostname这类指令),Rundeck会自动把命令填充到执行的description字段里。可以改成用脚本文件执行:

  • 将命令写入脚本(比如run_hostname.sh),上传到Rundeck资源库或目标节点本地;
  • 作业配置里选择执行该脚本文件,而非直接输入命令。这样执行日志的description就不会显示敏感命令内容。

3. 客户端侧处理响应内容

如果无法修改Rundeck服务器配置,就在客户端接收到响应后手动剔除敏感字段。比如用Python处理XML响应:

import xml.etree.ElementTree as ET
import requests

# 发起API请求
resp = requests.get(
    "https://localhost:443/api/45/job/4f68f5be-99d0-43d3-8856-37c30db64a14/executions",
    auth=("低权限用户名", "密码")
)

# 解析并移除敏感字段
root = ET.fromstring(resp.content)
for exec_node in root.findall(".//execution"):
    desc_node = exec_node.find("description")
    if desc_node is not None:
        exec_node.remove(desc_node)

# 输出处理后的XML内容
print(ET.tostring(root, encoding='unicode'))

验证

应用任意一种方法后,重新调用API,检查响应中是否已移除目标字段。

内容的提问来源于stack exchange,提问作者Majora's Mask

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 23:48:13