【问题标题】:Securing a "tiered" application in Azure在 Azure 中保护“分层”应用程序
【发布时间】:2018-12-18 10:42:09
【问题描述】:

好的。

所以我不熟悉将基础设施部署到 Azure。

我确实了解基础知识。

我的任务是在 Azure 中创建“Web 层”、“中间层机器”和“数据库服务器”。我可能对这些使用了本地术语....也许它们映射到 Azure。

我正在使用 App-Service-Plan 和 App-Service。 Windows 风味。

我也非常喜欢 terraform,但我认为这个问题与 terraform 无关。 (terraform 只是在 Azure 中创建必要对象的一种更好的方式,或者这是我的新手理解)。

所以现在,我已经能够创作了。

App-Service(这将是我的“网络服务器”)。我将调用此 AppServiceWT。

App-Service(这将是我的“中间层”)。我将其称为 AppServiceMT。

还有 Sql-Server/Sql-Server 数据库。

我已经能够使用 terraform 风格的脚本创建其中的一些。

resource "azurerm_resource_group" "testrg" {}

..

resource "azurerm_app_service_plan" "testaspwt" {
  name                = "some-app-service-plan-for-webtier"

  sku {
    tier = "Standard"
    size = "S1"
  }
}

resource "azurerm_app_service" "testaswt" {
    name                = "AppServiceWT_SomeGlobalUniqueName"
}

..

resource "azurerm_app_service_plan" "testaspmt" {
  name                = "some-app-service-plan-for-middletier"

  sku {
    tier = "Standard"
    size = "S1"
  }
}

resource "azurerm_app_service" "testasmt" {
    name                = "AppServiceMT_SomeGlobalUniqueName"
}

..

resource "azurerm_sql_server" "primary_azurerm_sql_server" {}

resource "azurerm_sql_database" "primary_azurerm_sql_database" {}

所以我有“部分”(我认为???)。

所以我现在的障碍是。

我在做什么来保护网络流量。

要求:

middleTier 可以向 sql-server-tier 发出请求。除了中间层之外,任何东西都无法访问 sql-server-tier。在本地环境中,我们会在 sql-server 上打开端口 1433 以允许流量。

webTier 可以在中间层发出请求。除了 web 层之外,任何东西都无法访问中间层。在本地环境中,我们将在中间层开放端口 80/443 以允许流量。

WebTier 向世界开放。

我错过了哪些天蓝色的“对象”?

指向 terraform“任务”(或其他名称)的奖励积分。

https://www.terraform.io/docs/providers/azurerm/index.html

但是,是的,我正在向 SOF 寻求帮助,以填补我脑海中的“流量”和“安全网络”空白。

提前致谢。

如果我问错了问题,请告诉我。

我不想维护自己的虚拟机。所以我认为 Azure App-Service-Plan 和 App-Service 是正确的选择。虽然我对 Azure-Functions 和 Logic-Apps 有点熟悉,但我们不想在这个项目中使用它们。

添加更多信息。

我最终会尝试使用下面的 Microsoft 操作方法文章来创建一个“hello world”。上面的文章没有中间层,但是一旦我把概念下来,我想我可以做一个 web/middle/sql 'hello world'。

https://docs.microsoft.com/en-us/azure/app-service/app-service-web-tutorial-dotnetcore-sqldb

【问题讨论】:

  • 我个人的看法,网络应用很臭(尤其是 Windows 应用),你应该像瘟疫一样避开它们。
  • 感谢您的意见。你有什么具体的原因/链接为什么他们“臭”?
  • 缓慢、笨重、昂贵
  • 那么您认为您的“替代”更好的建议是什么?
  • 无服务器、容器

标签: azure azure-web-app-service terraform terraform-provider-azure


【解决方案1】:

使用 webapps,您唯一的选择是将 webapp 外部 IP 地址打开到 sql 以便能够相互通信。

webapp 有几个潜在的外部 IP 地址,所以你可以在 sql 上打开它们。只要 azure sql\webapp 在同一区域,流量就会使用 azure backbone。

在中间层你应该使用 ip 限制(web.config 可以做到)。

【讨论】:

    【解决方案2】:

    有几种方法可以保护您正在创建的应用服务中的应用 -

    1.我相信你已经在做或者不确定你是否需要它但是 我们可以验证对 Web 应用程序的访问(使用 OAuth2.0 等)。

    2.如果您想更好地控制我们部署应用程序的网络,我们
    可以利用提供的 App 服务环境 帮助您限制传入的虚拟网络集成功能 通过网络安全组 (NSG) 获取源 IP 地址。 可能曾经可以将它用于前端和中间层。

    3.将数据库中允许的 IP 地址范围列入白名单。在您的情况下,如果 任何其他服务不应访问其他数据库 而不是 web app ,那么它应该是前端 web app 的 IP。

    【讨论】:

    • 消失了。感谢您的提示,关键字是“应用服务环境”。我想这就是我要找的。 “开发人员可以创建一个分层的安全架构,为每个物理应用程序层提供不同级别的网络访问。希望将 API 后端隐藏在一般 Internet 访问中,并且只允许上游 Web 应用程序调用 API。NSG 可以用于包含应用服务环境的子网,以限制对 API 应用程序的公共访问。” docs.microsoft.com/en-us/azure/app-service/environment/…
    • 对于未来的读者............应用服务环境是应用服务的答案,但它是 Azure 的一项昂贵的功能。 (“使用”之前的每月基本成本约为 1500 美元)。所以我们正在寻找 Azure 容器实例,而不是因为成本。
    猜你喜欢
    • 2010-11-15
    • 1970-01-01
    • 1970-01-01
    • 2020-04-03
    • 2021-01-01
    • 1970-01-01
    • 2021-12-03
    • 2017-07-14
    • 1970-01-01
    相关资源
    最近更新 更多