Как использовать правила безопасности Firebase для защиты вызовов облачных функций с помощью аутентификации Firebase?

# #firebase #google-cloud-platform #firebase-authentication #google-cloud-functions

Вопрос:

Я начинаю углубляться в Правила безопасности Firebase и следую документам Правил безопасности Firebase, но в этом документе говорится только о базе данных в реальном времени, Облачном магазине Firestore и параметрах облачного хранилища. Существует ли способ использовать аутентификацию Firebase для защиты вызова функции Google Cloud со стороны клиента?

Я пытаюсь использовать функцию GC в качестве серверной части для доступа к облачному SQL из веб-приложения.

Ответ №1:

Облачные функции обычно используют SDK администратора (или учетные записи служб, учетные данные приложения по умолчанию для доступа к любым другим службам, таким как облачный SQL), который имеет полный доступ к ресурсам вашего проекта Firebase, а также обходит все правила безопасности. При этом вам придется самостоятельно разрешать запросы. Например, если вы используете onCall функцию:

 export const fnName = functions.https.onCall((data, context) => {
  const { auth } = context
 
  if (!auth) console.log('User not logged in')

  const { uid } = auth; 
  // UID of user who called the function
   // Check if user has access to requested resource
  // process request
})
 

Если вызывающая функция не аутентифицирована, то context.auth она будет неопределенной.


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