Что именно происходит при назначении учетной записи службы Cloud Run? - PullRequest
1 голос
/ 27 апреля 2020

Я пытаюсь понять, что делает назначение учетной записи службы Cloud Run для повышения безопасности контейнеров. У меня есть несколько процессов, запущенных в службе Cloud Run, и не всем из них требуется доступ к ресурсам проекта.

Более конкретный c вопрос, который я имею в виду: Смогу ли я создать несколько пользователей и запускать некоторые процессы в качестве пользователя, который не имеет доступа к учетной записи службы или имеет каждого пользователя у меня есть доступ к учетной записи службы?

Я провожу небольшой эксперимент на экземпляре виртуальной машины (думаю, это будет аналогично случаю с Cloud Run), где я создал нового пользователя и после его создания не было разрешено использовать служебную учетную запись экземпляра. Тем не менее, я не уверен, что есть способ авторизовать его, что сделало бы мой метод небезопасным.

Спасибо.

РЕДАКТИРОВАТЬ

Для выполнения теста я создал новый os пользователь и использовал "список аутентификации gcloud" из новой учетной записи пользователя. Тем не менее, я должен был сделать запрос на скручивание, и я смог бы получить учетные данные, как указано в ответе ниже.

Ответы [ 2 ]

1 голос
/ 28 апреля 2020

В ответе Гийома отсутствует ключевое слово "permissions".

В частности, если вы не назначаете учетную запись службы, Cloud Run будет использовать учетную запись службы Compute Engine по умолчанию .

Эта учетная запись по умолчанию имеет роль Editor в вашем проекте (другими словами, она может делать практически все в вашем проекте GCP , за исключением создания новых учетных записей служб и предоставления им доступа, и возможно удаление проекта GCP). Если вы используете учетную запись службы по умолчанию и ваш контейнер скомпрометирован, вы, вероятно, попали в беду. 101

Однако, если вы укажете новый --service-account, по умолчанию у него нет разрешений. Вы должны привязать к нему роли или разрешения (например, GCS Object Reader, PubSub Publisher ...), необходимые для вашего приложения.

1 голос
/ 27 апреля 2020

Ваш вопрос не очень понятен, но я постараюсь предоставить вам несколько входных данных.

Когда вы запускаете службу в Cloud Run, у вас есть 2 варианта для определения ее идентичности

  • Либо используется учетная запись службы вычислительного ядра (по умолчанию вы ничего не указываете)
  • Или это учетная запись службы, которую вы указываете при развертывании

Эта учетная запись службы действительна для службы Cloud Run (у вас может быть до 1000 различных служб на проект).

Теперь, когда вы запускаете свой контейнер, учетная запись службы фактически не загружается в контейнер ( то же самое относится и к вычислительному движку), но для запроса данных аутентификации этой учетной записи службы доступен API. Это имя сервер метаданных

Оно не ограничено пользователями (я не знаю, как вы выполняете свой тест на Compute Engine!), Для получения данных достаточно простого скручивания.

Этот сервер метаданных используется, например, когда вы используете свои библиотеки и используете «учетные данные по умолчанию» . gcloud SDK также использует его.

Надеюсь, теперь у вас получше. Если нет, добавьте детали в свой вопрос или в комментарии.

...