Skip to main content

Приложения

Представьте: у вас есть внутренний сервис — админка, 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

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

tip

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

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

tip

This section is available to the Founder, Owners and Administrators.

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

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

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

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

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

Провайдеры​

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

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

Обзор​

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

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

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

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

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

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

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

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

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

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

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

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

Аудит​

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

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