首页/系统与基础设施/自动化运维速查/自助服务中的参数校验
巡检与自助运维60 条

自助服务中的参数校验

参数校验分格式类型、业务规则、环境约束三层,任何一层缺失都会把错误推迟到执行阶段,造成半成品资源或越权交付。校验失败要指明具体字段与允许取值,并且提交时通过后仍须在执行前复核一次,因为配额、名称唯一性与网络地址都可能在这段间隔内发生变化。

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

校验保护两侧

自助服务的参数校验承担两个职责:让用户不因输入错误浪费一次交付,也让平台不因非法参数接受越界请求。校验分三层:格式与类型、业务规则、环境约束。缺任何一层,错误都会推迟到执行阶段暴露,而那时往往已经占用资源或产生了部分变更。

基本信息

第一层类型、格式、长度、枚举范围
第二层业务规则,如名称唯一、命名规范、参数依赖
第三层环境约束,如剩余配额、网络段可用性、权限边界
校验时机提交时校验并给出可读原因,执行前再校验一次
错误反馈指出具体字段与合法取值范围

典型使用场景

  • 名称与标识:校验格式与唯一性,避免与既有资源冲突
  • 数值型参数:限制上下限与步长,避免申请超出容量的规格
  • 参数依赖:某些组合互斥或必须成对出现,需要交叉校验
  • 权限边界:校验申请人对目标范围是否有权,防止越权交付
  • 执行前复核:提交到执行期间环境可能变化,需再次校验

校验层次对照

层次校验内容漏掉的后果
格式类型结构、长度、枚举解析直接报错,体验差
业务规则唯一性、命名规范、依赖执行到中途失败,留下半成品
环境约束配额、网络段、权限被策略拦截或越权交付成功
执行前复核提交到执行期间的变化基于过期信息交付

提交时与执行前都校验

提交时与执行前都校验
# 第一层:格式与取值范围的即时校验,给出可读原因
case $size in
  small|medium) : ;;                    # 允许的取值集合
  *) echo 参数size只允许small或medium; exit 2 ;;
esac
# 第二层:业务规则,检查名称是否已被占用
[ -z $(db_query name=$name) ] || { echo 名称已存在; exit 2; }
# 第三层:执行前复核配额与环境,避免用过期信息交付
quota_check $team $type || { echo 配额不足; exit 3; }
校验失败必须指出具体字段与允许值。只返回一句参数错误的提示,会迫使申请人与平台值班反复沟通,把自助化节省的时间又消耗在澄清问题上。
提交时校验通过不代表执行时仍然合法。配额、名称唯一性与网络地址可能在这段时间内变化,因此执行前必须再次校验,并把失败结果回写到申请状态。

易错点

  • 只校验格式不校验业务规则:执行到中途失败,留下半成品与不一致状态
  • 校验信息不指明字段:用户反复试错,支持人员被大量咨询占用
  • 只在提交时校验:执行时基于过期信息交付,产生冲突或越权
  • 界面与后端校验不一致:界面允许的值被后端拒绝,用户无法理解失败原因

数据来源与参考

  • OWASP 输入校验与安全编码相关指南
  • HashiCorp Terraform 官方文档:变量校验规则
  • ITIL 4 服务管理实践:服务请求管理

整理校对:其其网ICT文档中心 · 本页地址:docs.qiqicto.com/automation/self-service-parameter-validation.html

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