Yandex Cloud
Поиск
Связаться с экспертомПопробовать бесплатно
  • Кейсы
  • Документация
  • Блог
  • Все сервисы
    • Cloud Interconnect
    • Cloud Backup
    • Cloud Registry
    • Yandex AI Studio
    • Compute Cloud
    • Object Storage
    • Managed Service for Kubernetes®
    • Yandex BareMetal
    • Smart Web Security
    • Security Deck
    • Managed Service for PostgreSQL
    • Managed Service for ClickHouse®
    • Monium
    • Cloud CDN
    • Network Load Balancer
    • Virtual Private Cloud
    • Cloud DNS
    • Application Load Balancer
    • Yandex Cloud Video
    • Stackland
    • Yandex Cloud Router
    • Yandex Managed Service for Trino
    • Managed Service for MySQL®
    • Managed Service for Valkey™
    • Managed Service for Apache Spark™
    • Yandex StoreDoc
    • Managed Service for OpenSearch
    • Managed Service for Apache Kafka®
    • Data Transfer
    • Yandex MPP Analytics Engine for PostgreSQL
    • Yandex Managed Service for Apache Airflow®
    • Data Processing
    • Yandex MetaData Hub
    • Managed Service for YDB
    • Managed Service for Sharded PostgreSQL
    • Managed Service for YTsaurus
    • Yandex WebSQL
    • DataLens
    • Yandex Search API
    • SpeechSense
    • SpeechKit
    • DataSphere
    • Vision OCR
    • Translate
    • Yandex Neurosupport
    • VibeCraft
    • Yandex Cloud Detection and Response
    • Yandex Identity Hub
    • Key Management Service
    • Certificate Manager
    • Yandex Lockbox
    • Audit Trails
    • SmartCaptcha
    • Cloud Desktop
    • GOST Gateway
    • Yandex SIEM
    • SourceCraft Code Assistant
    • Container Registry
    • Managed Service for GitLab
    • SourceCraft
    • Managed Service for Prometheus®
    • Cloud Functions
    • API Gateway
    • Yandex Cloud Postbox
    • Message Queue
    • Serverless Integrations
    • IoT Core
    • Data Streams
    • Serverless Containers
    • Cloud Notification Service
    • Yandex Query
    • Identity and Access Management
    • Yandex Cloud Console
    • Resource Manager
    • Yandex Cloud Billing
    • Yandex Cloud Quota Manager
    • Cloud Apps
  • Статус работы сервисов
  • Marketplace
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Искусственный интеллект
    • Безопасность
    • Инструменты DevOps
    • Бессерверные вычисления
    • Управление ресурсами
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Yandex Cloud Trust
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Калькулятор цен
    • Тарифы
    • Акции и free tier
  • Кейсы
  • Документация
  • Блог
Создавайте контент и получайте гранты!Готовы написать своё руководство? Участвуйте в контент-программе и получайте гранты на работу с облачными сервисами!
Подробнее о программе
Проект Яндекса
© 2026 ООО «Яндекс.Облако»
Все решения
    • Все решения для Object Storage
    • Устранение ошибки `Bucket is not empty` при удалении бакета
    • Устранение ошибок доступа к бакету с назначенной политикой безопасности
    • Устранение ошибки `The request signature we calculated does not match the signature you provided.`
    • Устранение ошибки 409 `BucketAlreadyExists`
    • Устранение ошибки доступа к бакетам S3 из кластера Yandex Data Processing 1.4
    • Устранение ошибки 403 (не отдается заголовок при использовании метода `OPTION`)
    • Устранение ошибки сертификата
    • Устранение ошибки `GATEWAY_REQUEST_ERROR`
    • Устранение проблем с некорректным MIME-типов объектов при их загрузке в Object Storage
    • Устранение проблем с загрузкой новых объектов в бакет
    • Как перенести данные из бакета Object Storage в ледяное хранилище
    • Как ограничить доступ к бакету Object Storage диапазоном IP-адресов, принадлежащих Cloud CDN
    • Как перенести содержимое бакета в другой бакет в пределах организации
    • Как работать напрямую с API Object Storage без использования SDK
    • Как просматривать и удалять незавершенные загрузки
    • Как узнать скорость загрузки и скачивания данных
    • Как настроить заголовки кеширования `Cache-Control` для объектов в бакете при HTTP-запросах
    • Как ограничить доступ к бакету для пользователя
    • Как изменить класс хранения
    • Как восстановить удаленные данные из бакета
  1. Object Storage
  2. Как ограничить доступ к бакету Object Storage диапазоном IP-адресов, принадлежащих Cloud CDN

Как ограничить доступ к бакету Object Storage диапазоном IP-адресов, принадлежащих Cloud CDN

Статья создана
Yandex Cloud
Обновлена 25 сентября 2026 г.
Открыть в Markdown

Доступ к объектам можно ограничить с помощью политики доступа, которая разрешает чтение только из подсетей Yandex Cloud CDN.

Список подсетей периодически меняется. Скрипт ниже получает актуальный список, объединяет смежные диапазоны и формирует политику в формате JSON. Все диапазоны находятся в одном условии aws:SourceIp и применяются с логикой ИЛИ.

Скрипт генерации политики

Сохраните код в файл cdn-bucket-policy.py:

import argparse
import ipaddress
import json
import urllib.request

parser = argparse.ArgumentParser()
parser.add_argument("--bucket", required=True)
parser.add_argument("--source", required=True)
args = parser.parse_args()

with urllib.request.urlopen(args.source, timeout=30) as response:
    prefixes = json.load(response)["prefixes"]

if not prefixes:
    raise ValueError("Список подсетей CDN пуст")

networks = [ipaddress.ip_network(prefix) for prefix in prefixes]
cidrs = []
for version in (4, 6):
    cidrs.extend(
        str(network)
        for network in ipaddress.collapse_addresses(
            network for network in networks if network.version == version
        )
    )

policy = {
    "Version": "2012-10-17",
    "Statement": [{
        "Sid": "AllowCloudCDNOnly",
        "Effect": "Allow",
        "Principal": "*",
        "Action": "s3:GetObject",
        "Resource": f"arn:aws:s3:::{args.bucket}/*",
        "Condition": {"IpAddress": {"aws:SourceIp": cidrs}},
    }],
}
print(json.dumps(policy, indent=2, ensure_ascii=False))

Запустите скрипт с помощью Python 3, указав имя бакета:

python3 cdn-bucket-policy.py --bucket <имя_бакета> \
  --source https://tech.cdn.yandex.net/prefixes/yc.json > policy.json

Проверьте полученный файл и примените политику к бакету. Скрипт только создает JSON-файл и не меняет настройки бакета.

Политика разрешает только чтение объектов из сетей CDN. Для других операций, в том числе доступа через консоль управления, нужны отдельные правила. Если в бакете уже есть политика, учитывайте ее правила при внесении изменений: другие разрешающие правила могут открыть чтение и для адресов вне сетей CDN.

Периодически запускайте скрипт повторно и обновляйте политику, чтобы учитывать изменения списка подсетей.

Была ли статья полезна?

Предыдущая
Как перенести данные из бакета Object Storage в ледяное хранилище
Следующая
Как перенести содержимое бакета в другой бакет в пределах организации
Создавайте контент и получайте гранты!Готовы написать своё руководство? Участвуйте в контент-программе и получайте гранты на работу с облачными сервисами!
Подробнее о программе
Проект Яндекса
© 2026 ООО «Яндекс.Облако»