首页/系统与基础设施/自动化运维速查/批量任务的名单控制机制
批量执行与作业50 条

批量任务的名单控制机制

名单控制决定一次批量作业到底能碰到哪些目标。白名单是默认拒绝、只允许名单内目标执行,黑名单是默认允许、名单内目标跳过。安全基线要求以白名单为主:黑名单无法覆盖新加入的主机,一次遗漏就可能把关键节点卷进批量操作。

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌​​​​‌​‌‌‌​‌​‌​‌‌‌​‌​​​‌‌​‌‌‌‌​‌‌​‌‌​‌​‌‌​​​​‌​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌‌‌​‌‌​​​‌​​‌‌​​​​‌​‌‌‌​‌​​​‌‌​​​‌‌​‌‌​‌​​​​​‌​‌‌​‌​‌‌​‌​‌​​‌‌​‌‌‌‌​‌‌​​​‌​​​‌​‌‌​‌​‌‌​​​​‌​‌‌​‌‌​​​‌‌​‌‌​​​‌‌​‌‌‌‌​‌‌‌​‌‌‌​‌‌​‌‌​​​‌‌​‌​​‌​‌‌‌​​‌‌​‌‌‌​‌​​​​‌​‌‌​‌​‌‌​​​‌​​‌‌​‌‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌​‌​‌‌​‌‌​‌‌​​​‌‌​‌​​‌​‌‌‌​​‌‌​‌‌‌​‌​​​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​

两种名单的差别

白名单表达「允许」,语义是默认拒绝:目标不在名单内就不执行,新增主机默认安全。黑名单表达「禁止」,语义是默认允许:只有被显式点名的主机才跳过,任何新上线或改名的主机都会自动落进可执行范围。删除、清空、重装这类不可逆动作必须走白名单;临时屏蔽个别主机可以用黑名单,但不能把它当作唯一保护手段。名单还应与主机标识口径绑定:按资产编号或完全限定域名匹配,避免 IP、短名、别名混用导致匹配落空。

基本信息

白名单语义默认拒绝,仅名单内目标执行
黑名单语义默认允许,名单内目标跳过
落地位置清单分组、脚本内过滤、平台侧授权范围、执行前校验
关键约束主机标识口径统一;名单变更需审批与留痕

典型使用场景

  • 排除禁改目标:数据库集群、网络与安全设备不参与通用批量操作
  • 维护期屏蔽:某机房正在施工,临时把这批主机排除在外
  • 故障隔离:把已确认异常的节点摘出名单位置,避免重复操作干扰排障
  • 合规要求:变更只允许影响已审批主机,名单即执行边界
  • 环境隔离:防止把测试环境主机误纳入生产批量的目标集合
  • 反向操作保护:清理、下线类动作强制只走白名单

白名单为主、黑名单为辅

白名单为主、黑名单为辅
# 目标集合 = 白名单 ∩ 全量清单 - 黑名单,默认拒绝
allow=allowlist.txt
block=blocklist.txt

selected=$(grep -Fxf "$allow" hosts.txt | grep -Fvxf "$block" || true)
if [ -z "$selected" ]; then
  echo "白名单未匹配到任何目标,拒绝执行" >&2; exit 1
fi

# 执行前必须打印实际目标,日志与工单对得上才算留痕
echo "本次将影响以下目标:"
printf '%s\n' "$selected"

# 规模阈值保护:超过阈值要求显式确认,避免名单写宽后无人察觉
count=$(printf '%s\n' "$selected" | wc -l)
[ "$count" -gt 20 ] && { read -r -p "目标较多($count),确认执行? " a; [ "$a" = yes ] || exit 1; }

# 真正执行:并发与失败处理另外控制
printf '%s\n' "$selected" | xargs -P 5 -I{} ssh -n {} 'uptime'

名单机制对照

机制默认行为新增主机的后果适合动作
白名单拒绝执行自动排除,安全删除、清空、重装、下线
黑名单允许执行自动纳入,风险高临时屏蔽个别主机
白名单加黑名单拒绝执行自动排除,可再临时排除绝大多数生产批量作业
标签分组按标签选目标取决于标签维护是否及时按角色的常规运维
名单与主机清单最好同源:清单里给主机打上角色与保护等级标签,名单由标签推导,避免同一批主机在两处各维护一份、彼此不同步。
不可逆操作不能用「黑名单兜底」的思路保护关键主机。名单写漏、主机改名、新机上线都会让保护失效,这类动作应强制白名单并限制最大影响台数。

易错点

  • 用黑名单保护核心节点:新增或改名的主机不在名单里,直接被批量操作命中
  • 主机标识口径不统一(IP、短名、别名混用):名单看起来有内容,实际一条都没匹配上
  • 名单与主机清单两处维护:清单加了新机、名单没同步,保护范围与预期不一致
  • 名单变更没有审批与留痕:事后无法解释为何某台关键主机在影响范围内
  • 通配匹配过宽(如按前缀匹配):本想排除数据库,结果把数据库网关一起排除或一起命中

数据来源与参考

  • NIST SP 800-53:最小权限与访问控制(AC 族)
  • Ansible 官方文档:清单分组与模式(pattern)匹配
  • CIS Benchmarks:变更范围控制要求

整理校对:其其网ICT文档中心 · 本页地址:docs.qiqicto.com/automation/batch-job-allowlist-blocklist.html

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌​​​​‌​‌‌‌​‌​‌​‌‌‌​‌​​​‌‌​‌‌‌‌​‌‌​‌‌​‌​‌‌​​​​‌​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌‌‌​‌‌​​​‌​​‌‌​​​​‌​‌‌‌​‌​​​‌‌​​​‌‌​‌‌​‌​​​​​‌​‌‌​‌​‌‌​‌​‌​​‌‌​‌‌‌‌​‌‌​​​‌​​​‌​‌‌​‌​‌‌​​​​‌​‌‌​‌‌​​​‌‌​‌‌​​​‌‌​‌‌‌‌​‌‌‌​‌‌‌​‌‌​‌‌​​​‌‌​‌​​‌​‌‌‌​​‌‌​‌‌‌​‌​​​​‌​‌‌​‌​‌‌​​​‌​​‌‌​‌‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌​‌​‌‌​‌‌​‌‌​​​‌‌​‌​​‌​‌‌‌​​‌‌​‌‌‌​‌​​​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​