Я успешно добавил возможность подключаться и передавать файлы из экземпляра 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
пользователя в группу. Но на самом деле я предпочел не так решать эту проблему - но это помогает.
Некоторые идеи о том, что может быть неправильным:
/etc/boto.cfg
. Убедитесь, что ваш пользователь nginx может читать этот файл.Я считаю, что любой пользователь экземпляра GCE должен иметь возможность использовать gsutil
. Учетные данные предоставляются через HTTP-вызов. Вы можете проверить, что вы их получаете, сделав sudo пользователем nginx и запустив это:
curl "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token" \
-H "Metadata-Flavor: Google"