应用安全SASTIaC【免费下载链接】tfsecTfsec is now part of Trivy项目地址https://gitcode.com/gh_mirrors/tf/tfsec点击查看免费下载本文是 tfsec 安全检查规则google-sql-enable-backup的深度技术解读。该规则用于检测 Terraform 中 Google Cloud SQLgoogle_sql_database_instance实例是否启用了自动备份属于 Google SQL 服务、默认严重级别为medium的内置检查。读完本文你将掌握该规则的判定逻辑、不安全的 Terraform 写法与正确修复写法、如何在本地与 CI 中运行/过滤该检查以及如何基于源码理解 tfsec 规则文档的生成机制。一、规则概览身份、归属与严重级别google-sql-enable-backup是 tfsec 针对 Google 云平台提供的内置检查之一其官方规则文档位于 docs/checks/google/sql/enable-backup/index.md规则全称Check ID为google-sql-enable-backup主题是“Enable automated backups to recover from>resource google_sql_database_instance db { name db database_version POSTGRES_12 region us-central1 settings { backup_configuration { enabled false } } }需要特别说明即使完全省略backup_configuration块也同样无法通过该检查。因为 Cloud SQL 的自动备份默认关闭tfsec 判定的是“实例最终是否处于备份开启状态”。因此安全写法必须显式声明enabled true。3.2 安全示例通过google-sql-enable-backup检查以下配置通过将enabled设置为true显式开启了自动备份resource google_sql_database_instance db { name db database_version POSTGRES_12 region us-central1 settings { backup_configuration { enabled true } } }3.3 关键字段说明字段取值说明database_versionPOSTGRES_12等数据库引擎版本示例为 PostgreSQL 12regionus-central1等实例部署区域settings.backup_configuration.enabledtrue/false自动备份开关本规则唯一关注的判定点需要指出的是backup_configuration块在官方 Terraform 资源文档中还支持start_time备份开始时间、日志保留等附加配置本规则只要求enabled为true其余字段可结合实际容灾需求如备份窗口、PITR 时间点恢复进一步补充相关细节可参见原文档 Links 部分指向的 Terraform 官方资源文档与 Google Cloud 备份/恢复文档。四、tfsec 如何执行与渲染该检查源码级解析4.1 规则文档的自动生成本文解读的这份规则页面并非手写而是由 tfsec 文档生成器自动产出的。在 cmd/tfsec-docs/webpage.go 的generateWebPage函数中每个检查的ID、ShortCode、Severity、Summary、Explanation、Impact、Resolution、BadExample、GoodExample、Links会被填充进baseWebPageTemplate模板最终渲染为docs/checks/google/sql/enable-backup/index.md这样的页面文件。也就是说你看到的“不安全示例/安全示例/影响/修复”结构正是 tfsec 规则元数据的标准化呈现。4.2 扫描引擎与依赖当前 tfsec 的扫描能力由 aquasecurity/defsec 中项目直接依赖github.com/aquasecurity/defsec v0.84.1internal/app/tfsec/cmd/flags.go 与 internal/app/tfsec/cmd/root.go 中则通过 defsec 的terraformscanner 加载并执行规则。因此google-sql-enable-backup的实际判定逻辑运行在 defsec 的 Google SQL 规则集中tfsec 负责解析 HCL、构建执行上下文并汇总结果。从源码结构可以推断与 AWS 规则拥有独立旧编号如AWS052不同google-sql-enable-backup直接使用 defsec 的统一 ID 体系——internal/pkg/legacy/map.go 与 internal/pkg/ignores/migration.go 中列出的旧 ID 到新 ID 的迁移映射仅覆盖 AWS 规则未包含任何google-*规则。4.3 命令行为退出码与严重级别过滤tfsec 可直接对当前目录或指定目录执行扫描# 扫描当前目录下的 Terraform 文件 tfsec . # 扫描指定目录 tfsec path/to/terraform运行入口见 cmd/tfsec/main.go其中还会在 stderr 打印一条提示tfsec 已加入 Trivy 家族后续工程重心将转向 Trivytfsec 本体在一段时间内仍可使用。执行结果对应的退出码逻辑定义在 internal/app/tfsec/cmd/root.go 的getDetailedExitCode函数中退出码 0没有规则失败退出码 2有失败的规则但全部为 LOW 严重级别退出码 1存在任意 CRITICAL / HIGH / MEDIUM 级别的失败规则。由于google-sql-enable-backup是 medium 级别一旦触发失败命令将以退出码1结束非常适合直接接入 CI 门禁——任何未开启自动备份的 Cloud SQL 实例都会让流水线失败。如需按严重级别过滤报告可使用--minimum-severity/-m参数见 docs/guides/usage.md# 仅报告 MEDIUM 及以上级别的结果 tfsec --minimum-severity MEDIUM . # 排除该规则 tfsec --exclude google-sql-enable-backup .也可以在配置文件.tfsec/config.json或config.yml或通过--config-file指定中设置全局最小严重级别详见 docs/guides/configuration/config.md{ minimum_severity: MEDIUM }配置文件的解析实现位于 internal/pkg/config/config.go其中MinimumSeverity字段对应配置键minimum_severitySeverityOverrides字段还允许把某个检查的默认级别覆盖为其他级别例如把google-sql-enable-backup提升为 HIGH从而按团队策略调整告警优先级。五、合理豁免ignore 机制与风险提示在某些场景下团队可能希望临时豁免该检查例如短生命周期的临时分析库、明确不开启备份的开发环境。tfsec 支持在 HCL 源码中通过注释行内豁免完整语法见 docs/guides/configuration/ignores.mdresource google_sql_database_instance db { name db database_version POSTGRES_12 region us-central1 settings { backup_configuration { enabled false #tfsec:ignore:google-sql-enable-backup } } }或把 ignore 注释单独放在问题行上方settings { #tfsec:ignore:google-sql-enable-backup backup_configuration { enabled false } }还可以为豁免设置过期时间避免“忽略后被永久遗忘”#tfsec:ignore:google-sql-enable-backup:exp:2026-12-31过期之后该豁免自动失效检查会重新生效。需要注意的是忽略不等于修复。在涉及生产数据的关键数据库上建议优先按安全示例显式开启自动备份而不是依赖 ignore 注释。六、从检查到落地推荐实践清单结合本文内容可将google-sql-enable-backup的落地实践总结为以下步骤编写时在所有google_sql_database_instance资源的settings.backup_configuration中显式设置enabled true本地验证运行tfsec .或tfsec --minimum-severity MEDIUM .确认无 medium 及以上告警退出码为 0CI 集成将 tfsec 加入流水线利用退出码 1/2/0 语义控制门禁豁免管理确需豁免的场景使用#tfsec:ignore:google-sql-enable-backup:exp:yyyy-mm-dd并设置过期时间配套加固结合同目录下的 encrypt-in-transit-data、no-public-access 等 SQL 规则构建完整的 Cloud SQL 安全基线。七、相关资源规则原文docs/checks/google/sql/enable-backup/index.mdSQL 服务检查索引docs/checks/google/sql/index.md命令行完整参数表docs/guides/usage.md配置文件最小严重级别、级别覆盖docs/guides/configuration/config.md忽略/豁免机制docs/guides/configuration/ignores.md规则文档生成器cmd/tfsec-docs/webpage.go扫描依赖声明go.mod赞分享应用安全SASTIaC【免费下载链接】tfsecTfsec is now part of Trivy项目地址https://gitcode.com/gh_mirrors/tf/tfsec点击查看免费下载相关推荐tfsec 规则详解为 Azure SQL 数据库启用审计azure-database-enable-audittfsec 规则详解为 Azure SQL 数据库启用审计azure database enable audit 本篇技术指南围绕 tfsec 内置检查规应用安全SASTIaCtfsec 检查项详解google-sql-no-contained-db-auth —— Google Cloud SQL 包含数据库身份验证安全配置tfsec 检查项详解google sql no contained db auth —— Google Cloud SQL 包含数据库身份验证安全配置 本篇应用安全SASTIaCtfsec 检查项详解确保 Google Cloud SQL PostgreSQL 实例开启锁等待日志google-sql-pg-log-lock-waitstfsec 检查项详解确保 Google Cloud SQL PostgreSQL 实例开启锁等待日志google sql pg log lock wait应用安全SASTIaC上一篇3步搞定家庭厨房管理系统Tandoor Recipes部署与运维全攻略下一篇告别列表卡顿Agera响应式RecyclerView完全指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?