Создание ключа учетной записи службы в GCP с использованием API остальных - PullRequest
0 голосов
/ 01 октября 2019

Здравствуйте. Я использую ниже rest api commamd для создания ключа учетной записи службы в GCP. Выполнение команды из облачной оболочки, хотя не уверен, что делает это правильно.

curl POST https://iam.googleapis.com/v1/projects/project_iD/serviceAccounts/serviceaccountID.iam.gserviceaccount.com/keys?key=key, созданный с помощью учетных данных ключа API

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

curl: (6) Не удалось разрешить хост: POST {"error": {"code": 403, "message": "Требуется разрешение iam.serviceAccountKeys.list для выполнения этой операциина служебной учетной записи projects/pserviceaccountID@dev.iam.gserviceaccount.com. "," status ":" PERMISSION_DENIED "}}

Ответы [ 2 ]

1 голос
/ 01 октября 2019

Ваша ошибка состоит из двух частей. Первый:

curl: (6) Could not resolve host: POST

говорит о том, что команда curl не может найти имя хоста "POST", поскольку вы пропустили параметр -X, первая часть вашей команды должна выглядеть следующим образом:

curl -X POST

Далее, ваш URL не совсем правильный формат, так как не должно быть параметров URL (в данном случае это часть ?key=key), так как это запрос POST - будут включены параметры из API. в теле запроса.

Однако я подозреваю, что даже в этом случае у вас будет ошибка отказа в разрешении, поскольку curl не будет управлять аутентификацией и авторизацией oauth, которые необходимы для работы этого запроса - выэффективно отображаются в API как не прошедшие проверку подлинности. В этом случае я бы рекомендовал использовать одну из клиентских библиотек для выполнения запроса или использовать команду gcloud вместо curl. Они оба значительно упростят управление аутентификацией.

В документации по самому API есть примеры на C #, Go, Node, Python и других, посмотрите здесь: https://cloud.google.com/iam/reference/rest/v1/projects.serviceAccounts.keys/create

Документация по использованию gcloud для достижения этой цели приведена здесь: https://cloud.google.com/iam/docs/creating-managing-service-account-keys#iam-service-account-keys-create-gcloud

Тем не менее, если вы действительно хотите сделать это с помощью curl из облачной оболочки (где у вас есть аутентифицированный сеанс gcloud), это последовательностьнеобходимых вам команд:

ACCESS_TOKEN="$(gcloud auth print-access-token)"

curl -X POST --header "Authorization: Bearer ${ACCESS_TOKEN}" \
https://iam.googleapis.com/v1/projects/PROJECTID/serviceAccounts/SERVICEACCOUNTNAME@PROJECTID.iam.gserviceaccount.com/keys

Если вы не работаете на машине с облачной оболочкой, вам нужно сначала убедиться, что у вас есть gcloud auth:

gcloud auth login
0 голосов
/ 01 октября 2019

Похоже, что ваша учетная запись службы, которая делает запрос, не имеет необходимых разрешений. Вам следует либо предоставить SA необходимые роли IAM, описанные в [1], либо вы можете использовать своего собственного пользователя, выполнив gcloud auth login user@email.com для совершения вызова.

Вам также понадобится ключ администратора учетной записи службы, поскольку у администратора SA нет iam.serviceAccountKeys.list [2].

[1] https://cloud.google.com/iam/docs/creating-managing-service-account-keys#required_permissions

[2] https://cloud.google.com/iam/docs/permissions-reference

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...