Защита многоуровневого приложения в Azure

Ok.

Итак, я новичок в развертывании инфраструктуры в Azure.

Я понимаю основы.

Мне было поручено создать «веб-уровень», «машину среднего уровня» и «сервер базы данных» в Azure. Я, вероятно, использую для них локальные термины ... может быть, они соответствуют Azure.

Я использую план службы приложений и службу приложений. Окна ароматизированы.

Мне также очень нравится терраформ, но я думаю, что этот вопрос не зависит от терраформы. (terraform - это просто более изящный способ создания необходимых объектов в Azure, или это мое понимание новичка).

Итак, прямо сейчас я могу творить.

App-Service (который был бы моим «веб-сервером»). Я назову это AppServiceWT.

Служба приложений (которая была бы моим «средним уровнем»). Я назову это AppServiceMT.

И база данных Sql-Server / Sql-Server.

Мне удалось создать некоторые из них, используя скрипты, приправленные терраформом.

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" {}

Так что у меня есть «части» (думаю ???).

Так что теперь мое препятствие.

Что я делаю для защиты сетевого трафика.

Требования:

Средний уровень может делать запросы sql-server-tier. sql-server-tier недоступен для чего-либо, кроме среднего уровня. В локальном мире мы открыли бы порт 1433 на sql-сервере, чтобы разрешить трафик.

Веб-уровень может делать запросы среднего уровня. средний уровень недоступен для чего-либо, кроме веб-уровня. В локальном мире мы открыли бы порт 80/443 на среднем уровне, чтобы разрешить трафик.

WebTier открыт для мира.

Какие лазурные «предметы» мне не хватает?

Бонусные баллы за указание на «задачи» терраформирования (или как они там называются).

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

Но да, я обращаюсь к SOF за помощью, чтобы заполнить пробелы в «трафике» и «безопасной сети» в моей голове.

Заранее спасибо.

Если я задаю неправильные вопросы, дайте мне знать.

Я не хочу поддерживать свои собственные виртуальные машины. Поэтому я считаю, что план службы приложений Azure и служба приложений - правильный выбор. Хотя я немного знаком с функциями Azure и приложениями логики, мы не хотим использовать их в этом проекте.

Чтобы добавить еще немного информации.

В конце концов я пытаюсь создать «привет, мир», используя приведенную ниже статью с практическими рекомендациями от Microsoft. В приведенной выше статье нет промежуточного уровня, но как только я разберусь с концепциями, я думаю, что смогу сделать web / middle / sql «hello world».

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


person granadaCoder    schedule 10.07.2018    source источник
comment
Мое личное мнение, веб-приложения воняют (особенно windows), их стоит избегать как чумы.   -  person 4c74356b41    schedule 10.07.2018
comment
Я ценю вклад. У вас есть какие-то конкретные причины / ссылки, почему они воняют?   -  person granadaCoder    schedule 10.07.2018
comment
медленный, неуклюжий, дорогой   -  person 4c74356b41    schedule 10.07.2018
comment
Итак, какие, по вашему мнению, ваши альтернативные лучшие предложения?   -  person granadaCoder    schedule 10.07.2018
comment
бессерверные, контейнеры   -  person 4c74356b41    schedule 10.07.2018
comment
Ok. Да, я согласен, что бессерверный режим настолько удобен (лазурные функции и ... использование некоторых соединителей приложений логики). От этого архитекторы пока не хотят откусить. И мы пытаемся использовать контейнеры для версии ВТОРАЯ. :( Но спасибо за вклад .... # foodForThought   -  person granadaCoder    schedule 10.07.2018


Ответы (2)


Есть несколько способов защитить приложение в создаваемой вами службе приложений:

1. Я считаю, что вы уже это делаете или не уверены, требуется ли вам это, но мы можем аутентифицировать доступ к веб-приложению (используя OAuth2.0 и т. Д.).

2. Если вам нужен больший контроль над сетью, в которой мы развертываем приложения, мы
можем использовать Среды службы приложений, которые предоставляют функцию интеграции виртуальной сети, которая помогает вам ограничивать входящие исходные IP-адреса через группы безопасности сети (NSG). Наверное, однажды можно будет использовать его как для внешнего, так и для среднего уровня.

3. Внесите в белый список разрешенные диапазоны IP-адресов в базе данных. В вашем случае, если какая-либо другая служба не должна получать доступ к базе данных, кроме веб-приложения, то это должен быть IP-адрес внешнего веб-приложения.

person Avanish    schedule 10.07.2018
comment
Аваниш. Спасибо за ваш совет с ключевой фразой «Среды службы приложений». Я думаю, это то, что я ищу. Разработчики могут создать многоуровневую архитектуру безопасности, обеспечивающую разные уровни доступа к сети для каждого физического уровня приложений. Желание состоит в том, чтобы скрыть серверные интерфейсы API от общего доступа в Интернет и разрешить вызов API только вышестоящим веб-приложениям. Группы безопасности сети могут использоваться в подсетях, содержащих среды службы приложений, для ограничения общего доступа к приложениям API. docs. microsoft.com/en-us/azure/app-service/environment/ - person granadaCoder; 12.07.2018
comment
Для будущих читателей ............. Среды службы приложений - это ответ для служб приложений, НО это ДОРОГАЯ функция для Azure. (Ежемесячная базовая стоимость около 1500 долларов до использования). Поэтому мы смотрим на экземпляры контейнеров Azure из-за co $ t. - person granadaCoder; 19.07.2018

С веб-приложениями ваш единственный вариант - открыть внешние IP-адреса веб-приложений для sql, чтобы иметь возможность общаться друг с другом.

У webapp есть несколько возможных внешних IP-адресов, поэтому вы открываете их в sql. трафик будет использовать лазурную основу, пока лазурные sql \ webapp находятся в том же регионе.

На среднем уровне вы должны использовать ограничения IP (это может делать web.config).

person 4c74356b41    schedule 10.07.2018