Каков эквивалент вызова api для этой команды? gcloud auth activate-service-account

#google-cloud-platform #google-cloud-auth

#google-cloud-platform #google-cloud-auth

Вопрос:

Каковы эквивалентные вызовы rest api для них?

 gcloud auth activate-service-account --key-file=myvaultkey.json

export GOOGLE_OAUTH_ACCESS_TOKEN=$(gcloud auth print-access-token)

 

Ответ №1:

См. раздел Использование OAuth2 для приложений между серверами

Вы можете gcloud показать базовые вызовы REST API, добавив --log-http к любой команде.

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

Я рекомендую вам использовать один из SDK от Google, а не делать это с помощью базовых API. На странице документации, на которую ссылается выше, объясняются оба подхода, и вы увидите, что использование SDK не только тривиально, но и обеспечивает надежную гарантию того, что вы правильно (надежно) реализуете поток.

Комментарии:

1. «Корпоративная» ситуация, в которой я нахожусь, ограничивается только предоставленным хранилищем gcpkey. json для gcp-проекта. Однако мне нужно обновить эти токены в давно запущенном java-приложении (это означало бы использование api-вызова, а не cli, верно?).

2. Интересный вопрос. Да, я так думаю. Единственной альтернативой было бы извлечение скриптом ключа из хранилища для аутентификации gcloud с его помощью. Это зависит от корпоративной политики, но я предполагаю (по понятным причинам), что они не хотят, чтобы вы сохраняли ключи локально. Я думаю, вам следует рассмотреть возможность использования SDKs>> Вызовов REST API. Вероятно, существует (я им не пользовался) механизм, который поддерживает извлечение ключа из хранилища и передачу его в SDK без сохранения его на диске.

3. «без сохранения на диске» — Спасибо за вашу помощь. Я попробую ‘—log-http’ и посмотрю, смогу ли я выполнить обновление токена и т. Д. Без сохранения ключа на диске. Пока я вижу, что sdk полагается только на переменную env GOOGLE_APPLICATION_CREDENTIALS , GOOGLE_OAUTH_ACCESS_TOKEN …

4. Существует средство, называемое учетными данными приложения по умолчанию (или «ADC»). Это очень полезно. Когда код выполняется в службе GCP (compute), служба может автоматически получать АЦП (например, из службы метаданных в Compute Engine). Когда код выполняется с помощью GCP (например, локально), ADCs ищет GOOGLE_APPLICATION_CREDENTIALS ключ учетной записи службы. Смотрите: cloud.google.com/docs/authentication/production Вам не нужно использовать АЦП с SDK. Вы можете просто указать местоположение ключа и указать SDK для получения учетных данных таким образом

5. Я предполагаю (но не пробовал), что вы можете объединить SDK от Google, например, с хранилищем Hashicorp (и другими хранилищами), чтобы ваш код получал ключ из хранилища, а затем передавал его клиенту SDK, чтобы клиент мог аутентифицироваться без необходимости сохранения файла на диске.