Git Webapp部署工作流和安全问题

Git Webapp部署工作流和安全问题,git,security,deployment,Git,Security,Deployment,我目前正在开发一个web应用程序。 我现在需要将它部署到应该运行它的服务器上 我在git存储库上创建了三个不同的分支:开发、暂存和生产。我已经将我的developmnet分支与staging合并,对其进行了测试,然后将其合并到我的生产分支上 我的问题是: 是否有办法仅在服务器上签出生产分支?我已在服务器上设置了部署密钥,但如果我只是git clone,服务器将克隆所有分支。如果我可以只向服务器发送在生产分支上合并的提交,那就太好了 有没有办法避免人们访问服务器以签出不同的分支机构?实际上,还有其

我目前正在开发一个web应用程序。 我现在需要将它部署到应该运行它的服务器上

我在git存储库上创建了三个不同的分支:开发、暂存和生产。我已经将我的developmnet分支与staging合并,对其进行了测试,然后将其合并到我的生产分支上

我的问题是: 是否有办法仅在服务器上签出生产分支?我已在服务器上设置了部署密钥,但如果我只是git clone,服务器将克隆所有分支。如果我可以只向服务器发送在生产分支上合并的提交,那就太好了


有没有办法避免人们访问服务器以签出不同的分支机构?实际上,还有其他人可以访问我正在使用的服务器。所以我想保护我的web应用程序环境。有什么建议吗?

如果你正在共享一个登录名(尤其是与你显然不信任的人共享),那么你完全无法用git来保证情况的安全。句号

首先,他们可能会对你的webapp做更糟糕的事情,然后将其切换到你还没有准备好发布的版本

但是好的,为了练习,让我们假设出于某种原因,他们可能会做的唯一恶意的事情就是过早地发布一个特性。因此,您可以尝试注释中的
--单分支
思想

但这不是一个安全特性。它并不阻止其他人获取其他分支,它只是使默认行为仅获取该分支。现在的问题是如何保护遥控器。您是否每次需要访问遥控器时都输入密码?如果没有,那么另一个用户(毕竟,他是以与您相同的帐户登录的)可以获取他们想要的任何东西

因此,如果您将git配置为不使用ssh,不存储密码,并且每次提取/提取都需要手动登录;你做了一个
--单分支
克隆(假设另一个人没有其他方式访问远程repo;实际上这成了一个关于你的远程设备如何/在哪里托管的问题),那么他们将无法访问该应用程序的未来版本。他们仍然可以访问导致当前生产版本的所有过去版本,包括那些从未打算用于生产发布的版本;因为
单个分支
仍然克隆完整的历史记录。因此,假设您的
生产部门
分支除了从临时分支进行合并之外,从未收到更改。你有

D1 -- D2 -- D3 -- D4 -- D5 -- D6 -- D7 -- D8 -- D9 <--(dev)
        \           \                 \     \
         S1 -------- S2 -------------- S3 -- S4 <--(staging)
                       \                 \
                        P1 -------------- P2 <--(production)

D1--D2--D3--D4--D5--D6--D7--D8--D9对于第一个问题,
git clone-b--single branch
只克隆特定的分支。至于第二个问题,您是否使用相同的用户名访问服务器?@ElpieKay谢谢您的回答。我在文档中找到了该命令,但我不确定它是否是正确的工作流。对于第二个问题,是的。服务器上只有一个用户。您是否建议创建第二个用户来管理我的web应用程序?嗨,Mark,非常感谢您的回答。你给了我很多信息让我思考。事实上,正如你所说,我的另一大担忧是,谁有权访问服务器,谁就可以修改和删除文件,以及包括恶意软件。我说,我应该做的第一件事是在服务器上创建另一个用户,这个用户不能从我不信任的人那里访问,对吗?我将在该用户上安装我的应用程序,以避免其他用户访问我的文件。这是我的第一个方法,因此任何建议都将非常感谢。我真的想做一个安全的应用程序!