Skip to content

Плагин: Yandex Cloud ​

Облако из хаба nkt: ВМ, диски и снимки, группы безопасности, Object Storage, Cloud DNS, управляемые PostgreSQL и MySQL, баланс. ВМ можно добавить и как хост nkt — с находками и действиями.

Yandex Cloud в хабе

РазделЧто
ВМкаталог, зона, состояние, ресурсы, адреса; включить, выключить, перезагрузить, снимок загрузочного диска
Диски и снимкик чему подключены; снимок любого диска; удалить снимок
Группы безопасностивходящие правила, открытые всему интернету (0.0.0.0/0); опасные порты (22, 3389, БД) — ⚠
Object Storageбакеты: публичный ли (чтение, список) и размер
Cloud DNSзоны и записи; для хаба — provides: dns: имена Traffic Fly, сайтов, автоимена (чужие значения у тех же имён не трогаются)
Базы данныхManaged PostgreSQL и MySQL: окружение, состояние, здоровье
Балансплатёжного аккаунта (если задан)

ВМ как хост nkt: «Хосты» → «Добавить устройство» → «ВМ Yandex Cloud» → имя ВМ. Находки: ВМ выключена, прерываемая, порт 22/3389/БД открыт всему интернету, публичный адрес без групп безопасности, у загрузочного диска нет снимка за 7 дней. Конфигурация (ресурсы, платформа, диски, группы, метки, имена ключей метаданных — без значений) хранится версиями с диффом.

Сценарии: yc vm start|stop|restart ИМЯ, yc snapshot ИМЯ-ВМ, yc dns set ИМЯ ТИП ЗНАЧЕНИЕ[,…] [ttl N], yc dns rm ИМЯ ТИП. MCP: yc_*.

Доступ ​

yc iam service-account create --name nkt
yc resource-manager folder add-access-binding <каталог> --role viewer --service-account-name nkt   # смотреть
yc resource-manager folder add-access-binding <каталог> --role editor --service-account-name nkt   # и управлять
yc iam key create --service-account-name nkt -o key.json
base64 -w0 key.json

Для DNS достаточно dns.editor, для баланса — billing.accounts.viewer на платёжный аккаунт. Чем меньше ролей, тем лучше: viewer — только смотреть.

Поставить ​

«О системе» → «Плагины» → «Установить на хост» → Yandex Cloud — машина хаба или любой хост с интернетом (нужен openssl: им плагин подписывает JWT для входа). Настройки: ключ (строка base64 из base64 -w0 key.json, секрет), каталоги (id через запятую), платёжный аккаунт (по желанию). Служба nkt-plugin-yc, 127.0.0.1:9240.

Ключ хранится только в настройках службы (0600) на её хосте; IAM-токен — в памяти плагина, не дольше часа.

Проверка ​

python3 -I examples/yandex-cloud/deploy/test_plugin.py — плагин против поддельного API Yandex Cloud; подпись JWT (PS256) проверяет настоящий openssl по открытому ключу. Его же запускает go test ./examples.