Как аутентифицировать контейнер Docker с сервисом Google - PullRequest
2 голосов
/ 03 июля 2019

Контейнер Docker запускает сервер Python и публикует сообщения для службы сообщений Google Pubsub.

Чтобы этот контейнер мог использовать службу Google Pubsub, я установил переменную окружения GOOGLE_APPLICATION_CREDENTIALS, указывающую на файл service_key.json, который я скачал после создания Service Account Key, открыв Google Cloud Console, а затемперейти к:

API's & Services> Credentials> Create Credentials> Service Account Key.

enter image description here

enter image description here

Файл service_key.json необходимо скопировать на локальный диск контейнераиначе он не сможет это прочитать.

Хотя этот подход работает и контейнер Docker теперь авторизован для использования службы Google Pubsub с учетными данными файла service_key.json, я считаю, что это не очень безопасное решение, поскольку файл service_key.json теперь размещается в облакес самим контейнером.

Есть ли способ авторизации контейнера Docker с учетными данными Сервиса Google без копирования файла service_key.json на его локальный диск?

1 Ответ

3 голосов
/ 04 июля 2019

Вы делаете что-то подобное?

docker run ...
--volume=${LOCAL_PATH}/secrets/service_key.json:/secrets/key.json \
--env=GOOGLE_APPLICATION_CREDENTIALS=/service/key.json \
mycontainerimage

NB Переназначение service_key.json -> key.json для ясности намерения

Это не такрешить вопрос о необходимости смонтировать ключ на хосте, на котором запущен контейнер, но это действительно означает необходимость помещать ключ в контейнер.

До тех пор, пока вы можете защитить хост (!)ключ будет достаточно надежным.Вы должны включить процесс, посредством которого вы также часто поворачиваете клавиши.Это требует больше работы по перераспределению ключей, но снижает риск потери ключей.

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

Если ваши контейнеры работают на вычислительной службе Google Cloud Platform (App Engine, Compute, Kubernetes, Run), учетные данные приложения по умолчанию могут использовать учетную запись службы ресурса (без ключа).

Для других типовучетные данные (насколько мне известно, не учетные записи служб Google), вы также можете рассмотреть ключевые службы управления, включая Cloud KMS, HashiCorp Vault.

...