【问题标题】:Spring and GitHub: hide sensitive dataSpring 和 GitHub:隐藏敏感数据
【发布时间】:2021-02-25 21:03:44
【问题描述】:

我在 GitHub 上有一个存储库,我想将其公开,以便招聘人员可以查看。 这个存储库虽然包含我的 SMTP 和不应与其他人共享的 MongoDB URI。此信息在我的 application.properties 文件中。

隐藏这些敏感数据并确保没有人可以查看旧提交并查看隐藏之前的情况的最简单方法是什么?

我在网上看到过一些方法,但它们看起来都很复杂......

感谢您的经验和时间

【问题讨论】:

标签: spring github sensitive-data


【解决方案1】:

使用环境变量隐藏您的敏感数据。喜欢

spring.data.mongodb.host=${MONGO_DB_HOST}
spring.mail.host=${MAIL_HOST}

在您的开发环境中设置值。
我不知道如何隐藏您的旧提交。

【讨论】:

    【解决方案2】:

    在项目的根目录下创建一个 .gitignore 文件,并在其中列出您不希望 git 在您推送到 GitHUb 时访问它的任何文件,例如:

    /public/packs
    /node_modules/
    .pnp.js
    

    /(正斜杠)用于文件夹和 . (点)用于文件

    下面是 .gitignore 文件位置的图片。

    【讨论】:

    • 嗨,R_D。似乎是个好主意,但如果在 application.properties 文件中有招聘人员应该能够查看的重要配置怎么办?
    • 如果推送是完整的 git 提交历史记录(看起来就像提问者想要的那样),我相信在签出旧提交时该文件仍然可见。它只是最新的提交,不会有它。
    • 有两种方法:1)你将它们分开:被招募的东西可以看到,一种带有敏感数据,你忽略它。 2) 你可以用代替你自己的秘密信息。就像占位符一样。
    • 推送数据后,您必须删除 repo 并重新开始执行上述选项。
    【解决方案3】:

    如果目标只是招聘,是否可以接受第二份招聘,而保留原件?

    虽然通过 git 肯定有更多惯用的方法来实现这一点,但只需很少的 git 知识或先进技术的简单解决方案是:

    1. 在 GitHub 上新建一个空的 git 项目
    2. 在本地克隆新项目
    3. 将现有项目中的(非.git)文件复制到新项目中(使用控制台或操作系统的窗口 UI)
    4. 从新项目中删除或编辑违规条目
    5. 将更改作为单个提交提交
    6. 将新项目推回 GitHub

    【讨论】:

      【解决方案4】:

      我自己没有使用过,但是开源的BFG Repo-Cleaner 看起来可以满足您对简单性的要求,同时保留活动图表供审阅者查看。如果您希望保留您的私人工作副本,同时仍保持活动历史记录可见,则可以在回购的公开副本上完成此操作。

      按照工具的usage instructions,您应该能够执行以下操作(假设您希望在新的 repo 副本中进行这些更改):

      第一步是按照 GitHub 文档中的 instructions 复制 GitHub 上的存储库。

      为此,首先create a new repository

      接下来,按照 GitHub 说明镜像存储库:

      1. 打开终端。
      2. 创建存储库的裸克隆。
      $ git clone --bare https://github.com/exampleuser/old-repository.git
      
      1. 镜像推送到新存储库。
      $ cd old-repository.git
      $ git push --mirror https://github.com/exampleuser/new-repository.git
      
      1. 删除您之前创建的临时本地存储库。
      $ cd ..
      $ rm -rf old-repository.git
      

      现在您有了重复的存储库,您可以运行 BFG Repo-Cleaner 将您想要隐藏的所有文本实例替换为 ***REMOVED***

      $ java -jar bfg.jar --replace-text replacements.txt  my-repo.git
      

      replacements.txt 文件将包含 SMTP、MongoDB URI 以及您想要隐藏的任何其他文本。

      mongodb://my-username:my-password@host1.example.com:27017,host2.example.com:27017/my-database
      marco-f@example.com
      

      请注意,这不会更新 master/HEAD 分支上的最新提交,因此需要手动更改,然后提交。这可以通过使用 --amend 选项的最终提交来实现,或者通过在手动更改文件的情况下运行 BFG Repo-Cleaner 之前进行新的提交。

      $ git commit --amend
      

      现在已经进行了更改,可以将它们推送到 GitHub。

      $ git push
      

      【讨论】:

      • 嗨贾斯廷。所以我已经尝试过了,即使它看起来有效并且 bfg 对 application.properties 文件进行了更改,但敏感数据仍然存在。如果我设法找出原因,我会更新你。 Ps:我认为replacements.txt文件中的条目应该有不同的分隔符,因为BFG告诉我它找不到要更改的文本,但是当我在文件中一次使用一个条目时它没有抱怨替换.txt
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-04-29
      • 1970-01-01
      • 2012-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-28
      • 1970-01-01
      相关资源
      最近更新 更多