Существует несколько типов учетных данных приложения по умолчанию (ADC): учетная запись пользователя и служебная учетная запись и их варианты. Предупреждающее сообщение в вашем вопросе означает, что вы настроили интерфейс командной строки SDK с учетными данными пользователя (gcloud auth login
). Я рекомендую переключиться на учетные данные учетной записи службы.
Эта команда настроит интерфейс командной строки с учетной записью службы. Вам потребуется идентификатор вашего проекта и файл JSON учетной записи службы.
gcloud auth activate-service-account test@PROJECT_ID.iam.gserviceaccount.com --key-file=service_account.json
Я написал статью, в которой подробно рассказывается о настройке интерфейса командной строки:
Настройка Gcloud с помощьюУчетные данные учетной записи службы
Почему Google выдает предупреждение:
- Для авторизации учетных данных пользователя требуется больше усилий для внутренних служб Google.
- Для учетных данных учетной записи пользователя требуетсявзаимодействие с человеком для создания.
- Жетон обновления часто хранится программным обеспечением на клиенте или бэкэндах. Это создает дыру в безопасности.
- Программное обеспечение должно использовать межсерверную аутентификацию с ограниченными разрешениями (областями). Учетные данные пользователя обычно выдаются с слишком большим количеством разрешений для выполняемых вызовов API. Это опять-таки проблема безопасности.
- Компания Google решила, что учетные данные пользователя не смогут иметь области, необходимые для доступа ко многим службам Google Cloud Platform. Это очень очевидно при создании клиентов OAuth, и вы получаете большое предупреждение о проверке. Существует сильный риск , что Google прекратит предоставлять учетные данные пользователей для облачных сервисов. Лучше использовать поддерживаемый и официальный метод учетной записи службы и не сталкиваться с этой проблемой в будущем.
Однако, учитывая вышеизложенные подробности, ваш вариант использования предоставляет вашим пользователям учетные данные. Это не очень хорошая идея. Я бы продолжал использовать учетные данные пользователя, общаясь с вашим веб-интерфейсом. Ваш веб-интерфейс использует учетную запись службы, которую пользователь никогда не видит, и предоставляет окончательный доступ к службе (API).
[ОБНОВЛЕНИЕ]
Я только что заметил ваш комментарий о том, что вы разрабатываете свой собственный CLI. Без дополнительной информации о том, к каким проектам / службам будет обращаться этот CLI, вы могли бы рассмотреть возможность использования учетных данных пользователя, которые взаимодействуют с вашей службой, которая выдает пользователю токен доступа. Этот токен действителен только в течение одного часа. Вы можете поддержать обновление этого токена в своем коде. Это дает вам возможность использовать аутентификацию пользователя, контролировать использование учетной записи службы и при этом поддерживать хорошую безопасность. Обратите внимание, что я пытаюсь отвлечь вас от распространения файлов учетных записей служб непосредственно среди пользователей. Если эти пользователи являются вашими сотрудниками, это не проблема. Для людей, не находящихся под вашим контролем, подумайте внимательно.
[END UPDATE]
Я постараюсь предоставить подробную информацию и дать советы по вашим вопросам. Принимайте во внимание мои предыдущие комментарии, выбирая лучшую для вас стратегию.
В другом случае (учетные данные, относящиеся к учетной записи службы), я предполагаю, что мне придется дать инструкции каждому разработчику для выпуска файла json, которыйсоответствует учетной записи службы с тем же разрешением, что и его / ее.
Если бы я написал приложение, использующее учетные данные учетной записи службы, я бы создал метод для загрузки / установки учетных данных. Просто предоставьте файл и скажите им, чтобы сделать этот шаг в программе. Тем не менее, у вас есть проблема. Не стоит распространять одну и ту же учетную запись для всех пользователей. Как вы справляетесь с отзывом и т. Д.? Учетные записи службы Google Cloud Platform не предназначены для уникального распределения более чем нескольким десяткам или сотням пользователей на проект.
А как насчет процесса обновления?
СервисФайлы ключей JSON учетных данных не имеют срока действия. Срок действия токенов, созданных из учетной записи службы, истекает, но это управляется клиентскими библиотеками Google или в вашем собственном коде для их автоматического обновления.
Что происходит каждый раз, когда пользователь получает / отменяет некоторые разрешения? Как синхронизировать этот JSON?
Файл учетной записи службы не содержит разрешений. Они хранятся в Google Cloud IAM. После изменения ролей, назначенных учетной записи службы, они прозрачно применяются глобально в течение нескольких минут.