Есть ли способ ограничить публичный доступ с помощью firebase? - PullRequest
0 голосов
/ 01 октября 2019

Функции вызываемой в Firebase облачной системы могут быть доступны через клиентские sdks, для которых требуется действительный контекст авторизации для аутентификации и авторизации. Но и в то же время он выставляется как конечная точка HTTP, поэтому может быть вызван, но получит неавторизованный ответ. Мои вопросы: есть ли способ полностью ограничить публичный доступ к функциям вызываемого облака? поскольку firebase будет заряжать облачные функции на основе выполнения функций. Даже для возврата неавторизованного ответа запрос уже передан функции, поэтому во время DDoS-атаки это может быть проблематично.

Ответы [ 3 ]

1 голос
/ 01 октября 2019

Нет встроенной поддержки для отклонения запроса к облачной функции до того, как он достигнет вашего кода. Если вы хотите такую ​​функциональность, рассмотрите возможность установки оконечных точек облака перед вашими облачными функциями.

Лучшее, что вы можете сделать с помощью только облачных функций, - это проверить, авторизован ли вызывающий абонент как первое, что есть в вашем коде функции, чтобыВы уменьшаете количество времени, в течение которого функция активна. В этом случае вы по-прежнему будете платить за вызов, но вы будете минимизировать ГБ-секунды и ЦП-секунды.

0 голосов
/ 04 октября 2019

Приведенный выше ответ @Frank van Puffelen идеален, но вы можете использовать трик, чтобы ограничить доступ, обеспечив безопасность этого маршрута. Вот пример:

const functions = require('firebase-functions');

exports.scheduleSampleJob = functions.https.onRequest((req , res) => {
     let auth = req.header('Authorization');

     if(auth == 'YOUR_API_AUTHORIZATION_KEY'){
         // valid Authorization key, process the call
     }else{
         //send forbidden if Authorization key not valid
         return res.status(403).send('Access is Forbidden'); 
     }
});

Теперь, если вы хотите вызвать конечную точку, потребуется запрос Авторизация в запросе со значением вашего секретного ключа.

Так как облачная функция firebase может также использоваться с firebase-auth, вы можете создать собственную логику, чтобы разрешить доступ пользователям, имеющим только авторизацию, и ограничить доступ для всех, кроме аутентичных пользователей вашего приложения.

0 голосов
/ 04 октября 2019

Я попробовал, так как @Frank предложил использовать Google Cloud Run для развертывания и ESP-контейнер, который можно использовать для вызова функций частного облака. Подробный обзор описан в самой документации.

https://cloud.google.com/endpoints/docs/openapi/get-started-cloud-functions#deploy_endpoints_proxy

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...