【问题标题】:How to restrict access to an App Service using a setting inside the Azure Portal如何使用 Azure 门户中的设置限制对应用服务的访问
【发布时间】:2017-06-16 22:58:15
【问题描述】:

我们有一个在 Azure 中部署为应用服务的 Web 应用。我们希望通过一个 IP 地址白名单来限制对它的访问,这可以在某些 Azure 应用服务设置中完成,而不是在我们在项目中拥有的 web.config 中完成。

目前,这就是我们在环境中进行 IP 地址限制的方式。

  • 生产:我们为应用服务设置了 VNet 集成。我们将NSG 附加到VNet's Subnet 并从NSG 我们可以控制入站和出站访问。
  • 暂存:我们在web.config 中有以下配置块,其中包含允许访问暂存服务器中的应用服务的列入白名单的 IP 地址。

    <security>
        <ipSecurity allowUnlisted="false" denyAction="NotFound">
            <add allowed="true" ipAddress="some ip address" subnetMask="255.255.255.254"></add>
            <add allowed="true" ipAddress="some ip address" subnetMask="255.255.255.254"></add>
        </ipSecurity>
    </security>
    
  • 开发(本地):我们必须取消注释我们本地开发机器中的&lt;security&gt; 配置块,因为我们并不真的需要它。它会导致错误,请看下面的截图。

这是HttpFailre_09-07-33.html的一些内容

Module         IpRestrictionModule
Notification   BeginRequest
Handler        aspNetCore
Error Code     0x80070021
Config Error   This configuration section cannot be used at this path. This happens when the section is locked at a parent level. Locking is either by default (overrideModeDefault="Deny"), or set explicitly by a location tag with overrideMode="Deny" or the legacy allowOverride="false".

我们希望从 web.config 中完全删除此 &lt;security&gt; 块,因为另一个原因,我们不希望 IP 地址进入生产环境。

而且,我们不允许在我们的暂存服务器中进行 VNet 集成(管理的东西,呃!任何削减成本的东西!)。

那么有没有办法限制 Azure App Service 中的 IP 地址?

【问题讨论】:

    标签: security azure web-config azure-web-app-service


    【解决方案1】:

    可以使用 powershell Az 模块命令在 Azure 应用服务上配置 VNet/子网类型访问限制 - Add-AzWebAppAccessRestrictionRule

    https://docs.microsoft.com/en-us/powershell/module/az.websites/add-azwebappaccessrestrictionrule?view=azps-3.2.0

    【讨论】:

      【解决方案2】:

      那么有没有办法限制 Azure App Service 中的 IP 地址?

      1.我们可以使用web.config来限制你提到的IP地址

      2.我们可以从 IIS 管理器连接到 WebApp,我们可以轻松配置限制 IP。更多详细信息请参考blog

      3.我们可以使用REST API 来做到这一点,我们可以使用Azure Resource Exploer(https://resources.azure.com/) 轻松做到这一点。我们也可以使用 PowerShell cmdlet 来做到这一点,详细信息请参考另一个 SO Thread。以下是有关如何使用 azure 资源浏览器执行此操作的简单步骤。

      一个。打开 azure 资源浏览器并选择相应的网站配置 web 选项以单击 编辑 按钮。

      b.将 ipSecurityRestrictions 更改为数组值。

      c。点击Put按钮发送请求。

      配置错误此配置部分不能在此路径中使用

      如果我们不解锁处理程序,我们需要解锁处理程序,更多信息请参考另一个SO Thread。以下是从 SO 线程中截取的内容。

      1) 在连接树中(在 IIS 中),转到您的服务器节点,然后转到您的网站。

      2) 对于网站,在右侧窗口中,您将看到管理下的配置编辑器。

      3) 双击配置编辑器。

      4) 在打开的窗口中,您会在顶部找到一个下拉列表。从下拉列表中选择“system.webServer/handlers”。

      5) 在右侧,还有另一个下拉菜单。 >选择“ApplicationHost.Config”

      6) 在最右侧的窗格中,您会在“部分”标题下找到“解锁部分”。点击那个。

      7) 一旦应用程序主机上的处理程序被解锁,您的网站应该可以正常运行。

      【讨论】:

      • 谢谢!我决定使用#2,直接在Azure Resource Explorer 中添加ipRestriction 值。不过我有一个问题,即使我部署了一个新的web.config,它是否会保留ipRestriction 的值?我只是做了一个部署,它没有改变,我只是想确认 :) 如果每次部署都会改变,我可能不得不使用 PowerShell 脚本来设置 ipRestrictions
      • 根据我的经验,建议使用 PowerShell 脚本来做到这一点。
      • 好的,请回答最后一个问题。您建议我将 PowerShell 脚本放在哪里?我在考虑两个地方 - 1.)在 project.json 内我将添加一个 postpublish 操作来执行脚本或 2.)在 PublishProfiles 内我可以添加一个 .ps1 文件或只放置脚本直接在生成的publish-module.psm1里面
      • 两种方式听起来都不错。在我的选择中,您可以随意选择。
      • 应用服务现在支持 IP 限制 (docs.microsoft.com/en-us/azure/app-service/…)。您甚至不需要应用服务环境(并为此付费)!
      猜你喜欢
      • 2022-09-28
      • 1970-01-01
      • 2019-04-09
      • 2022-10-06
      • 2022-08-02
      • 1970-01-01
      • 2021-02-12
      • 2017-04-07
      • 1970-01-01
      相关资源
      最近更新 更多