用途 该技能用于对 PlanetScale Postgres 数据库进行安全审查,给出最佳实践建议,重点关注可用性保护、应用隔离、恢复能力、安全自动化与可观测性。它只做评估和推荐,不应用任何更改;所有创建分支、执行迁移、恢复备份、创建或轮换角色、启用 pg_strict、创建流量控制规则、修改网络限制等操作都需要人工批准。
分支与 Schema 工作流 PlanetScale Postgres 分支不使用 Vitess 风格的部署请求,Schema 变更直接作用于各分支;生产 Schema 变更应通过应用常规迁移流程管理,并包含分支验证步骤。审查项包括:是否存在开发或测试分支;分支是空分支还是从备份恢复;迁移是否先在生产前对分支测试;应用迁移是否可回滚或有文档化回滚策略;生产 DDL 是否人工审查。建议使用非生产分支做迁移测试,把生产迁移作为显式人工批准的部署步骤,PITR/备份恢复分支用于事故恢复而非自动回滚机制。
角色与最小权限 检查应用是否使用默认角色连接,若是则标记为安全缺口。建议:应用服务器使用用户自定义角色而非默认角色;按服务、环境和访问模式分离角色;分析、仪表盘、报表及无需写入的智能体使用只读角色;自动化使用短期或限定用途角色。当 Terraform 管理角色时,密码应保留在 Terraform 状态之外的场景可优先使用 planetscale_postgres_redacted_branch_role,并通过 API 或控制台重置密码后存入团队密钥管理器。还需文档化凭据轮换且不造成应用停机。
pg_strict 检查应用角色是否启用 pg_strict。在工作负载能容忍阻止无 WHERE 的危险 UPDATE 或 DELETE 时,建议为生产应用角色启用。推荐 rollout:在非生产环境启用警告模式或评估;修复会被阻止的查询;为应用角色启用严格阻止;文档化经批准的一次性豁免流程。启用后可能在新连接建立后阻止应用查询,因此需批准。
Query Insights 与 pginsights 审查慢查询、高行读取查询、高 CPU 查询模式(Insights API 的 sort=cpuTime 或 sort=percentCpuTime)、高频查询、报错查询、活跃异常、查询标签,以及是否启用字面量/原始查询采集。原始查询采集由按分支在控制台 Extensions 标签页配置的 pginsights.raw_queries 集群参数控制;数据库 API 对象也带有 insights_raw_queries 字段,两者不一致时以集群参数为有效采集状态,只报告有效状态,不应描述为矛盾或不一致。建议将原始查询采集视为一种能力:当模式级数据无法隔离病态调用时使用;若客户数据处理要求有限制,限定范围启用(事故窗口、明确保留期)或保持禁用均为有效结果,并记录理由。标签用于归因,原始采集用于调用级下钻,两者互补。使用部署 SHA 和路由/任务标签关联回归与发布。
查询标签 评估 SQL 注释是否包含结构化 SQLCommenter 标签。建议支持 Insights 与 Traffic Control 的标签:application、service、route(使用规范化路由模板而非具体 URL)、controller 和 action、job 或 queue、feature、environment、release_sha、tenant_tier(仅在基数有界时)、source(智能体、脚本、BI 工具、集成、MCP)。避免高基数或敏感标签:用户 ID、请求 ID、邮箱、会话 ID、租户 ID(除非明确有界并被接受)、含标识符的原始 URL 路径、访问令牌、密钥或 API 密钥。
Database Traffic Control 当数据库存在公开或客户触发的昂贵功能、导出/报表/分析/即席搜索与 OLTP 共用、后台作业可能挤占交互流量、第三方集成查询量不可预测、智能体生成查询、已知偶尔失控的查询指纹、需要限制数据库资源使用的租户或路由类别时,建议使用 Traffic Control。默认建议:预算先以警告模式启动;尽量使用查询标签;对已知问题使用指纹级规则;观察警告并确认未阻止关键流量后再使用强制模式;维护紧急禁用流程。
备份与 PITR 检查自动备份计划、保留窗口、WAL/PITR 可用性、防止删除的手动备份、恢复演练历史、恢复运行手册。建议确认默认备份满足客户 RPO/RTO;若恢复窗口超出默认值则增加保留期或备份计划;若 Terraform 是事实来源,在 Terraform 中管理备份策略;执行恢复到新分支的演练;文档化恢复后的应用切换流程。紧急备份可能影响性能,应作为运维操作对待。
连接、连接池与网络安全 检查应用使用直连 5432 还是 PgBouncer 6432;连接池大小是否匹配运行时与部署模型;无服务器或边缘环境是否可能产生连接风暴;通过 pscale branch connections top 查看实时连接/会话压力,包括阻塞和 idle-in-transaction 会话;是否配置私有连接;是否配置 IP 限制;公网访问是否意外保持可用。建议高换代应用连接在可接受事务池限制时使用 PgBouncer;需要会话相关功能时使用直连;私有网络需求使用 AWS PrivateLink 或 GCP Private Service Connect;使用 IP 限制减少公网暴露;明确私有连接不会自动阻止公网访问,仅私有姿态需要 IP 限制或等效控制。
扩展 审查与安全和可观测性相关的已启用和可用扩展:pginsights、pg_strict、pg_stat_statements、auto_explain、pg_squeeze、pg_cron、pg_partman_bgw、pg_hint_plan、TimescaleDB(如涉及时序特征)。仅在使用场景明确时推荐扩展。auto_explain 可用于记录慢查询执行计划,通过 auto_explain.log_min_duration 等参数配置;当慢查询计划捕获能显著改善诊断且日志量可接受时推荐。部分扩展激活需要控制台变更和数据库重启,需批准。
Webhook 建议 评估并建议以下 Webhook:branch.anomaly、branch.out_of_memory、branch.primary_promoted、branch.ready、branch.start_maintenance、cluster.storage、database.access_request、branch.schema_recommendation(如可用)、webhook.test(用于验证设置)。建议自动化行为:异常、内存不足、主节点提升、存储、维护作为告警;异常和 Schema 建议用于智能体接收;任何生成的 Traffic Control、Schema、角色或网络变更需人工批准。
输出 返回:当前 Postgres 安全态势、最高风险的可用性缺口、建议的 Traffic Control 计划、建议的角色与 pg_strict 计划、建议的备份/PITR 计划、建议的网络姿态计划、建议的查询标签计划、需要批准的拟议变更。结尾声明:No Postgres changes have been applied.