Чтобы использовать Firebase Admin SDK в Firebase Cloud Functions v2, необходимо предоставить «Учетной записи вычислительной службы по умолчанию» в консоли Google Cloud роль «Агент обслуживания администратора Firebase Admin SDK». Это связано с тем, что функции версии 2 используют эту учетную запись службы для доступа к Firebase Admin SDK, а не учетную запись службы «firebase-adminsdk», которая была автоматически создана с этой вышеупомянутой ролью.
Безопасно ли предоставить эту роль учетной записи службы вычислений по умолчанию? Или есть способ заставить функции v2 использовать вместо этого учетную запись службы firebase-adminsdk?
Всякий раз, когда вы предоставляете дополнительные разрешения чему-либо, это может считаться «небезопасным», если не понимать общую картину всех задействованных облачных компонентов и их индивидуальных конфигураций безопасности. Если быть точным, если вы дадите это разрешение, мы понятия не имеем, какие другие части вашего проекта могут быть затронуты. Так что, учитывая представленную здесь информацию, действительно невозможно сказать, «безопасно» это или нет.
Рекомендуется соблюдать принцип наименьших привилегий и назначать любому компоненту только самые конкретные необходимые разрешения на основе его реальных потребностей. Это единственное, что можно считать универсально «безопасным».
Если вы хотите, чтобы ваш код облачных функций был максимально «безопасным», вам следует инициализировать Firebase Admin SDK с учетной записью службы, которой предоставлены только определенные разрешения, необходимые для выполнения любых действий с SDK. Это означает, что вам нужно будет передать параметр AppOptions в InitializeApp с соответствующими учетными данными сервисной учетной записи.
Вы должны предоставить полный объект учетных данных. По-другому это не сработает. serviceAccountId — это другое, для другой цели.
Не могли бы вы дать мне ссылку на официальное или неофициальное руководство по инициализации приложения с учетными данными сервисной учетной записи для функций версии 2? Я нигде ничего не могу найти.
В моем ответе уже есть ссылка на то, как запустить SDK. В документации API, на которую я ссылаюсь, также есть все необходимое: «При авторизации через учетную запись службы у вас есть два варианта предоставления учетных данных вашему приложению. Вы можете либо установить переменную среды GOOGLE_APPLICATION_CREDENTIALS, либо явно передать путь к службе. ключ аккаунта в коде"
В ссылке говорится, что для инициализации Admin SDK необходим «файл конфигурации с учетными данными вашей сервисной учетной записи». Нет никаких инструкций по поводу этого файла, кроме того факта, что он должен существовать. Можете ли вы дать мне ссылку на что-нибудь об этом файле конфигурации?
Инструкция о том, как получить сервисный аккаунт, находится в этом же документе. Пожалуйста, внимательно прочитайте: «Чтобы создать файл закрытого ключа для вашей учетной записи службы:...»
А если у вас есть дополнительный вопрос, задайте его отдельно. Продолжать здесь бесконечно в комментариях нет смысла. Также обратите внимание, что учетные записи служб являются концепцией GCP, и в документации GCP есть много дополнительной документации. Firebase Admin SDK просто расширяет то, что Google уже предоставляет для GCP.
Интерфейс
AppOptions
может принимать строку идентификатора учетной записи службы. Считаете ли вы это «безопасным» способом указать, какую учетную запись службы использовать? Альтернатива, использующая интерфейс Credential, по-видимому, требует использования ключей, чего мне бы очень хотелось избежать.