Ограничение доступа к учетной записи службы Google Cloud Platform для определенных учетных записей Gmail
Недавно я сделал программу, которая прослушивает тему PUB/SUB, подключенную к учетной записи Gmail. У меня все нормально работает. Когда приходит push-уведомление, оно будет выполнять разные задачи в зависимости от содержимого сообщения.
Проблема в том, что я использую учетную запись службы для подключения ко всем API на Google Cloud Platform, которые мне нужны. Учетная запись службы обеспечивает доступ ко ВСЕМ нашим учетным записям Gmail в нашей организации. Мне нужно как-то ограничить доступ к определенной учетной записи Gmail.
Самым близким к этой проблеме, который я смог найти, был вопрос, который выдавал себя за список пользователей с учетной записью службы Google. Однако единственное представленное решение заключалось в том, чтобы превратить мой проект в рыночное приложение, чего я не хочу делать.
Я попытался создать организационное подразделение и попытаться каким-то образом ограничить объем этого, но, похоже, есть способ (который я могу найти) сделать это. Я пытался поговорить с помощью службы поддержки Google Cloud Platform, но они не знали ответа, поскольку это не совсем входило в их область знаний, и направили меня в другую группу поддержки, но я не имею права на них, потому что я не т платить за поддержку.
Изменить: на самом деле не похоже, что то, что я хочу сделать, возможно. Я вернусь к методу аутентификации OAuth2.
1 ответ
Понимание сервисных учетных записей объясняет возможности:
Учетные записи служб можно рассматривать и как ресурс, и как удостоверение.
Думая об учетной записи службы как об удостоверении, вы можете назначить роль учетной записи службы, что позволит ей получить доступ к ресурсу (например, проекту).
Если рассматривать учетную запись службы как ресурс, вы можете предоставить другим пользователям роли для доступа или управления этой учетной записью службы.
А теперь попробуйте уместить это невыполнимое намерение...
Если вам необходимо ограничить доступ учетной записи службы к пользовательским ресурсам, это можно сделать только на уровне приложения, а не на системном уровне, поскольку учетная запись службы может олицетворять любую личность пользователя; например. чтобы не испортить права собственности при загрузке файлов от имени пользователя. Если вы хотите, чтобы 1 идентификатор пользователя имел доступ к 1 ресурсу для конкретного пользователя, зачем вообще использовать учетную запись службы? А при использовании учетной записи службы почему бы просто не выдать себя за правильную личность? Это можно было бы даже жестко запрограммировать, если бы это был только 1 идентификатор пользователя. Но, тем не менее, это можно сделать только на уровне приложения, но нельзя настроить для самой учетной записи службы.