Google Cloud平台/API项目凭证疑似泄露,如何合规上传GitHub供用户使用?
解决Google Sheets API凭证泄露问题并让用户正常使用应用
绝对别把JSON凭证文件上传到GitHub——这玩意儿里藏着GCP服务账号的敏感密钥,一旦公开轻则API配额被滥用,重则关联的数据遭泄露,这就是你收到提醒的原因。先立刻从仓库删除这个文件,再去GCP控制台旋转该凭证的密钥,避免已经被爬取的密钥继续被恶意使用。
下面分场景给你正确的实现方案:
面向公开用户的应用:让用户自行生成凭证(推荐)
引导用户自己走流程获取专属凭证,步骤清晰易懂:- 登录Google Cloud Console,新建一个项目
- 在项目内启用Google Sheets API
- 根据应用类型创建凭证:桌面/移动端选OAuth客户端ID,后端服务选服务账号(提醒用户自行保管好这个凭证)
- 让用户下载凭证文件后,在你的应用内提示他们将文件放到指定路径,或手动输入凭证里的关键信息
你的代码要做的是读取用户提供的凭证,而非硬编码你自己的凭证。
服务端应用:用环境变量存储凭证信息
不要上传整个JSON文件,把里面的敏感字段(比如private_key、client_email、project_id)拆分出来,设置为环境变量。代码里直接读取环境变量构建凭证,举个Python的示例:import os from google.oauth2.service_account import Credentials creds = Credentials.from_service_account_info({ "type": "service_account", "project_id": os.getenv("GCP_PROJECT_ID"), "private_key_id": os.getenv("GCP_PRIVATE_KEY_ID"), "private_key": os.getenv("GCP_PRIVATE_KEY").replace("\\n", "\n"), "client_email": os.getenv("GCP_CLIENT_EMAIL"), # 其他必要字段照着原JSON里的内容补充 })同时在仓库里放置一个
.env.example文件,列出需要的环境变量名,方便用户参考配置自己的环境变量。必须添加.gitignore规则
在仓库根目录创建.gitignore文件,加入以下内容,防止后续误传敏感文件:# GCP凭证文件 *.json # 环境变量配置文件 .env确保所有敏感配置都被排除在版本控制之外。
桌面应用的更优方案:采用OAuth 2.0授权流程
如果是桌面端应用,别用服务账号凭证了,改用OAuth 2.0授权。用户通过浏览器登录自己的Google账号完成授权,应用获取临时访问令牌,无需用户下载和保管JSON文件,安全性更高,用户体验也更流畅。
内容的提问来源于stack exchange,提问作者Gamer On
相关产品推荐
相关产品推荐

