Repository 最担心的事情莫过不小心加入 Secret,尤其是 Public Repository,一来可能将服务器、资料库或其他服务直接开放让大众看光光,二来若处理不当,可能会保存在历史记录内,被爬虫程序找出进而恶意使用,不得不谨慎。为了避免开发者疏忽大意将敏感资料放置 Repository,GitHub 本身加入了 Secret Scanning,若您为 Public Repository 则预设为启用并对於已知类型的 Secret 进行扫描,避免意外事件而导致机密资讯外泄。
Secret Scanning 强制对 Public Repo 进行启用(不能关闭);若为 Private Repo,则需要启用 GitHub Advanced Security (Enterprise 版本)
Secret Scanning 不仅仅对於最新版本或主要分支(Main),甚至对於所有分支与整个 Git 纪录进行扫描
常见的 Secret 为 token 或 private key,通常用於与外部服务进行沟通,由供应商所提供,通常建议不要储存於 Repository,而是存在外部专用的安全位置。部分资讯可以参考:GitHub Action YAML 撰写技巧 - 环境变数(Environment Variables) 与 秘密 (Secrets)
若有开发者提交贡献时不小心签入 Repository,Secret Scanning 透过比对会找出该 Secret ,并由其他 Provider 以邮件通知 Repository Owner,Secret 被加入至 Public Repo。
已知的 Secret 如 Azure DevOps Personal Access Token、Databricks Access Token、Google API Key...等,可以参考官方文件 About secret scanning,有提供更多已知类型秘密。
若您的服务也有提供相关的验证授权机制,可以考虑加入 Secret scanning partner program
注意:下列为危险操作
举个例子,我们将 Azure DevOps Personal Access Token 加入到 Repo 某个档案内,过没多久,Azure DevOps Service 即发初通知告知我,我的 PAT 在某个 GitHub Public Repo 内被扫描出来
另一个例子,是将 GitHub Personal Access Token 加入到 Repo 某个档案内,过没多久,GitHub 随即通知我类似的警告
阅读完上一篇 GitHub Advanced Security - 程序码扫描 与本篇文章,应该对於 GitHub 进阶安全功能有进一步了解。也如果先前所提到 因为 GitHub 以社群与开源协作 为出发点,所以与其他市面上常见的 DevOps 工具有所不同,很早就将基本安全机制内建於服务中,而不是让使用者以选择性方式加入 DevOps 工具中。希望读者除了熟悉这些安全功能如何使用,也能透过这些既有功能,进一步思考如何在日常开发过程中,避免产生安全漏洞行为出现,才能达到 DevSecOps 的最原始的目的。
若喜欢我的文章,欢迎点 like, 分享与订阅。
你可以在 Repository 手动加入 .github/secret_scanning.yml 档案,并透过设定 paths-ignore,来排除扫描特定档案
paths-ignore:
- "Config/*.config"
https://docs.github.com/en/code-security/secret-scanning/about-secret-scanning
<<: UISearchController 出来挑土豆 Day 18
>>: Day 17: swiftUI与Coroutine强强联手,迸出新滋味.
前言: 简单介绍 kotlin的基本语法和基本型态。 大纲: 变数宣告 变数名称 : 变数型态 = ...
这次要来实作一个登入的弹窗效果,以前做弹窗大多是使用 Bootstrap 的弹窗元件或是 ligh...
对於AAC 这个音讯格式,可能大多数人都不太熟悉。但是AAC 是 iTunes 里常见的音乐档案格式...
今天到了 day3,上次有预告了这次会开始进行RISC-V 32平台的musl libc porti...
while回圈计算1加到100: for回圈计算1加到100: break跟continue的范例:...