Перейти к основному содержимому

Приложения

Представьте: у вас есть внутренний сервис — админка, staging, Grafana, внутренний API — и вы хотите дать к нему доступ только нужным людям, из нужных стран, с подтверждением через корпоративный SSO. Приложения в Tuna решают именно эту задачу.

Приложения — это защищённый reverse proxy, который проверяет каждый входящий запрос: кто пользователь, как он аутентифицировался, откуда пришёл и имеет ли право видеть запрашиваемый путь.

apps-main

Что можно сделать:

  • закрыть любой веб-сервис авторизацией за пару минут, без изменений в коде самого сервиса;
  • гранулярно разграничить доступ — например, /admin/* только для администраторов из России, а /api/health открыть без аутентификации;
  • подключить корпоративный SSO (Google, Yandex, GitHub, GitLab, VK, любой OIDC-совместимый провайдер);
  • требовать MFA или ручное одобрение администратора для чувствительных операций;
  • опубликовать сервис без публичного IP через туннель — достаточно запустить одну команду;
  • выдать машинный доступ через сервисные токены для CI/CD, мониторинга и автоматизации.

Режимы работы

При создании приложения нужно выбрать, как Tuna будет доставлять трафик до вашего сервиса.

Прокси

Tuna нода обращается к upstream напрямую по URL. Этот режим подходит, когда сервис уже доступен по сети — запущен в Kubernetes, в облачной VM или просто в той же сети, что и нода.

Создание приложения в режиме прокси

Можно указать несколько upstream-адресов — трафик будет распределяться по весам. Например, при весах 3 и 1 первый upstream получит 75% запросов, второй — 25%.

Туннель

Бэкенд сам подключается к Tuna через клиент-агент. Идеальный вариант, когда сервис без публичного IP — за NAT, на dev-машине или в корпоративной сети.

Создание приложения в режиме туннеля

После создания приложения в режиме туннеля на странице деталей появится готовая команда:

Команда для запуска туннеля
tuna app <имя> --url=http://127.0.0.1:8080

Запустите её на машине с сервисом — клиент установит исходящее соединение к ноде, и приложение станет доступно через защищённый домен.

подсказка

Для быстрой проверки без реального бэкенда добавьте флаг --hello-world — Tuna запустит встроенный тестовый сервер.

Создание приложения

подсказка

Этот раздел доступен Основателю, Владельцам и Администраторам.

Перейдите в раздел Приложения и нажмите + Добавить приложение.

ПолеОписание
ИмяУникальное имя внутри команды, будет использоваться в CLI
РежимПрокси или Туннель
UpstreamsАдреса бэкенда — только для режима Прокси
ДоменДомен, через который приложение будет доступно пользователям

Основные параметры

После создания откроется страница деталей приложения с основными настройками.

Основные параметры приложения
  • Длительность сессии — сколько живёт сессия после входа. По истечении пользователь проходит логин заново. По умолчанию — 24 часа.
  • Таймаут неактивности — сессия сгорает, если пользователь не делал запросов дольше указанного времени. По умолчанию отключено.

Провайдеры

Здесь выбираются способы входа в приложение. Можно комбинировать несколько вариантов — пользователь увидит их все на странице входа.

Провайдеры авторизации
  • Email OTP — пользователь вводит email и получает одноразовый код. Удобно для внешних подрядчиков и разовых доступов.
  • Аккаунты tuna.am — вход через личный аккаунт на tuna.am.
  • Провайдеры команды — внешние Identity Provider (Google, Yandex, GitHub, GitLab, VK, любой OIDC), настроенные на странице Провайдеры. Снимите галочку «Все провайдеры команды», чтобы выбрать конкретные.
Список провайдеров команды

Обзор

Блок Обзор на странице деталей наглядно визуализирует текущую конфигурацию: слева — кто может войти, в центре — через какие политики проходит запрос, справа — куда направляется трафик.

Обзор приложения

Это удобный способ одним взглядом убедиться, что всё настроено как задумано.

Страница входа

Когда пользователь открывает защищённое приложение без активной сессии, он попадает на страницу входа. Набор кнопок формируется автоматически из подключённых провайдеров.

Страница входа

Если в команде настроены внешние провайдеры, каждый из них отображается отдельной кнопкой «Войти через ...»:

Страница входа с провайдерами
к сведению

Внешний вид страницы входа можно кастомизировать — добавить логотип через настройки приложения.

Пользовательский каталог

Участники команды видят все доступные им приложения в виде карточек на странице Приложения. Клик по карточке открывает приложение в новой вкладке.

В боковом меню пользователю также доступны Запросы доступа и Сессии — для управления собственными запросами и активными сессиями.

Аудит

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

Аудит-лог событий приложений