В V7 я пытался «перенести» несколько bash/javascript скриптов, которые мы используем. Большинство из них просто обращаются к разным REST API. Пользуюсь RouterOS скриптом с /tool/fetch, чтобы повторить часть из них, так как запускать их прямо на роутере иногда удобнее для некоторых задач.
Проблема в том, что для некоторых REST API нужны «apikey» или «token» — по сути, пароли для доступа к API. Например:
:global apikey [???????]
/tool/fetch url=... http-header-field="Authorization: bearer $apikey" ...
Поскольку я просто экспериментирую с этим подходом, сделал их глобальными переменными, которые загружаются скриптом — и это, конечно, работает. Но с точки зрения безопасности — не очень, ведь код скрипта хорошо виден в конфигурации (например, через :export или другими способами). Даже если хранить их в файле в /files, насколько я знаю, нельзя ограничить доступ к файлам только для одного пользователя.
Для таких сервисов как AWS и других API можно использовать X.509 сертификаты — которые поддерживаются в /tool/fetch под V7, например:
/tool/fetch url=... certificate=...
Но не все REST API поддерживают клиентские X.509 сертификаты.
Короче… хочу «спрятать» внешний REST API apikey/token/пароль в Mikrotik так, чтобы он существовал после перезагрузки, но не отображался при «:export». Похоже на то, как работают сертификаты (например, при «backup» они сохраняются, а при «:export» — нет), только здесь речь о строках длиной 8-64 символа, а не о сертификатах.
Или, аналогично концепции «encrypted-secrets», которые хранят приватные данные для GitHub репозиториев/actions и т.п. (чтобы не держать пароли в файлах/коде).
В общем, интересно, есть ли у кого-нибудь какие-то «клёвые» решения на этот счёт?
Проблема в том, что для некоторых REST API нужны «apikey» или «token» — по сути, пароли для доступа к API. Например:
:global apikey [???????]
/tool/fetch url=... http-header-field="Authorization: bearer $apikey" ...
Поскольку я просто экспериментирую с этим подходом, сделал их глобальными переменными, которые загружаются скриптом — и это, конечно, работает. Но с точки зрения безопасности — не очень, ведь код скрипта хорошо виден в конфигурации (например, через :export или другими способами). Даже если хранить их в файле в /files, насколько я знаю, нельзя ограничить доступ к файлам только для одного пользователя.
Для таких сервисов как AWS и других API можно использовать X.509 сертификаты — которые поддерживаются в /tool/fetch под V7, например:
/tool/fetch url=... certificate=...
Но не все REST API поддерживают клиентские X.509 сертификаты.
Короче… хочу «спрятать» внешний REST API apikey/token/пароль в Mikrotik так, чтобы он существовал после перезагрузки, но не отображался при «:export». Похоже на то, как работают сертификаты (например, при «backup» они сохраняются, а при «:export» — нет), только здесь речь о строках длиной 8-64 символа, а не о сертификатах.
Или, аналогично концепции «encrypted-secrets», которые хранят приватные данные для GitHub репозиториев/actions и т.п. (чтобы не держать пароли в файлах/коде).
В общем, интересно, есть ли у кого-нибудь какие-то «клёвые» решения на этот счёт?
