сеньорчикОткрыть в Telegram
← вся теориятеория к собесу · Облака

Сеть в облаке: VPC, группы, NAT

Сеть в облаке

Три вещи, которые в облаке ломаются чаще всего, и все три - про сеть. Сервис недоступен снаружи, потому что закрыт правилами доступа. Сервис доступен ВСЕМУ интернету, потому что правило написали слишком широко. И счёт за исходящий трафик, которого никто не ждал: страница на 2,5 мегабайта при 300 тысячах просмотров - это 732 гигабайта и почти шесть тысяч рублей в месяц на ровном месте.

Стержень: в облаке сеть описывается правилами доступа, а не проводами; закрытое по умолчанию и явные разрешения - единственный рабочий подход.

// Формулировки: «как устроены группы безопасности?», «зачем приватные подсети?», «почему такой счёт за трафик?»

Правила доступа вместо проводов

Своя сеть в облаке - это изолированное адресное пространство, внутри которого вы режете подсети. Подсеть бывает публичной (у машин есть выход в интернет напрямую) и приватной (выхода нет, а если нужен исходящий доступ - через отдельный шлюз).

Доступ описывается правилами: кому, куда, на какой порт. Хорошее правило ссылается не на адреса, а на ГРУППЫ: «серверам приложения разрешено ходить в группу баз на порт базы». Тогда добавление новой машины в группу автоматически даёт ей нужные права, и список не надо править руками.

// Типовая схема, которая закрывает большую часть вопросов: базы и внутренние сервисы - в приватных подсетях, наружу торчит только балансировщик, то есть посредник, раздающий запросы между копиями приложения, доступ к машинам - через одну точку входа, правило «разрешено всем» не используется нигде, кроме этого балансировщика на портах веб-трафика. И отдельно: правила доступа в облаке НЕ отменяют фаервол на самой машине - тот самый набор правил ядра о том, что пускать внутрь. Работают оба сразу, и запрет любого из них останавливает трафик.

приватная подсеть
без прямого выхода в интернет; исходящий доступ через отдельный шлюз
правило по группе
разрешение ссылается на группу машин, а не на список адресов

Исходящий трафик - отдельная статья расходов

Входящий трафик обычно бесплатный, исходящий - платный, и это меняет архитектурные решения. Посчитал два случая при цене восемь рублей за гигабайт. Страница на 2,5 мегабайта при 300 тысячах просмотров: 732 гигабайта, 5859 рублей в месяц. Ответы интерфейса по 50 килобайт при пяти миллионах вызовов: 244 гигабайта, 1953 рубля.

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

// Отдельная ловушка: трафик МЕЖДУ зонами тоже часто платный. Сервис, который случайно ходит в базу соседней зоны на каждый запрос, платит дважды - деньгами и задержкой. Поэтому в облаке считают и то, что уходит наружу, и то, что бегает между зонами внутри.

исходящий трафик
то, что уходит от вас к пользователю; платный, в отличие от входящего
сеть доставки
раздача статики с ближайшей к пользователю точки; дешевле и быстрее

Связность и приватный доступ

Соединить офис или свой дата-центр с облаком можно тремя способами. Зашифрованный туннель через интернет - дёшево и быстро настраивается, но качество канала зависит от интернета. Выделенный канал - дорого, зато предсказуемая задержка и полоса. И промежуточный вариант через партнёрскую точку обмена.

Внутри облака есть отдельная задача: обращаться к управляемым сервисам, не выходя в интернет. Для этого делают приватные точки доступа - хранилище и базы становятся доступны по внутреннему адресу. Это и безопаснее, и часто дешевле, потому что трафик перестаёт считаться исходящим.

// Про туннели важно помнить то, что я мерил в теме про сеть: туннель добавляет свои заголовки, поэтому предельный размер пакета внутри него меньше обычного. Если служебные сообщения о размере вырезаны фаерволом, крупные пакеты начинают молча теряться - рукопожатие проходит, а данные висят. Это классическая авария первого дня после настройки туннеля.

зашифрованный туннель
канал через интернет; дёшево, но качество зависит от интернета
приватная точка доступа
доступ к управляемому сервису по внутреннему адресу, минуя интернет

Как отвечать: «Почему база не должна быть доступна из интернета и как это устроить?»

Потому что доступная из интернета база - это вопрос времени, а не вероятности: её найдут сканеры, и дальше всё зависит только от пароля. Устраивается это так. База живёт в приватной подсети, у неё нет публичного адреса вовсе. Правило доступа разрешает подключение не с диапазона адресов, а из группы серверов приложения на порт базы - тогда новая машина в группе получает доступ автоматически, а посторонняя не получает никак. Доступ людей - через одну точку входа с записью сессий, а не прямым подключением. Если нужен доступ к управляемому сервису, делаю приватную точку доступа, чтобы трафик не выходил в интернет: это и безопаснее, и дешевле, потому что перестаёт считаться исходящим. И проверяю, что правила облака и фаервол на самой машине не противоречат друг другу - работают оба сразу.

Ответ даёт готовую схему из четырёх решений и объясняет, почему правило по группе лучше диапазона адресов. Замечание про два фаервола - частая причина потерянного часа.

На чём валятся

  • Пишут правило «разрешено всем» для удобства и оставляют его навсегда.
  • Дают базе публичный адрес и защищаются только паролем.
  • Ссылаются в правилах на адреса вместо групп и правят списки руками.
  • Не считают исходящий трафик и получают неожиданный счёт.
  • Забывают, что трафик между зонами тоже платный, и гоняют запросы через зону.

Проверьте себя

Пять вопросов из банка по этой подтеме. Всего их 6, остальные разбираются в тренажёре.

  1. #dvo_cloud_network1 / 5
    Чем группа безопасности облака отличается от фаервола на самой машине?
    A)Группа безопасности фильтрует по содержимому пакетов, фаервол — по портам
    B)Правила группы применяются лишь при перезапуске машины
    C)Группа безопасности заменяет сетевые правила внутри кластера
    D)Она работает до машины, на уровне сети, и не зависит от её настроек
    показать ответ и разбор
    +D)Она работает до машины, на уровне сети, и не зависит от её настроек

    // разбор: Группа безопасности — фильтр на стороне облачной сети: трафик отсекается ещё до виртуальной машины, правила меняются мгновенно и живут отдельно от ОС. Локальный фаервол — второй рубеж внутри машины, полезный, когда группа настроена широко или машина скомпрометирована. Обычная практика — держать оба: сеть режет по источникам и портам, хост защищает себя сам.

  2. #dvo_cloud_network2 / 5
    Базу поместили в приватную подсеть без публичного адреса, но ей нужны обновления пакетов. Как это устроено?
    A)Исходящий доступ идёт через NAT-шлюз, входящий остаётся закрытым
    B)На машину вешают временный публичный адрес на время обновления
    C)Обновления приходят через балансировщик, стоящий перед подсетью
    D)Приватная подсеть выходит наружу напрямую, ограничен только вход
    показать ответ и разбор
    +A)Исходящий доступ идёт через NAT-шлюз, входящий остаётся закрытым

    // разбор: Приватная подсеть не маршрутизируется из интернета. Чтобы машины могли ходить наружу — за пакетами, к API провайдера, к внешним сервисам — ставят NAT-шлюз: он подменяет адрес источника и пропускает только исходящие соединения. Вход остаётся закрытым, доступ инженеров идёт через бастион или VPN. За трафик NAT-шлюза платят отдельно, и на объёмных выгрузках это заметная статья.

  3. #dvo_cloud_network3 / 5
    Сервисы одного облака общаются по публичным адресам через интернет-шлюз. Чем это плохо?
    A)Провайдер ограничивает число соединений между своими сервисами
    B)Публичные адреса меняются при перезапуске машин
    C)Задержка, плата за трафик, лишняя открытость
    D)Такой трафик проходит мимо журналов расследования
    показать ответ и разбор
    +C)Задержка, плата за трафик, лишняя открытость

    // разбор: Внутри облака есть приватная связность: адреса из своей сети, приватные эндпоинты к управляемым сервисам, пиринг между сетями. Маршрут через публичный интернет добавляет хопы и задержку, тарифицируется как исходящий трафик и требует держать порты открытыми снаружи. Плюс шифрование и аутентификацию приходится строить как для внешнего мира, хотя обе стороны ваши.

  4. #dvo_cloud_network4 / 5
    Что технически делает подсеть в VPC «публичной», а не приватной?
    A)Наличие у машин приватных адресов из диапазона подсети
    B)Отключённая на подсети группа безопасности
    C)Маршрут в интернет-шлюз (IGW) в её таблице маршрутизации
    D)Расположение подсети в другой зоне доступности
    показать ответ и разбор
    +C)Маршрут в интернет-шлюз (IGW) в её таблице маршрутизации

    // разбор: Публичность подсети определяется маршрутизацией: если в её route table есть маршрут 0.0.0.0/0 в интернет-шлюз (IGW), машины с публичным IP доступны из интернета и ходят наружу напрямую — это публичная подсеть. Приватная такого маршрута не имеет; наружу она ходит через NAT-шлюз, а извне напрямую недоступна. То есть дело в таблице маршрутов, а не в самих адресах или группах безопасности.

  5. #dvo_cloud_network5 / 5
    Сервисы в VPC ходят в управляемое объектное хранилище через интернет-шлюз по публичному адресу. Как сделать это приватно?
    A)Через VPC endpoint / PrivateLink
    B)Просто закрыть хранилище группой безопасности пожёстче
    C)Поднять свой прокси в публичной подсети перед хранилищем
    D)Перенести хранилище в ту же подсеть, что и сервисы
    показать ответ и разбор
    +A)Через VPC endpoint / PrivateLink

    // разбор: Чтобы дотянуться до управляемого сервиса (объектное хранилище, БД) приватно, используют VPC endpoint / PrivateLink: провайдер создаёт приватную точку входа к сервису прямо внутри вашей сети, и трафик идёт по внутренней сети провайдера, не выходя в интернет и не через IGW/NAT. Плюсы: меньше поверхность (не нужен публичный путь), ниже задержка, часто дешевле трафик. Группы безопасности и прокси публичный путь не убирают.

дальше

Теорию прочитали. Навык ставится повторением

В Сеньорчике эта подтема идёт в ежедневных сессиях: движок возвращает её, пока ответы не станут уверенными, и ведёт прогресс отдельно по каждой подтеме. Теория внутри тоже бесплатна, лимит только на количество вопросов в день.