生产权限不在服务方手里,交付仍然可以执行,但要把“谁动手”改成“谁准备、谁复核、谁放行”。可行做法是让建站服务方交付可导入的代码包、数据库脚本和配置清单,由企业自有人员或运维在隔离环境中执行;服务方通过只读环境验证结果。若企业连测试环境也不给,只能交付文档和静态原型,验收范围必须相应缩小。
单个站点交接时,服务方常被临时授予生产权限,改完即走,看起来顺畅。样本一多,企业收紧权限,同一套交付方式立刻失效:模板能装、栏目能建,但涉及域名解析、证书替换、定时任务、支付回调地址、缓存刷新时,没人能替服务方按下执行键。这不是服务方能力突然下降,而是交付链条上的执行角色被抽走了。
此时有两种解释。第一种是权限政策收紧,企业出于安全或合规要求,不再允许外部人员接触生产环境,属于制度性变化。第二种是责任边界没谈清,企业担心一旦给权限,出问题后无法界定是服务方改动还是自身运维操作,于是用“不给权限”回避决策。两种解释的应对方式完全不同,先别急着换供应商。
看企业是否愿意提供等价替代条件。如果它拒绝生产权限,但愿意开通只读账号、提供测试环境、指定内部执行人并约定响应时限,那更可能是制度性收紧,交付可以继续。如果它既不给权限,也不指定执行人,不接受任何验证方式,只要求“你远程弄好”,那更可能是责任边界没谈清,需要先把验收责任写进合同附件。
再看历史记录。过去同类项目是否出现过权限临时开通后又收回的情况,收回时是否伴随内部审计或安全整改通知。若有,按制度性变化处理;若只是口头说“以后再说”,按责任边界问题处理。证据不足时,不要用“以前都能给”来推断现在也能给。
安排一:企业执行,服务方出包。适用条件是存在内部运维或指定执行人,且能安排一个维护窗口。服务方交付代码包、数据库变更脚本、环境变量清单、回滚步骤和逐步操作说明;执行人按说明操作,服务方在只读环境核对页面、日志和接口返回。动作要点是把每一步写成可勾选的清单,执行人完成后回传结果,服务方据此判断是否进入下一步。若某一步失败,先停在原地排查,不要跳过继续。
安排二:服务方在隔离环境预演,企业只做最终发布。适用条件是企业能提供与生产环境接近的测试环境,且允许服务方在该环境内操作。服务方在测试环境完成安装、配置和内容导入,记录所有变更;企业执行人只需把通过验证的包和脚本搬到生产并执行发布。这种安排把风险集中在测试环境,生产动作最少,但对环境一致性要求高,数据库版本、PHP或运行环境版本不一致时,预演结果不能直接照搬。
安排三:只交付文档和静态原型。适用条件是企业既不给生产权限,也不给测试环境,且不接受远程协助。此时服务方只能交付页面结构说明、内容模型、静态原型和配置建议,无法验证真实运行效果。验收标准应改为“文档完整、原型可打开、字段与需求一致”,而不是“网站已上线”。这种安排适合前期规划,不适合直接当作上线交付。
假设某企业要求建站服务方交付一个含会员登录和订单查询的站点,但不给生产权限。服务方先要只读账号,被拒;再要测试环境,企业同意提供一台与生产同版本的测试服务器。服务方在测试环境完成部署,导出数据库变更脚本和配置差异清单,交给企业执行人。执行人在生产执行后,服务方用只读账号抽查登录流程和订单列表。若只读账号也被拒,服务方只能交付脚本和说明,并在验收单上注明“未在生产环境验证”,企业需自行承担首次发布风险。这个例子里,测试环境是否提供,直接决定交付是“可验证”还是“仅文档”。
把上述边界写进交付清单后,再决定是否签署验收。若企业连执行人也不指定,交付只能停在文档阶段,继续推进只会把风险转移到服务方一侧。