asp.net - 限制对非生产环境的访问(Azure 应用服务)

标签 asp.net azure iis web-config azure-web-app-service

诸如登台、验收和测试之类的非生产环境是单个应用服务下的插槽。我想将对这些环境的访问权限限制为一组特定的用户。目标是使网站功能齐全,供这些用户进行测试。因此禁用注册并不是一个简单的解决方案。这不是关于Azure中应用服务的管理,而是关于通过访问Web应用程序URL直接访问Web应用程序。

我尝试使用 BasicAuth 作为一级身份验证来访问应用服务,但由于与现有身份验证冲突,这不起作用。

然后我尝试在 Web.Config 中使用 ipSecurity 规则。但是,我找不到如何仅在应用程序服务处于非生产模式时启用这些限制。我不想要一个必须手动添加和删除 IP 规则的解决方案。

<system.webServer>
  <security>
    <!-- How to disable the following rule in production -->
    <ipSecurity allowUnlisted="false" denyAction="Forbidden">
      <add allowed="true" ipAddress="203.0.113.0" subnetMask="255.255.255.0"/>
    </ipSecurity>
  </security>
  </system.webServer>

反对 IP 规则的另一个论点是必须具有访问权限的用户通常从动态 IP 进行连接。

每个环境都有一个唯一的 URL 和一个应用程序设置及其所在环境的名称。


如何在这些非生产环境中添加另一层身份验证,而无需手动更改文件?

最佳答案

您可以考虑通过两种方法来禁用对非生产插槽的访问:

  1. 如下所述:https://ruslany.net/2014/04/azure-web-sites-block-web-access-to-non-production-deployment-slots/用户在网站的 web.config 文件中重写规则
  2. 对 Azure 门户中的特定插槽使用 IP 限制配置。你可以在这里读到IP限制不是交换配置。因此每个插槽可以有自己的一组 IP 配置:https://learn.microsoft.com/en-us/azure/app-service/deploy-staging-slots

注意: “登台、验收和测试等非生产环境是单个应用服务下的插槽。” - 这不是正确的设计!部署槽用于部署目的 - 部署前测试/验证、零停机部署。所有插槽共享相同的资源池(硬件)。如果您考虑使用插槽作为暂存、验收和测试目的的环境,您的网络应用程序的性能将会大大降低。

关于asp.net - 限制对非生产环境的访问(Azure 应用服务),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42827912/

相关文章:

mongodb - 何时不使用 StatefulSet?

Azure Function v2 谷歌身份验证与谷歌

asp.net-mvc - HTTP 500,customErrors 重定向不起作用

c# - 如何告诉我的 Elastic Beanstalk 实例不要进入休眠状态?

iis - ASP.NET 5 应用程序和 IIS 日志之间的客户端 IP 地址不一致

asp.net - jQuery 模态表单对话框回发问题

c# - head 标记中的内联代码 - ASP.NET

Azure CLI : associate network security group (NSG) with Virtual Network subnet

asp.net - 是否有人在Mono上运行生产ASP.NET网站?

javascript - 按钮点击完成后asp.net执行javascript函数