openclaw-audit-watchdog — OpenClaw 审计看守
v0.1.6为 OpenClaw 代理提供自动化的每日安全审计,支持 DM 投递和可选的电子邮件报告。执行深度审计,创建或更新定期的 cron job,并将格式化的报告发送给配置的收件人。
运行时依赖
安装命令
点击复制技能文档
Prompt 安全审计(openclaw)安装选项 您可以通过两种方式获取 openclaw-audit-watchdog: 选项 A:与 ClawSec 套件捆绑(推荐) 如果您已经安装了 clawsec-suite,则可能已经拥有了 openclaw-audit-watchdog。openclaw-audit-watchdog 与 ClawSec 套件捆绑在一起,以提供关键的自动安全审计功能。当您安装套件时,如果您尚未安装审计监视器,则会从捆绑的副本中部署。 优点: 便捷 - 无需单独下载 标准位置 - 安装到 ~/.openclaw/skills/openclaw-audit-watchdog/ 保留 - 如果您已经安装了审计监视器,则不会被覆盖 单一验证 - 作为套件包的一部分进行完整性检查 选项 B:独立安装(本页) 独立安装 openclaw-audit-watchdog,而不需要完整的套件。 何时使用独立安装: 您只需要审计监视器(而不是其他套件组件) 您想在安装套件之前安装它 您更喜欢对审计监视器安装有明确的控制 优点: 更轻量的安装 独立于套件 对安装过程有直接的控制 独立安装通常涉及从 GitHub 发布的版本中下载。安装到生产主机之前,请验证版本源和存档的完整性。 继续阅读独立安装说明。 版本工件验证 对于独立安装,在信任 SKILL.md、skill.json 或存档之前,请验证签名的版本清单。skill.json 文件是包元数据/SBOM 源,版本管道使用 ClawSec 版本密钥签名 checksums.json。 设置 -euo pipefail SKILL_NAME="openclaw-audit-watchdog" VERSION="0.1.6" REPO="prompt-security/clawsec" TAG="${SKILL_NAME}-v${VERSION}" BASE="https://github.com/${REPO}/releases/download/${TAG}" ZIP_NAME="${SKILL_NAME}-v${VERSION}.zip" TMP_DIR="$(mktemp -d)" trap 'rm -rf "$TMP_DIR"' EXIT RELEASE_PUBKEY_SHA256="711424e4535f84093fefb024cd1ca4ec87439e53907b305b79a631d5befba9c8" curl -fsSL "$BASE/checksums.json" -o "$TMP_DIR/checksums.json" curl -fsSL "$BASE/checksums.sig" -o "$TMP_DIR/checksums.sig" curl -fsSL "$BASE/signing-public.pem" -o "$TMP_DIR/signing-public.pem" curl -fsSL "$BASE/$ZIP_NAME" -o "$TMP_DIR/$ZIP_NAME" curl -fsSL "$BASE/SKILL.md" -o "$TMP_DIR/SKILL.md" curl -fsSL "$BASE/skill.json" -o "$TMP_DIR/skill.json" ACTUAL_PUBKEY_SHA256="$(openssl pkey -pubin -in "$TMP_DIR/signing-public.pem" -outform DER | shasum -a 256 | awk '{print $1}')" if [ "$ACTUAL_PUBKEY_SHA256" != "$RELEASE_PUBKEY_SHA256" ]; then echo "ERROR: signing-public.pem 指纹不匹配" >&2 exit 1 fi openssl base64 -d -A -in "$TMP_DIR/checksums.sig" -out "$TMP_DIR/checksums.sig.bin" openssl pkeyutl -verify -rawin -pubin \ -inkey "$TMP_DIR/signing-public.pem" \ -sigfile "$TMP_DIR/checksums.sig.bin" \ -in "$TMP_DIR/checksums.json" >/dev/null hash_file() { if command -v shasum >/dev/null 2>&1; then shasum -a 256 "$1" | awk '{print $1}' else sha256sum "$1" | awk '{print $1}' fi } verify_manifest_file() { asset="$1" path="$2" expected="$(jq -r --arg asset "$asset" '.files[$asset].sha256 // empty' "$TMP_DIR/checksums.json")" if [ -z "$expected" ]; then echo "ERROR: checksums.json 缺少 $asset" >&2 exit 1 fi actual="$(hash_file "$path")" if [ "$actual" != "$expected" ]; then echo "ERROR: $asset 校验和不匹配" >&2 exit 1 fi } expected_archive="$(jq -r '.archive.sha256 // empty' "$TMP_DIR/checksums.json")" if [ -z "$expected_archive" ]; then echo "ERROR: checksums.json 缺少 archive.sha256" >&2 exit 1 fi actual_archive="$(hash_file "$TMP_DIR/$ZIP_NAME")" if [ "$actual_archive" != "$expected_archive" ]; then echo "ERROR: 存档校验和不匹配" >&2 exit 1 fi verify_manifest_file "SKILL.md" "$TMP_DIR/SKILL.md" verify_manifest_file "skill.json" "$TMP_DIR/skill.json" echo "已验证签名的版本清单、存档、SKILL.md 和 skill.json。" 仅在验证成功后安装或提取存档。 操作要求 所需运行时:openclaw node bash 可选运行时:sendmail 用于本地 MTA 投递 SMTP 中继通过 PROMPTSEC_SMTP_HOST / PROMPTSEC_SMTP_PORT git 仅当 PROMPTSEC_GIT_PULL=1 时 此技能默认情况下不是始终开启的,但当调用时会创建或更新一个无人值守的 openclaw cron 作业。在启用它之前,请查看配置的 DM/电子邮件收件人和主机的 openclaw/SMTP 环境。 目标 创建(或更新)一个每日 cron 作业,该作业: 运行:openclaw 安全审计 --json openclaw 安全审计 --deep --json 总结发现结果(关键/警告/信息 + 顶级发现) 将报告发送到: 用户选择的 DM 目标(频道 + 收件人 ID/句柄) 一个可选的电子邮件收件人,只有当 PROMPTSEC_EMAIL_TO 配置时 默认时间表:每日 23:00(11pm)在所选时区。 投递:DM 到配置的目标 仅当存在明确的收件人时,才发送可选的电子邮件。