限制对非生产环境的访问(Azure App Service)

时间:2017-03-16 07:37:25

标签: asp.net azure iis web-config azure-web-sites

暂存,接受和测试等非生产环境是单个App Service下的插槽。我想将这些环境的访问权限限制为特定的一组用户。目标是使网站完全适合这些用户进行测试。因此,禁用注册不是一个简单的解决方案。这不是关于Azure中应用程序服务的管理,而是通过访问Web应用程序URL直接访问Web应用程序。

我尝试使用BasicAuth作为访问应用服务的第一级验证,但由于与现有验证冲突而无法使用。

然后我尝试在Web.Config中使用ipSecurity规则。但是,当app服务处于非生产模式时,我找不到如何仅启用这些限制。我不想要一个我必须手动添加和删除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和一个应用程序设置,其中包含所在环境的名称。

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

2 个答案:

答案 0 :(得分:0)

根据我的理解,您希望允许特定用户访问该网址,因此我们需要管理该用户。我们可以使用AD authorization。由于WebApp插槽是常规的Azure WebApp,所以我们需要为每个插槽配置它。我们可以从article获取更多信息。

  

重要的是要强调插槽本身就是一个常规的Azure Web App,它将拥有自己的应用程序设置,连接字符串,任何其他配置设置甚至是scm站点(https://mysite-staging.scm.azurewebsites.net

请尝试使用Azure门户网站。以下详细步骤:

1.根据官方document确认AD授权。

2.在Azure AD中找到已注册的应用程序

enter image description here

3.如果我们只想允许Azure AD中的已分配用户登录,我们需要设置[需要用户分配] - &gt;是

enter image description here

4.添加特定用户以访问WebApp。

enter image description here

enter image description here

5.尝试使用浏览器访问WebApp并输入用户名和密码登录

enter image description here

6.单击[接受]按钮,然后它将按预期工作

答案 1 :(得分:0)

您可以考虑通过两种方式禁用对非生产广告位的访问:

  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://docs.microsoft.com/en-us/azure/app-service/deploy-staging-slots

注意: “非生产环境(如暂存,验收和测试)是单个App Service的插槽。” -这不是正确的设计!部署插槽用于部署目的-部署前进行测试/验证,零停机时间部署。所有插槽共享相同的资源池(硬件)。如果您考虑将插槽用作进行登台,接受和测试目的的环境,则Web应用程序的性能将大大降低。