Webapp部署工作流和安全问题

问题描述 投票:0回答:1

我目前正在开发网络应用。我现在需要将其部署在应该运行的服务器上。

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

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

是否有办法避免人们可以访问服务器来检出不同的分支?实际上,还有其他人可以访问我正在使用的服务器。因此,我想保护我的Web应用程序环境。有什么建议吗?

git security deployment
1个回答
0
投票

如果您正在共享登录名(特别是与您显然不信任的人共享登录名,那么使用git绝对无法做任何事情来确保情况安全。期间。

首先,他们可以对您的Web应用程序进行[[更糟糕的是,然后将其切换到您尚未准备发布的版本。

但是好吧,为了这个练习,让我们假设出于某种原因,他们可能会被动机去做的唯一恶意的事情就是过早发布功能。因此,您可以从注释中尝试--single-branch想法。

但这不是安全功能。它不会

prevent

有人获取其他分支,只是这样做了,因此默认行为仅获取该分支。因此,现在是如何保护遥控器的问题。您是否需要在每次访问遥控器时输入密码?如果没有,那么另一个用户(毕竟,该用户使用您的帐户登录)可以随便获取他们想要的任何内容。因此,如果您将git配置为不使用ssh,并且不存储密码,并且实际上要求您为每次抓取/拉取手动登录;

您进行了一个--single-branch克隆(并且假设另一个人没有其他访问远程存储库的方式;实际上,这成为了远程存储方式/位置的问题),那么他们将不会无法访问该应用程序的未来版本。他们仍然可以访问到当前生产版本的每个过去版本,包括那些从未打算用于生产版本的版本;因为single-branch仍会克隆完整的历史记录。因此,可以说您的production分支除了从登台分支进行合并外,从未收到任何更改。您有D1 -- D2 -- D3 -- D4 -- D5 -- D6 -- D7 -- D8 -- D9 <--(dev) \ \ \ \ S1 -------- S2 -------------- S3 -- S4 <--(staging) \ \ P1 -------------- P2 <--(production)
现在,克隆--single-branch --branch production不仅包括P1P2,而且包括S1S3D1D7-因为它们都可以从父级指针“到达”(通过父指针) production分支。

因此所有这些版本仍在本地存在并可用。您可以使用一个称为“浅层克隆”的功能(查找--depth命令的clone选项)来限制该问题(只要您始终使用它即可)-但当然仍然是

every

生产版本将在本地可用。确保唯一的本地版本是正确版本的唯一方法是删除存储库,然后重新克隆生产分支的单提交浅历史记录。但是在这一点上,您正在经历足够的麻烦,以将部署需求拖入git中,因此您不妨使用真正的部署工具。所有这些只是为了防止他们执行可能根本无法执行的操作-更改Web应用程序的版本-而他们仍然可以执行诸如手动编辑运行版本以包含恶意软件的操作,或删除文件以禁用您的应用程序,或者删除共享登录名应引起更大关注的任何事情。
© www.soinside.com 2019 - 2024. All rights reserved.