Назад | Перейти на главную страницу

Скопируйте данные из GCP-экземпляра как локального аккаунта в корзину Google Cloud Storage.

Я успешно добавил возможность подключаться и передавать файлы из экземпляра GCP, используя мою собственную локальную учетную запись на экземпляре GCP, используя, добавив доступ API для учетной записи службы Google Cloud.

У меня есть служба NGINX, работающая на экземпляре GCP, и она работает с привилегиями локальной учетной записи (nginx) на этом экземпляре. Однако как пользователь nginx я не могу использовать команду gsutil. Я пытаюсь перенести файлы журнала из экземпляра GCP в корзину для безопасного хранения, чтобы я мог освободить место на экземпляре.

Теперь к моему вопросу: как я могу настроить разрешения или среду, чтобы пользователь, чтобы локальные учетные записи на экземплярах GCP могли использовать команды gsutil и / или gcloud (или аналогичные) для копирования данных из экземпляра в корзину с помощью GCP сервисный аккаунт?

Экземпляр GCE будет аутентифицировать вызовы API, используя учетная запись службы, который абстрагируется от любого локального пользователя на сервере - учетные данные по существу встроены в метаданные экземпляра. Вы не должна использовать дополнительные учетные записи служб или учетные данные пользователя в экземпляре GCE - скорее всего, именно поэтому ваш личный пользователь может передавать файлы, а nginx пользователь нет.

Чтобы ваш экземпляр мог записывать данные в корзину GCS, вам, скорее всего, потребуется запустить экземпляр с областью чтения / записи GCS (документы) - доступ к GCS по умолчанию отключен.

Обратите внимание: если вы создали свой экземпляр, используя шаблон экземпляра, их нельзя редактировать, поэтому шаблон необходимо будет уничтожить и воссоздать, а любые экземпляры, основанные на старом шаблоне, также необходимо будет повторно подготовить.

Я решил проблему, добавив группу и предоставив .config и .gsutil каталоги с соответствующими разрешениями для группы, а затем добавили nginx пользователя в группу. Но на самом деле я предпочел не так решать эту проблему - но это помогает.

Некоторые идеи о том, что может быть неправильным:

  • Конфигурация, указывающая gsutil на использование учетных данных приложения по умолчанию, находится в /etc/boto.cfg. Убедитесь, что ваш пользователь nginx может читать этот файл.
  • Настройки gsutil можно изменить. Посмотрите, есть ли переменная среды BOTO_CONFIG или файл ~ nginx / .boto.cfg, заменяющий настройки по умолчанию.

Я считаю, что любой пользователь экземпляра GCE должен иметь возможность использовать gsutil. Учетные данные предоставляются через HTTP-вызов. Вы можете проверить, что вы их получаете, сделав sudo пользователем nginx и запустив это:

curl "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token" \
-H "Metadata-Flavor: Google"