我在Github私有repo中存储了部署(只读(私钥,该密钥只能用于克隆该repo本身。
在git中存储私钥几乎每次都是一种糟糕的做法,并且在部署/更新期间,实际的密钥材料可能会移动到环境变量中,以呈现给AWS用户数据等。
我的问题是,如果密钥仅限于特定回购本身的只读,这是否可以被视为安全问题?如果您克隆了repo,那么您已经有了访问权限,并且使用此部署密钥无法获得任何额外的权限。
通常,在存储库中存储凭据是不安全的。如果有人获得了你的存储库的快照(比如说,你让网站的.git
目录可以通过HTTP访问,或者有人得到了tarball(,那么攻击者就可以恢复密钥。现在,攻击者可以在不确定的将来获得任何更新的版本,而不仅仅是存储库的历史版本。
我强烈建议你不要这样做,因为这几乎总是一个坏主意。如果您对此项目有任何类型的安全性或合规性要求,那么在存储库中存储凭据可能会违反这些要求。
此外,GitHub具有凭据扫描功能。我不知道它是否从私钥计算SSH公钥,但您可能会发现,一旦您将部署密钥推入存储库,它就会自动被吊销并列入黑名单。即使现在没有发生这种情况,GitHub可能会在以后添加对它的支持,未来的推送可能会撤销该密钥。
如果您确实需要将这些凭据存储在存储库中,正确的方法是以某种加密的形式存储它们。您可以使用gpg
用密码短语对它们进行加密,还有一些特定于项目的秘密存储技术,例如使用Chef的存储库。如果能更好地满足您的需求,您也可以使用Vault等解决方案。