Предоставьте Gmail-API за пределами наших прав доступа к облачному пабу / подписчику Google. - PullRequest
0 голосов
/ 04 марта 2020

Позвольте мне попытаться объяснить вам, что мы пытаемся сделать.

Скажем это быстро: мы хотим предоставить привилегии Pub / Sub Publisher (в нашем GoogleCloud) для GMail-API, который находится за пределами наше GoogleCloud.

Что у нас есть: Следующие инструкции здесь: https://developers.google.com/gmail/api/quickstart/ruby Мы создали проект для GMail-API и учетные данные в GoogleCloud, назовем его Cloud-A. (Мы не будем владеть этой стороной в производственной среде; этим проектом и облаком будет управлять ИТ-отдел наших клиентов.)

Далее мы следовали этому другому руководству https://developers.google.com/gmail/api/guides/push Мы создали Pub / Sub topi c в нашем GoogleCloud (Cloud-B), нам принадлежит эта часть, и это topi c, где мы хотим подписаться для прослушивания сообщений / уведомлений. (Этот topi c находится в учетной записи, отличной от GMail-API, которая будет публиковать сообщения в Cloud-A). Итак, следуя этому последнему руководству, в нем говорится, что нам нужно дать разрешения для gmail-api-push@system.gserviceaccount.com, и, насколько я понимаю, это означает, что я даю привилегии GMail-API из Cloud-B для публикации sh сообщений в Pub / Sub Cloud-B.

То, что я не могу найти, - это способ дать разрешения для Gmail-API из Cloud-A на публикацию sh сообщений в Pub / Sub Cloud-B.

В заключение хочу прослушать Pub / Sub в Cloud-B, который будет получать уведомления от Gmail-API в Cloud-A.

Мы использовали это https://github.com/googleapis/google-api-ruby-client/blob/master/generated/google/apis/gmail_v1/service.rb#L144 и Я получаю сообщение об ошибке, в котором говорится, что topi c не существует (возможно, потому что он находится в Cloud-B, и я настраиваю Cloud-A Gmail-Api)

Надеюсь, я достаточно ясно мы не надеемся предоставить другому проекту внутри того же Google Cloud доступа к Pub / Sub, мы даже не написали эту услугу, поскольку это Gmail-Api, и единственное, что нам разрешено делать, - это отправить его c имя, которое мы хотим опубликовать sh in.

1 Ответ

0 голосов
/ 05 марта 2020

Я не знаком с тем, как GMail-API публикует в Pub / Sub, но, если вы уже выяснили, как опубликовать sh из GMail-API в проекте Cloud-A в Pub / Sub topi c в Cloud-A, вы можете попробовать следующие обходные пути:

Альтернатива A:

  1. Создать топи c (topi c -A) в проекте Cloud- A.
  2. Создание подписки по запросу (subs-A), связанной с topi c -A, также в проекте Cloud-A.
  3. Создание учетной записи службы (account-B) в проекте Cloud -B и предоставьте ему роль подписчика Pub / Sub для подписки-A.
  4. Заставьте своих потребителей (например, AppEngine, GKE, GCE) использовать учетную запись службы B для получения сообщений от подчиненных A-ов.

Альтернатива B:

  1. Создание топи c (топи c -A) в проекте Cloud-A.
  2. Создание пу sh подписка (subs-A), связанная с topi c -A, указывающая на конечную точку сервиса, размещенного в проекте Cloud-B (например, GCE, GKE, AppEngine, Cloud Function, et c.)
  3. Создать топи c (топи c -A) в проекте Cloud-A.
  4. Создать пул или пу sh подписка (subs-B) в проекте Cloud-B, связанная с topi c -A в проекте Cloud-A. Пользователь, создающий эту подписку, должен иметь роль редактора Pub / Sub Editor, назначенную для topi c -A.
  5. Использование сообщений от sub-B.
...