使用包含安全数据的 Git 存储库

使用包含安全数据的 Git 存储库

我和一位同事想合作一个项目,这个项目需要用到我们无权使用的数据节省在我们的工作站上(可以保存在公司服务器,我们可以打开我们需要编写和共享使用这些数据的代码,包括清理数据并保存清理后的数据版本(在公司服务器上)。这些清理后的版本应该受到版本控制。我们正在使用 Git。

我们应该如何设置 Git 存储库?如果我们在公司服务器上放置一个裸远程存储库,那么当我们克隆到其中时,数据将最终出现在我们的工作树中,从而保存在我们的工作站上。如果我们只是使用远程存储库来版本控制代码,那么数据将不受版本控制。如果我们在公司服务器上创建一个非裸 Git 存储库,并且两者都直接在其中工作,那么我们实际上并没有获得版本控制的好处。

感谢您的任何想法。

答案1

一个小警告:如果数据保存在远程位置,并且您打开将它保存在工作站上,您实际上已经将它保存在那里,即使只是暂时的,除非您的所有操作都是在内存中完成的。(即使如此,根据法律解释,这也可以看作是将其保存在您的机器上,因为它会持久保存,即使只是在 RAM 中。)

我建议两个存储库:

  1. Repo A:这个只托管脚本。可以本地克隆。
  2. Repo B:这个保存着数据。它只能在远程主机上克隆。

我假设您的数据处理脚本可以通过 SSH 或类似方法访问远程主机,以修改那里的数据。一旦您远程更改了数据,您就可以手动提交这些更改(再次,例如通过 SSH)。

一种更复杂的方法是涉及 Repo A 中的 Git 钩子,一旦您将更改提交到本地存储库,它就会提交并推送 Repo B 中的远程更改。

您还可以在 Repo A 中添加指向 Repo B 当前版本的 Git 子模块。这样,您就可以跟踪 Repo A 所针对的数据版本。请注意,您永远不必实际实例化该子模块(即,如果您运行 ,您将获得什么--recurse-submodules);它只是一个指向修订版本的指针。

答案2

使用远程存储库有版本控制。只是你必须远程工作。这可能最符合“敏感数据不能下载”的精神。

根据敏感数据使用的具体性质,最好的办法可能是设置一个包含非敏感数据/程序的服务器,并用虚假(测试用例?)敏感数据填充它。设置好后,您可以在安全的位置获取非敏感数据,并随时掌握敏感数据。这样,您就可以自由下载和使用,享受 git 的所有好处,同时确保敏感数据不可能泄露(或损坏)。

如果你问我,我更担心一些错误(git 使用中的失误,处理敏感数据的程序中的错误)泄露/破坏敏感数据,而不是某人的机器被黑,数据被盗,发展程序/人员访问这些内容听起来……不太明智。首先审查谁/什么应该有权访问它根本,然后再担心其余的事情。

相关内容