【问题标题】:Make back end APIs only accessible via Azure API management使后端 API 只能通过 Azure API 管理访问
【发布时间】:2016-04-21 08:58:51
【问题描述】:

我在 Azure 中部署了多个 Web API,但没有应用身份验证,因此任何可以访问 Internet 的人都可以访问 Web API。

现在我想对 Web API 应用身份验证,而不是在不同的 Web API 中实现相同的身份验证逻辑,我发现 Azure API 网关(API 管理)是一个潜在的解决方案。

通过 Azure API 管理文档,我了解到我可以应用 validate-jwt 之类的策略来验证对后端 Web API 的请求。但是,用户仍然可以使用后端 Web API 的端点。

那么,我应该如何隐藏它们?我必须定义一个子网络还是 Azure API 管理有这方面的功能?

【问题讨论】:

    标签: azure azure-functions azure-web-app-service azure-api-management


    【解决方案1】:

    最近我也遇到了同样的问题。最后我通过使用“IP Restrictions”功能找到了解决方案。请参阅以下步骤:

    1) 转到 Azure 门户中的 API 管理概览页面,复制 VIP。

    2) 在您的 Web 应用程序中 > 网络

    3) 粘贴到您的 VIP 中

    【讨论】:

    【解决方案2】:

    微软解决方案:How to secure back-end services using client certificate authentication in Azure API Management

    使用这种方法,在没有所需证书的情况下访问后端服务的任何尝试都将导致403 - Forbidden 响应。

    您可以使用自签名证书,而不是使用受信任的 CA 签名证书 ($$)。我选择实现一个 Azure Key Vault,我在其中生成了一个新证书,将其下载为 *.PFX 文件,然后将其上传到我的 API 管理实例中,如文章中所述。

    【讨论】:

      【解决方案3】:

      这是来自@PramodValavala-MSFT 的回答
      https://github.com/MicrosoftDocs/azure-docs/issues/26312#issuecomment-470105156

      以下是选项:

      附言在我的情况下,我想要 IP 限制,因为它允许将所有身份验证保留在 API 管理网关上。

      【讨论】:

        【解决方案4】:

        或者你可以使用:

        1. 基本认证
        2. 相互证书验证
        3. VPN

        保护 Azure API 管理服务与后端服务的通信。

        【讨论】:

          【解决方案5】:

          考虑在 Azure API 管理上设置 TLS,以便与后端 API 的所有连接都必须通过 API 代理。

          【讨论】:

            【解决方案6】:

            Azure API 管理无法修改您的后端服务。它的作用仅限于代理。

            您必须对每个 Web API 应用身份验证或将防火墙配置为仅接受来自 Azure APIM 的请求。

            【讨论】:

              【解决方案7】:

              您的后端应用是 Azure Function 应用还是 App Service 应用?

              如果是这样,托管身份可能是限制访问的最简单方法。无需在 API 管理中存储客户端机密/证书 + 不像 IP 白名单方法那样不稳定。

              1. 为 Function App 创建 Azure Active Directory 应用程序。
              2. 在 Function App 上启用身份验证/授权模块,并从步骤 1 中引用 AAD 应用。
              3. 在 APIM 实例上启用托管标识。
              4. <authentication-managed-identity> 策略添加到 APIM 并引用第 1 步中的 AAD 应用。

              我在Restrict Azure Functions to API Management with Terraform 中详细介绍了这种方法

              参考:

              【讨论】:

              • 这种方法不是只能确保请求来自通过 AAD 进行身份验证的某个实体吗?难道不是任何具有 AAD 身份的应用程序或人,而不仅仅是 APIM?
              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2019-08-08
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多