Использование токена сервисного аккаунта ВМ для работы с API
Привяжите сервисный аккаунт к виртуальной машине, чтобы безопасно получать и автоматически обновлять токены из метаданных ВМ. Это позволит избежать хранения ключей или токенов на диске ВМ и упростит автоматизацию процессов в облаке. Токен поступит в метаданные ВМ сразу после привязки сервисного аккаунта.
Чтобы узнать, как использовать токен сервисного аккаунта для запросов к API:
- Добавьте сервисный аккаунт в настройки виртуальной машины.
- Получите информацию о сервисном аккаунте из метаданных виртуальной машины.
Если вам больше не нужны созданные ресурсы, удалите их.
Примечание
Шаги настройки описаны для проекта project-sa-vm с использованием веб-консоли, MWS CLI и запросов к API.
Подготовка MWS Cloud Platform к работе
Создайте сервисный аккаунт с именем
service-accountи базовой рольюeditor.Чтобы сделать это, ваша роль должна быть не ниже
iam.serviceAccount.admin.Вы также можете использовать существующий сервисный аккаунт, в этом случае вам будет достаточно роли
iam.serviceAccount.user(входит в рольeditor).Примечание
Для виртуальной машины и MWS CLI можно использовать один и тот же сервисный аккаунт.
Создайте виртуальную машину с именем
vm-ca-testи сгенерированным ключом SSH. Вы можете выбрать сервисный аккаунтservice-accountпри создании ВМ или добавить его позже.Для более комфортной работы с выводом команд установите утилиту jq.
Если вы планируете использовать MWS CLI:
6.1. Создайте авторизованный ключ для сервисного аккаунта
service-account.6.2. Установите и настройте MWS CLI.
1. Добавьте сервисный аккаунт в настройки виртуальной машины
2. Получите информацию о сервисном аккаунте
Подключитесь по SSH к виртуальной машине с именем
vm-ca-test.Привязка сервисного аккаунта к ВМ может занять несколько минут. Чтобы убедиться, что операция привязки завершена, получите информацию о сервисном аккаунте:
bashcurl -s -H "Metadata-Flavor: Google" \ http://169.254.169.254/computeMetadata/v1/instance/service-accounts/?recursive=true | jqОжидаемый вывод команды:
bash{ "<имя проекта>/serviceAccounts/<имя сервисного аккаунта>": { "aliases": [ "default" ] } }
3. Получите токен сервисного аккаунта
Получите токен для сервисного аккаунта:
curl -s -H "Metadata-Flavor: Google" \
http://169.254.169.254/computeMetadata/v1/instance/service-accounts/default/token | jqВывод команды содержит тело токена, срок его действия в секундах, и тип токена:
{
"access_token": "ey...Dw",
"expires_in": 43144,
"token_type": "Bearer"
}4. Выполните запрос к API с помощью токена сервисного аккаунта
Добавьте токен в переменные окружения виртуальной машины:
bashTOKEN=$(curl -s -H "Metadata-Flavor: Google" http://169.254.169.254/computeMetadata/v1/instance/service-accounts/default/token \ | jq -r '.access_token')Выполните любой запрос к API, например, получите список ВМ в проекте:
bashcurl -H "Authorization: Bearer $TOKEN" \ https://compute.mwsapis.ru/compute/v1/projects/project-sa-vm/virtualMachinesВывод команды
json{ "items": [ { "kind": "compute/v1/virtualMachine", "metadata": { "id": "projects/project-sa-vm/virtualMachines/vm-ca-test", ... }, ... }, { "kind": "compute/v1/virtualMachine", "metadata": { "id": "projects/project-sa-vm/virtualMachines/vm-hwblua", ... }, ... } ] }
Удалите ресурсы
Некоторые ресурсы тарифицируются. Чтобы за их использование не списывалась плата: