Как разрешить общедоступному инстансу Google Run общаться с * приватным * инстансом Google Run? - PullRequest
1 голос
/ 22 июня 2019

Мне нужно подключить образы A и B, работающие на Google Run.A требуется небольшой объем памяти и медленное масштабирование (это внешний интерфейс), а B требуется высокий объем памяти и интенсивное масштабирование под нагрузкой (это внутренний интерфейс).

Я сделал A общедоступным (allUserможет коснуться: 80), а B приват (я не установил флажок).Поскольку экземпляр облака Google не имеет статического IP-адреса, но имеет динамический URL-адрес, как я могу заставить А «говорить» с B (через http), сохраняя при этом недоступность B с дикой природы?


Прямо сейчас,Единственный обходной путь, который я нашел, - это открыть HTTP-порты для allUser для обоих и использовать имя субдомена для B (например, b.my.app) и вызвать "http://b.my.app" from A.

Thisэто очень плохое решение, поскольку к B можно прикоснуться вне сети Google.

1 Ответ

1 голос
/ 22 июня 2019

Поскольку служба B является частной (требует проверки подлинности), служба A должна будет включать заголовок HTTP-авторизации в запросы к службе B.

Заголовок выглядит так:

Authorization: Bearer <replace_with_token

токен является токеном идентификации OAuth 2.0 (не токен доступа). Адрес электронной почты члена IAM для учетных данных пользователя или учетной записи службы добавляется в службу B с ролью roles/run.invoker.

Вам все равно нужно будет позвонить по URL-адресу конечной точки (xxx.y.run.app) службы B. Это не изменится, если вы также не внедрите пользовательские домены.

Приятной особенностью Cloud Run является то, что когда требуется проверка подлинности, прокси-сервер Cloud Run обрабатывает это для вас. Прокси находится перед Cloud Run и блокирует все неавторизованные запросы. Ваш экземпляр никогда не запускается, поэтому нет времени для выставления счетов, пока хакеры пытаются получить доступ.

В одной из моих статей на моем веб-сайте я показываю, как создать токен идентификации в Go ( ссылка ). В этой статье используется CURL ( ссылка ), которая состоит из трех частей. В Интернете есть множество статей, которые также объясняют это. В другой статье я объясняю, как работает Cloud Run Identity ( ссылка ) и как работает Cloud Run Identity Access Control ( ссылка ).

Просмотрите параметр --service-account, который позволяет настроить учетную запись службы для использования в качестве удостоверения ( ссылка ).

Документация по аутентификации в облачном хранилище ( ссылка ).

...