)
应用安全SASTIaC【免费下载链接】tfsecTfsec is now part of Trivy项目地址https://gitcode.com/gh_mirrors/tf/tfsec点击查看免费下载导读本文围绕 tfsec 内置检查规则github-repositories-private旧版 IDGIT001展开讲解如何通过静态扫描 Terraform 代码强制将 GitHub 仓库设置为private防止源代码与知识产权被公开泄漏。读者将掌握该规则的工作原理、触发条件、两种修复方式private属性与visibility属性、正反示例以及如何将其接入本地扫描与 CI 流水线。规则概览github-repositories-privategithub-repositories-private是 tfsec 针对 GitHub ProviderTerraformintegrations/github仓库资源github_repository的静态检查规则。在仓库的 rules.md 规则清单中它的定位如下规则 IDProviderService描述github-repositories-privategithubrepositoriesGithub repository shouldnt be public.该规则属于 tfsec 的 github 提供方Provider、repositories 服务Service分组与之同组的还有github-repositories-enable_vulnerability_alerts见 docs/checks/github/repositories/index.md。在 tfsec 的旧版检查编号体系中该规则对应GIT001映射关系记录在 internal/pkg/legacy/map.goGIT001: github-repositories-private,在迁移到 Trivy 或使用旧版配置时这个 Legacy ID 仍然可用。默认严重级别Critical根据规则文档的元数据github-repositories-private的默认严重级别为critical严重这也是 tfsec 规则体系中最高级别的告警。它意味着一旦仓库被设为公开任何互联网用户都能读取仓库全部内容属于需要立即修复的高风险配置。为什么 GitHub 仓库必须私有风险与影响规则文档明确说明了该检查的必要性Anyone can read the contents of the GitHub repository and leak IP即任何人均可读取 GitHub 仓库的内容从而泄漏知识产权IP。这包括但不限于私有业务逻辑、算法与核心源代码被竞争对手直接复制硬编码在代码中的密钥、令牌、数据库连接串等敏感信息被公开抓取内部基础设施拓扑、域名、账号命名规则等信息暴露扩大攻击面。因此规则建议的修复方向非常明确Make sensitive or commercially important repositories private即将敏感或具有商业价值的仓库设置为私有。公开仓库public只应保留给刻意开源的项目默认策略应当是先私有再按需开源。修复方式private 属性与 visibility 属性规则文档指出修复该问题有两种等价方式将private属性设置为true将visibility属性设置为internal或private。在 Terraform 的github_repository资源中visibility属性的可选值包括public、private与internal其中internal仅适用于 GitHub Enterprise 计划仓库仅对组织内部成员可见。下表总结了三种典型取值与检查结果配置方式属性取值检查结果visibility publicpublic失败触发 critical 告警visibility privateprivate通过visibility internalinternal通过仅限 GitHub Enterpriseprivate true不设置 visibility通过private false不设置 visibility失败需要注意的是visibility与private是互斥的声明方式——Terraform 的github_repository资源要求二者只能同时使用其中一个或visibility优先级更高。在代码中采用任意一种方式将仓库声明为私有即可通过本规则检查。触发告警的示例Insecure Example以下 Terraform 配置会失败github-repositories-private检查。它创建了一个名为example的公开仓库还使用了template块从 GitHub 官方模板初始化resource github_repository bad_example { name example description My awesome codebase visibility public template { owner github repository terraform-module-template } }关键问题行是visibility public——正是这行配置导致 tfsec 判定仓库可被任何人读取从而产生 critical 级别告警。仓库中的 _examples/archived/main.tf 也展示了真实项目中github_repository的完整用法含name、description、archived、visibility、has_downloads、has_issues、pages动态块等可作为对比参考——该示例同样显式设置visibility public属于会被本规则标记的写法。通过检查的示例Secure Example以下配置通过将visibility改为private即可通过github-repositories-private检查resource github_repository good_example { name example description My awesome codebase visibility private template { owner github repository terraform-module-template } }等价的修复写法也可以直接使用private属性resource github_repository good_example { name example description My awesome codebase private true template { owner github repository terraform-module-template } }在本地与 CI 中运行该检查tfsec 以静态分析方式扫描 Terraform 代码见 README.md无需真正执行terraform apply。运行方式如下# 扫描当前目录 tfsec . # 扫描指定目录 tfsec ./modules/github当扫描到visibility public的github_repository资源时tfsec 会输出类似如下的告警且进程退出码非零详见 README.mdgithub-repositories-private github repository shouldnt be public. .../main.tf:3对于确需保持公开的开源仓库可以按 tfsec 的 ignore 语法在代码行内或资源块前标注忽略指令语法参考 README.mdresource github_repository opensource_repo { name my-public-project visibility public #tfsec:ignore:github-repositories-private }在 CI如 GitHub Actions 或 Azure Pipelines中只需让流水线以非零退出码终止构建即可将本规则作为门禁杜绝公开仓库配置合入主干。需要说明的是tfsec 官方已宣布逐步将工程精力转移至 Trivy该 Terraform 扫描引擎已原生并入 Trivy 的 IaC 与错误配置扫描能力见 README.md迁移路线可参考 tfsec-to-trivy-migration-guide.md。文档生成的来源仓库中的docs/checks/github/repositories/private/index.md这类规则说明页并非手工维护而是由 cmd/tfsec-docs/webpage.go 依据每条检查的ID、ShortCode、LegacyID、Severity、Summary、Explanation、Impact、Resolution、BadExample、GoodExample等元数据自动生成。这保证了文档中的严重级别、正反示例与引擎实际执行的规则定义始终保持一致——即文档即规则、规则即代码。本文所述的检查 ID、严重级别与示例正是源自这一份由规则元数据驱动的权威文档。小结github-repositories-private旧版 IDGIT001是 tfsec 针对 GitHub 仓库公开配置的critical级检查触发条件github_repository资源将仓库声明为publicvisibility public或private false修复方式将visibility设为private/internal或将private设为true风险本质公开仓库等于将源代码与知识产权暴露给全互联网任何人均可读取与滥用落地建议本地扫描 CI 门禁 确需开源的仓库显式使用tfsec:ignore注释说明豁免理由。赞分享应用安全SASTIaC【免费下载链接】tfsecTfsec is now part of Trivy项目地址https://gitcode.com/gh_mirrors/tf/tfsec点击查看免费下载相关推荐tfsec GitHub repositories 安全检查详解漏洞告警启用与仓库可见性治理tfsec GitHub repositories 安全检查详解漏洞告警启用与仓库可见性治理 tfsec 内置的 github 检查族专门针对 Terrafo应用安全SASTIaCtfsec GitHub 检查规则详解Actions 密钥、分支保护与仓库安全配置扫描tfsec GitHub 检查规则详解Actions 密钥、分支保护与仓库安全配置扫描 本文以 tfsec 内置的 GitHub 安全扫描规则为主线系统讲解应用安全SASTIaCtfsec 检查详解GitHub 仓库必须开启漏洞警报vulnerability_alertstfsec 检查详解GitHub 仓库必须开启漏洞警报vulnerability_alerts 导读 本文围绕 tfsec 内建检查 github rep应用安全SASTIaC上一篇IBM发布30亿参数多语言大模型Granite-4.0-H-Micro多语言能力达行业新高度下一篇4步装好Gyroflow防抖插件10分钟让画面稳下来创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考