Гид по технологиям

Доступ к S3‑бакету через интернет с помощью белого списка IP

5 min read Cloud Security Обновлено 22 Nov 2025
Доступ к S3 по IP‑белому списку
Доступ к S3 по IP‑белому списку

AWS лого

Быстрые ссылки

  • Доступ к S3‑бакету через интернет

Задача и когда это подходит

Если нужно дать серверам в вашей сети возможность скачивать файлы из S3, но нельзя делать объекты публичными, то белый список IP в политике бакета — простое и прозрачное решение. Оно полезно, когда:

  • Серверы имеют фиксированные или предсказуемые исходящие IP (например, NAT‑шлюз, статический адрес провайдера).
  • Вы хотите минимально управлять ключами доступа и ограничить доступ по месту запроса.

Кратко о терминах: S3 bucket — контейнер для объектов (файлов) в AWS S3. Политика бакета (Bucket Policy) — JSON‑правило, которое контролирует доступ к бакету.

Как это работает — обзор

  1. По умолчанию прямой запрос к публичному URL формата
https://s3.amazonaws.com/bucketname/object.zip

без соответствующей политики вернёт 403, если объект приватный.

  1. Вставив в политику бакета условие IpAddress для aws:SourceIp, вы разрешаете s3:GetObject только запросам, пришедшим с указанных IP. Это похоже на «приватную подсеть» по отношению к S3, но трафик всё ещё идёт через интернет.

Пошаговая инструкция

  1. Откройте AWS Console → S3 → выберите бакет.
  2. Перейдите в вкладку Permissions → Bucket Policy.
  3. Вставьте политику (ниже) и замените bucketname и IP‑адреса на ваши.

Откройте редактор политики бакета в Permissions > Bucket Policy

Пример политики, разрешающей только скачивание объектов (GetObject) с указанных IPv4‑адресов:

{
  "Version": "2012-10-17",
  "Id": "S3PolicyId1",
  "Statement": [
    {
      "Sid": "IPAllow",
      "Effect": "Allow",
      "Principal": "*",
      "Action": [
        "s3:GetObject"
      ],
      "Resource": "arn:aws:s3:::bucketname/*",
      "Condition": {
        "IpAddress": {
          "aws:SourceIp": [
            "192.168.1.1",
            "192.168.1.2",
            "192.168.1.3"
          ]
        }
      }
    }
  ]
}

Пояснения к ключевым полям:

  • Resource: указывает все объекты в бакете (bucketname/*). Можно сужать до префиксов.
  • Action: s3:GetObject — разрешает только скачивание объекта.
  • Principal: “*” — политика применяется ко всем, но дальше фильтруется по условию IP.
  • Condition.IpAddress.aws:SourceIp — проверка источника запроса.

Если вам нужно разрешать больше действий, можно указать явно нужные API‑операции или (не рекомендуется) s3:* для всех действий.

{
  "Version": "2012-10-17",
  "Id": "S3PolicyId1",
  "Statement": [
    {
      "Sid": "IPAllow",
      "Effect": "Allow",
      "Principal": "*",
      "Action": "s3:*",
      "Resource": "arn:aws:s3:::bucketname/*",
      "Condition": {
        "IpAddress": {
          "aws:SourceIp": [
            "192.168.1.1",
            "192.168.1.2",
            "192.168.1.3"
          ]
        }
      }
    }
  ]
}

Важно: использование s3:* увеличивает привилегии и обычно не рекомендуется.

Проверка и отладка

  • Используйте curl или AWS CLI с сервера, чей IP в белом списке, чтобы убедиться в доступе:
curl -I https://s3.amazonaws.com/bucketname/object.zip
  • Из машины не из белого списка вы должны получать 403.
  • Включите серверный лог S3 (Server Access Logging) или CloudTrail для аудита вызовов и отладки.

Ограничения и когда это не сработает (контрпримеры)

  • Динамические исходящие IP: если ваши сервера получают динамические адреса (например, домашние подключения или мобильные устройства), белый список станет неудобным.
  • NAT/прокси: если трафик идёт через общий NAT‑шлюз, учитывайте его внешний IP, а не локальные адреса.
  • IPv6: условие IpAddress поддерживает IPv6, но укажите корректные адреса/CIDR.
  • Клиенты за сторонними прокси или CDN: реальный aws:SourceIp — это адрес ближайшего прокси, а не исходный клиент.

Альтернативы и когда их выбрать

  • IAM‑роль для EC2 (рекомендуется для инстансов AWS): нет ключей, проще и безопаснее.
  • VPC Gateway Endpoint для S3: трафик остаётся внутри сети AWS и не идёт в интернет — лучший вариант для приватных сетей в AWS.
  • Presigned URLs: временные ссылки, подходящие для раздачи отдельного файла пользователям или внешним сервисам.
  • CloudFront с подписанными URL или гео/ACL: добавляет кэширование и гибкую авторизацию.

Выбор: если все клиенты в вашей сети находятся за предсказуемыми исходящими IP — используйте политику с IpAddress. Если у вас инфраструктура в AWS — лучше VPC Endpoint или роль.

Безопасность и hardening

  • Применяйте принцип наименьших привилегий: давайте только s3:GetObject и ограничьте Resource до префикса, если возможно.
  • Включите S3 Block Public Access, чтобы случайно не сделать бакет публичным.
  • Используйте HTTPS для всех запросов.
  • Ведите аудит через CloudTrail и Server Access Logging.
  • Регулярно пересматривайте список IP и автоматически обновляйте его через инфраструктурный код (IaC), если IP меняются.

Роли и чек‑листы

Для администратора:

  • Подготовить список исходящих IP (NAT/провайдер).
  • Создать резервную копию текущей политики.
  • Вставить и сохранить новую политику бакета.
  • Проверить доступ с внутри сети и снаружи.
  • Включить логирование и мониторинг.

Для разработчика/оператора:

  • Тестировать скачивание через CLI/HTTP.
  • Автоматизировать обновление IP (если надо).
  • Обрабатывать ошибки 403 на клиенте с понятными логами.

Мини‑методология внедрения

  1. Сформируйте список конечных IP/CIDR и оцените стабильность адресов.
  2. Создайте политику в редакторе бакета, сначала в тестовом бакете.
  3. Протестируйте доступ локально и из недоверенной сети.
  4. Внедрите в продакшн и включите мониторинг.
  5. Составьте процесс обновления белого списка (кто и как добавляет адреса).

Модель принятия решения (упрощённо)

  • Все ресурсы в AWS и нужны приватные запросы → используйте VPC Endpoint или IAM‑роль.
  • Клиенты вне AWS, но с фиксированными IP → используйте bucket policy с IpAddress.
  • Нужны временные ссылки → presigned URLs.

Риск‑матрица (кратко)

  • Утечка доступа при ошибке в политике: высокий — смягчение: ревью, блокировка публичного доступа.
  • Недоступность для легитимных клиентов при смене IP: средний — смягчение: мониторинг, уведомления, автоматизация обновлений IP.
  • Журналирование/аудит отсутствует: средний — смягчение: включить CloudTrail и S3 Access Logs.

Краткий глоссарий (1‑строчные определения)

  • S3: объектное хранилище AWS.
  • Bucket Policy: JSON‑правило, управляющее доступом к бакету.
  • aws:SourceIp: ключ условия, указывающий IP источника запроса.
  • Presigned URL: временная подписанная ссылка на объект S3.
  • VPC Endpoint: приватный канал между вашей VPC и сервисом AWS.

Частые вопросы

Работает ли это с IPv6?

Да, поддерживается — указывайте IPv6 адреса или CIDR в aws:SourceIp.

Что, если у меня NAT‑шлюз — какие IP указывать?

Указывайте внешний (публичный) IP NAT‑шлюза, через который уходит трафик.

Как быстро применяется новая политика?

Обычно политика вступает в силу почти мгновенно, но кеширование на клиенте или CDN может задерживать поведение.

Итог

Политика S3 с условием IpAddress — простой и действенный способ разрешить скачивание объектов только с доверенных IP. Она полезна для серверов со стабильными исходящими адресами и минимизирует необходимость управления ключами доступа. Для ресурсов внутри AWS или для большей безопасности рассмотрите VPC Endpoint или IAM‑роли.

Важно: всегда следуйте принципу наименьших привилегий, ведите аудит и планируйте процесс обновления белого списка.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

RDP: полный гид по настройке и безопасности
Инфраструктура

RDP: полный гид по настройке и безопасности

Android как клавиатура и трекпад для Windows
Гайды

Android как клавиатура и трекпад для Windows

Советы и приёмы для работы с PDF
Документы

Советы и приёмы для работы с PDF

Calibration в Lightroom Classic: как и когда использовать
Фото

Calibration в Lightroom Classic: как и когда использовать

Отключить Siri Suggestions на iPhone
iOS

Отключить Siri Suggestions на iPhone

Рисование таблиц в Microsoft Word — руководство
Office

Рисование таблиц в Microsoft Word — руководство