Azure Devops:在Webapp级别保护到本地服务器的部署的安全

时间:2020-06-04 14:36:29

标签: iis azure-devops azure-devops-deploymentgroups

很明显,由于部署组和代理程序池中的安全性设置,您可以设置哪些角色可以部署到特定的本地服务器。但是,有什么方法可以限制Web应用程序级别的访问?

我发现的唯一方法是:

  1. 创建一个特定帐户,仅授予该帐户在目标Web应用程序中的目标服务器的IIS中部署权限,并将此凭据提供给负责创建用于部署这些Web应用程序的管道的开发人员(他们会将其作为自定义环境变量或类似变量在管道中)

  2. 等于1,但使用创建的帐户作为代理的服务帐户。开发人员只能访问负责创建该Webapp部署管道的开发人员。

这两种情况都需要创建新帐户并授予对服务器IIS的权限。从Azure DevOps做到这一点的方式与限制对整个服务器的访问方式不同吗?

致谢。

2 个答案:

答案 0 :(得分:1)

很明显,您可以设置哪些角色可以部署到特定角色 本地服务器,这要归功于部署组中的安全设置 和代理池。但是,有什么方法可以限制Web应用程序级别的访问?

对不起,但是据我所知,Azure Devops Service不支持这种现成的功能。

我们可以在Organization level(Organization settings)Project Level(Project settings)Feature Level(Security of Pipelines/Deployment Groups feature...)甚至'instance Level' (Set security for one specific pipeline/deployment group/one specific git repo)中管理访问。

但是'instance level'是最低级别,我们只能管理特定管道或特定部署组中的访问权限,而不能管理pipeline/deploymentGroup将要部署的一个Web应用程序。

该Web应用程序不是不是由Azure Devops Service托管的选项,它只是由管道(由Azure Devops Service托管)部署的东西。因此,Azure Devops Service基本上不了解Webapp(它也没有代表一个webapp的UI),这就是为什么我们可以管理管道中的访问,但不能管理该管道中的webapp的原因...

希望以上所有内容都能解决您的难题:)

更新1:

一旦特定目标服务器只有一个部署组,则可以在此处确定谁可以访问该部署组:

enter image description here

被分配了读者权限的人不能使用部署组来进行部署。

答案 1 :(得分:0)

好吧,按照@Lance的suggestion进行研究后,这就是我打算做的事情:

  1. 创建一个custom service connection,可在其中设置以下字段: IIS服务器,其中WebApp为 Webapp名称用户( (具有部署权限)和密码
  2. 与“自定义服务”连接一起,我将提供一个自定义任务,开发人员团队可以针对他们想要进行部署的情况选择服务连接(显然,服务器管理员只会配置与该团队允许部署的Web应用程序的服务连接)
  3. 代理将使用低特权帐户运行(不会影响任何应用程序),并且自定义任务将在内部使用服务连接上提供的凭据执行部署。

我认为该方法是解决初始问题的最佳方法,并且可以扩展以解决其他类型资源(如DB,共享文件夹等)中的粒度问题,只需添加另一个特定的自定义服务连接即可。 (以指定资源和部署凭据)和链接的“自定义”任务,该任务仅允许针对该资源进行部署。

唯一的缺点是,如果要设置部署批准,则必须在资源级别(对于每个Web应用程序,每个数据库...)进行批准,这意味着批准者必须批准也在部署时按资源分配资源(按照我的理解,而不是整个应用程序部署的单一批准)

您觉得家伙如何?开始编码之前有任何评论吗?

致谢。