Решение должно быть легким, так как оно будет использоваться для загрузки
изображения внутри образа докера, отсюда и требование скручивания.
Это расплывчатое требование. Что такое легкий? Нет внешних библиотек, все написано на ассемблере, должно умещаться в 1 КБ и т. Д.
Ведро и объект GCP должны быть безопасными, а не общедоступными.
Это нормальное требование. За некоторыми исключениями (статическое хранилище файлов для веб-сайтов и т. Д.) Вы хотите, чтобы ваши корзины были частными.
Мне нужен "долгоживущий" билет / ключ / client_ID.
Мой совет - перестать думать о «долгосрочных ключах». Тенденция в безопасности заключается в реализации краткосрочных ключей. В Google Cloud Storage семидневный период считается долгосрочным. 3600 секунд (один час) - это норма почти везде в Google Cloud.
Для Google Cloud Storage у вас есть несколько вариантов. Вы не указали среду, поэтому я включу как учетные данные пользователя, учетную запись службы, так и доступ на основе предварительно назначенного URL-адреса.
Учетные данные пользователя
Вы можете пройти аутентификацию с использованием учетных данных пользователя (например, username@gmail.com) и сохранить маркер обновления. Затем, когда требуется токен доступа, его можно сгенерировать из токена обновления. В своей статье на веб-сайте об изучении языка Go я написал в День № 8 программу, которая реализует Google OAuth, сохраняет необходимые учетные данные и создает токены доступа и идентификационные токены, как требуется, без необходимости дальнейшего входа в систему. Комментарии в исходном коде должны помочь вам понять, как это делается. https://www.jhanley.com/google-cloud-and-go-my-journey-to-learn-a-new-language-in-30-days/#day_08
Это выбор, если вам нужно использовать учетные данные пользователя. Этот метод более сложный, требует защиты файла секретов, но даст вам обновляемые долгосрочные токены.
Учетные данные учетной записи службы
Файлы ключей JSON служебной учетной записи - это стандартный метод аутентификации и авторизации между сервисами. Используя эти ключи, генерируются токены доступа, действительные в течение одного часа. Когда они истекают новые создаются. Максимальное время составляет 3600 секунд.
Это выбор, если вы программно обращаетесь к облачному хранилищу с помощью программ, находящихся под вашим контролем (файл JSON служебной учетной записи должен быть защищен).
Presigned-адрес
Это стандартный метод предоставления доступа к частным объектам Google Cloud Storage. Этот метод требует URL и генерирует подпись с истечением срока действия, так что объекты могут быть доступны в течение определенного периода времени. Одно из ваших требований (которое нереально) заключается в том, что вы не хотите использовать исходные URL-адреса. Максимальное время составляет семь дней.
Это выбор, если вам необходимо предоставить доступ третьим сторонам для доступа к вашим объектам облачного хранилища.
Доступ на основе IAM
Этот метод не использует жетоны доступа, вместо этого он использует жетоны идентификации. Разрешения назначаются корзинам и объектам облачного хранилища, а не учетной записи участника IAM. Этот метод требует четкого понимания того, как работают удостоверения в облачном хранилище Google, и является будущим направлением безопасности Google. Это означает, что доступ ко многим службам будет контролироваться на основе услуг / объектов, а не с помощью ролей, которые предоставляют широкий доступ ко всей службе в проект. Я говорю об этом в моей статье о Identity Based Access Control
Резюме
Вы не четко определили, что будет иметь доступ к облачному хранилищу, как хранятся секреты, нужно ли защищать секреты от пользователей (общедоступный доступ по URL) и т. Д. Выбор зависит от ряда факторов.
Если вы читаете последние статьи на моем веб-сайте, я обсуждаю ряд передовых методов управления доступом на основе идентификационных данных.Эти функции начинают появляться в ряде сервисов Google в командах бета-уровня.Это включает в себя Cloud Scheduler, Cloud Pub / Sub, Cloud Functions, Cloud Run, Cloud KMS и многое другое.Облачное хранилище поддерживает доступ на основе удостоверений, который вообще не требует никаких разрешений - удостоверение используется для управления доступом.