NeoFS S3 Gateway v0.45.1 оптимизирует производительность чтения и записи с помощью SDK RC21
Ключевые выводы
- •NeoFS S3 Gateway v0.45.1 включает оптимизацию пути записи, которая устраняет как минимум одно промежуточное копирование данных при операциях PUT и снижает расход памяти и CPU.
- •Запросы ranged GET теперь получают заголовок объекта и данные полезной нагрузки за один сетевой вызов вместо отдельного round-trip, что полезно для потокового мультимедиа и частичных загрузок.
- •Extended Access Control Lists применяются одновременно с созданием контейнера, что убирает дополнительный запрос и закрывает окно, в котором новый контейнер мог существовать без назначенной политики доступа.
- •Исправление метаданных отфильтровывает внутренние системные атрибуты NeoFS из ответов GetObject, обеспечивая возврат только пользовательских метаданных и снижая риск утечки информации в многопользовательских средах.
- •Патч включает обновление зависимости gRPC до v1.82.1, которое смягчает атаки HTTP/2 frame flood denial-of-service и устраняет уязвимости обхода авторизации в сопоставлении разрешений xDS.

Neo SPCC выпустила NeoFS S3 Gateway v0.45.1 4 августа. Это обновление-патч добавляет три оптимизации производительности и исправление метаданных для S3-совместимого интерфейса сети децентрализованного хранения NeoFS. Поскольку Amazon S3 API стал фактическим стандартом объектного хранения как в централизованных, так и в децентрализованных платформах, улучшения пропускной способности и корректности S3 gateway напрямую влияют на то, насколько легко разработчики могут переносить приложения на NeoFS или создавать их с использованием привычных инструментов.
Две из этих оптимизаций производительности реализованы благодаря NeoFS SDK Go RC21, который был выпущен всего за несколько дней до этого вместе с NeoFS Node v0.55.0.
Развивая крупный июльский релиз S3 Gateway v0.45.0, который принес конфигурацию пространств имен, упрощённые правила EACL и удаление устаревшей поддержки access box, этот новый патч не требует миграции для существующих пользователей v0.45.0.
Оптимизации буферизации записи и ranged GET
Первая оптимизация реализует интерфейс io.ReaderFrom для writer полезной нагрузки объекта — возможность, представленную в SDK RC21. Убирая как минимум одно промежуточное копирование данных во время операций PUT, это обновление снижает расход памяти и накладные расходы CPU на пути записи (#1320).
Вторая оптимизация улучшает ranged GET-запросы. Ранее для таких запросов требовался отдельный сетевой round-trip, чтобы получить заголовок объекта перед извлечением указанного диапазона данных. Используя параметры диапазона байтов, аналогичные HTTP, из SDK RC21, шлюз теперь получает и заголовок, и диапазон полезной нагрузки за один сетевой вызов (#1319). Это улучшение особенно полезно для потокового мультимедиа, частичных загрузок и рабочих процессов multipart upload, которые полагаются на S3 range reads.
EACL применяются при создании контейнера
Extended Access Control Lists (EACL) теперь применяются одновременно с созданием контейнера в одном сетевом вызове, без необходимости отдельного последующего запроса (#1304). Это изменение снижает задержку при создании S3 bucket и закрывает краткое окно уязвимости, в котором недавно созданный контейнер мог существовать без назначенной политики доступа.
Исправление системных атрибутов
Важное исправление корректности фильтрует внутренние системные атрибуты NeoFS из ответов GetObject с метаданными (#1321). Ранее эти атрибуты на уровне протокола включались вместе с пользовательскими метаданными в S3-ответах, непреднамеренно раскрывая клиентам внутренние детали реализации. Исправление гарантирует, что возвращаются только пользовательские метаданные, что соответствует ожидаемому поведению S3 API и снижает риск утечки информации в многопользовательских средах.
Обновления зависимостей
Помимо обновления SDK RC21, версия 0.45.1 включает различные обновления по безопасности и обслуживанию, в том числе:
golang.org/x/cryptov0.52.0golang.org/x/netv0.55.0google.golang.org/grpcv1.82.1
Обновление gRPC в частности включает меры по снижению риска HTTP/2 frame flood denial-of-service атак и исправляет сценарии обхода авторизации, обнаруженные в сопоставлении разрешений xDS. Эти классы уязвимостей HTTP/2 активно эксплуатируются в более широкой инфраструктурной экосистеме, поэтому своевременное обновление зависимостей является базовой практикой безопасности для storage gateway, доступных недоверенным клиентам.
Полные примечания к выпуску доступны по ссылке: https://github.com/nspcc-dev/neofs-s3-gw/releases/tag/v0.45.1