Как пройти аутентификацию в google-cloud-sdk, используя учетную запись пользователя в неинтерактивном режиме

Когда я аутентифицируюсь с помощью service-account.json, я не могу получить доступ к проектам, т.е. команда 'gcloud projects list' приводит к

В списке 0 товаров.

Настройка проекта gcloud с помощью команды 'gcloud config set project my-project' приводит к:

ВНИМАНИЕ: у вас нет доступа к проекту [my-project] или он не существует.

Но этот проект присутствует в моем service-account.json. Я пытаюсь получить учетные данные кластера GKE для создания записи kubeconfig. 'кластеры контейнеров gcloud get-credentials my-cluster --zone = us-central1-a'

ОШИБКА: (gcloud.container.clusters.get-credentials) ResponseError: code = 403, message = Требуемые разрешения container.clusters.get для проектов / мой-проект / зоны / us-central1-a / cluster / my - кластер.

Когда я вхожу в GCP с помощью gcloud init и вхожу в систему с учетной записью пользователя, все эти шаги дают успешные результаты. Но как мне авторизовать учетную запись пользователя, не открывая браузер. Я не могу использовать флаг --console-only, так как он по-прежнему требует скопировать URL-адрес и открыть браузер. Я хочу автоматизировать полный процесс аутентификации в учетной записи пользователя, используя только скрипты

ПРИМЕЧАНИЕ. Кластер GKE my-cluster был создан в рамках my-project и был создан мной.


person user13108996    schedule 07.09.2020    source источник


Ответы (1)


Я подозреваю (!?) У вашей учетной записи службы недостаточно прав (предоставленных через роли).

Чтобы перечислить проекты (gcloud projects list), учетная запись службы должна иметь (как минимум) resourcemanager.projects.get (для каждого из проектов) в списке. Видеть:

https://cloud.google.com/resource-manager/docs/access-control-proj#permissions_and_roles

Чтобы получить разрешения кластера, он должен иметь container.clusters.get (см. полный список).

Хорошая роль, которая включает в себя и то, и другое - roles/container.clusterAdmin)

Учетные записи служб - это непросто. Они одновременно являются ресурсами (частицами) и идентичностями (волнами) и ведут себя по-разному в зависимости от контекста.

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

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

IAM-документация от Google достойна.

person DazWilkin    schedule 07.09.2020