
Я хочу разместить файлы, которые мои пользователи загружают в мое веб-приложение, в облачных хранилищах Google... проблема в том, что мне нужно сделать разрешения открытыми для всех, поскольку мне также нужно извлекать файлы, когда пользователи переходят на определенные страницы.
Это, очевидно, большой риск для безопасности, потому что даже если я назову файлы с uid в пути к файлу (например... "attachments/user_id/some_other_id/individual_file_uid/NameOfFile"), злоумышленник может просто перейти к нему, https://www.googleapis.com/storage/v1/b/my_bucket/o/attachments
и он выведет список всех каталогов и файлов, которые у меня есть в этом общедоступном контейнере. Но чтобы включить эти файлы в мое веб-приложение с помощью <img/>
тегов, я не знаю другого способа ограничить доступ к этим файлам, не мешая img src
.
Единственное, что я смог придумать, это ограничить GETting этих файлов по отдельному доменному имени. То есть... если мои веб-приложения размещены на application.example.com, я бы ограничил файлы, чтобы они были доступны только по application.example.com. Я нашел кое-что здесь:https://cloud.google.com/resource-manager/docs/organization-policy/restricting-domainsно я думаю, что речь идет не об ограничении доступа по доменному имени, а по домену организации.
Так что, полагаю, мой вопрос на самом деле состоит из двух частей:
- Я неправильно понимаю? Есть ли лучший способ безопасно хранить эти изображения, при этом оставаясь доступными для моего веб-приложения?
- Как ограничить доступ к этим файлам по доменному имени?
решение1
Я неправильно понимаю? Есть ли лучший способ безопасно хранить эти изображения, при этом оставаясь доступными для моего веб-приложения?
Да, вы неверно смотрите на это в отношении предоставленной вами ссылки на документ.
Вы не можете ограничить или предоставить доступ к Cloud Storage по имени домена DNS. Вы можете сделать контейнер Cloud Storage общедоступным, использовать Signed-URL для разрешения доступа, использовать API Cloud SDK или использовать Identity Based Access Control.
Как ограничить доступ к этим файлам по доменному имени?
Вы не можете. Эта функция не является частью Cloud Storage. Смотрите мои предыдущие комментарии для получения дополнительной информации.
Единственный вариант (с точки зрения безопасности) — использовать подписанные URL-адреса.