В облачном хранилище Google я хочу, чтобы PUBLIC (все пользователи) мог загружать новые файлы и загружать существующие файлы, но я не хочу, чтобы PUBLIC мог перезаписывать существующий файл.
Справочная информация: URL-адреса загрузки и загрузки обычно определяются моим собственным приложением. Так что в нормальных условиях проблем нет, потому что приложение гарантирует, что URL-адреса всегда уникальны при записи. Но злоумышленник может взломать мое приложение и потенциально сможет загружать файлы (плохо) в мое облачное хранилище и перезаписывать существующие файлы (очень плохо).
Я знаю, что могу решить эту проблему, проксируя через App Engine или используя подписанные URL-адреса, чего я стараюсь избегать из-за временных ограничений. Своевременная обработка важна, поскольку мое приложение обрабатывает файлы (почти) в реальном времени, и дополнительная задержка всего в 1000 мс для обработки двух последовательных запросов была бы слишком долгой.
Можно ли настроить облачное хранилище таким образом, чтобы возвращалась ошибка в случае попадания в уже существующий файл во время загрузки, например:
Сегмент: PUBLIC имеет доступ на ЗАПИСЬ Отдельный файл: PUBLIC имеет доступ на чтение
Это сработает? Что происходит в GCS, если ACL ведра и файла противоречат друг другу? В приведенном выше примере корзина разрешает доступ на запись, но если загрузка попадает в уже существующий файл с доступом только для чтения, будет ли такой запрос выполняться GCS, или GCS будет рассматривать файл как уже существующий в этот момент и заменять его новым содержимым ?
Мы будем очень признательны за любой другой подход, который может сработать.