Как безопасно использовать учетную запись службы GCP из приложения Android? - PullRequest
1 голос
/ 07 ноября 2019

Я разрабатываю приложение для Android (Java), которое использует аутентификацию Firebase и GCP Pubsub. Для подключения к Pubsub в настоящее время я использую ключ учетной записи службы, который хранится в файле JSON в моем проекте. Но это не то, что кажется безопасным в производственной среде, так как оно раскрывает мой ключ.

Итак, что было бы лучше в этом случае?

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

https://cloud.google.com/docs/authentication/

Ответы [ 2 ]

1 голос
/ 07 ноября 2019

Основная проблема заключается в том, как вы управляете ключами учетной записи службы, которые используются для взаимодействия сервера с сервером или приложения с приложением. Вот некоторые из рекомендаций от облака Google.

Google рекомендует использовать политику IAM для ограничения / управления доступом.

1 голос
/ 07 ноября 2019

Вы правы - распространять ключ учетной записи службы небезопасно. Даже с минимальной Pub/Sub Publisher ролью это позволит любому, у кого есть копия ключа, ввести столько данных, сколько им нужно, в Pubsub (выставляя вам счет), и в зависимости от того, как ваши подписчики используютпредоставленные таким образом данные могут открыть поверхность атаки на стороне ваших подписчиков. Кроме того, вы хотели бы планировать, что делать, если вам нужно повернуть ключ. Я не рекомендую вам использовать этот подход.

Учитывая, что вы не включаете ключ в само приложение, вам остается найти способ сделать что-то в среде управляемого сервера, которая также имеет доступ кучетные данные учетной записи службы.

Одним из вариантов является то, что вы можете создать Функция вызываемого облака для выполнения операции Pubsub. Облачная функция надежно размещается на серверах Google и может без проблем работать в качестве учетной записи службы. Затем он будет вызываться из вашего приложения.

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

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

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