在 Azure 中保护 "tiered" 应用程序

Securing a "tiered" application in Azure

好的。

所以我不熟悉将 基础结构 部署到 Azure。

我了解基础知识。

我的任务是在 Azure 中创建 "web tier"、"middle tier machine" 和 "database server"。我可能正在为这些使用内部部署条款......也许它们映射到 Azure。

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

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

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

应用程序服务(这将是我的 "web-server")。我将其称为 AppServiceWT。

应用程序服务(这将是我的 "middle tier")。我将其称为 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" {}

所以我有 "parts"(我想是???)。

所以我现在的障碍是。

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

要求:

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

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

WebTier 向全世界开放。

我错过了什么蔚蓝"objects"?

指向 terraform "tasks"(或任何名称)的奖励积分。

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

但是,是的,我正在向 SOF 寻求帮助,以填补我头脑中 "traffic" 和 "secure network" 的空白。

提前致谢。

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

我不想维护我自己的虚拟机。所以我认为 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

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

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

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

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

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

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

3.White-列出 database.In 您的案例中允许的 IP 地址范围,如果 任何其他服务不应访问数据库 other 比网络应用程序,那么它应该是前端网络应用程序的IP。