Как стать автором
Поиск
Написать публикацию
Обновить

Вход в Яндекс 360 только через Яндекс Браузер для организаций

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров377

Какие задачи решаем?

В Яндекс Браузере для организаций есть широкие возможности по управлению политиками доступа пользователям к ресурсам в интернет и внутри организации. Часто заказчики (ИБ, Админы) хотят исключить возможность входа пользователей в сервисы Яндекс 360 через браузер, отличный от Яндекс Браузер, т.к. это позволяет применять политики браузера для всех пользователей в Яндекс 360 Политики включают в себя возможность ограничить скачивание или загрузку файлов, например, в Яндекс Диск, накладывать водяные знаки в сервисе Яндекс Документы и многое другое. Так же можно ограничить вход в сервисы Яндекс 360 только корпоративными аккаунтами и исключить личные учетные записи.

Варианты решения

Сейчас в Яндекс Браузере есть несколько вариантов ограничить вход на ресурсы только корпоративным браузером. Они отличаются сложностью реализации, но сводятся к тому, что браузер может добавлять специальные заголовки в запросы. Есть вариант добавления статических заголовков и динамических. При работе с Яндекс 360 можем проверять наличие заголовков при входе пользователей через SSO. В процессе аутентификации в сервисе Яндекс, пользователь перенаправляется в IDP (например Keycloak или ADFS) и перед тем, как пропустить пользователя, мы можем проверить наличие необходимых заголовков

Пример реализации

Рассмотрим на примере использования статического заголовка в браузере и с использованием SSO + Keycloak Схема реализации:

  1. Пользователь заходит в сервис Яндекс 360 со своей корпоративной почтой

  2. Яндекс 360 перенаправляет пользователя на Nginx, работающий в режиме прокси, в соответствии с настройками SSO

  3. Nginx проверяет наличие заголовка в HTTP запросе и при соответствии его определенному значению, проксирует запрос в Keycloak

  4. В случае если заголовка нет или его значение неверное, показываем пользователю страницу с ошибкой

  5. При успешной аутентификации в Keycloak пользователь перенаправляется обратно в Яндекс 360 и работает в сервисах

Схема проверки заголовков
Схема проверки заголовков

Потребуется сделать следующие настройки:

  1. Настроить Keycloak для аутентификации пользователей Яндекс 360

  2. Настроить Nginx для проксирования запросов в Keycloak и проверки заголовков браузера

  3. Настроить браузер в консоли управления для добавления заголовка

  4. Настроить параметры SSO в организации Яндекс 360 для аутентификации пользователей через Keycloak

1. Настройка Keycloak для аутентификации пользователей

  • Делаем базовые настройки в соответствии с документацией Keycloak

  • Настраиваем параметры Client в соответствии с рекомендациями

  • Далее при настройке Realm в Keycloak в качестве Frontend URL указываем имя Nginx proxy:

    • Например: Keycloak доступен по адресу https://kc.domain.ru, сервер с Nginx доступен по адресу https://proxy.domain.ru, тогда в качестве Frontend URL необходимо указать https://proxy.domain.ru

2. Настройка Nginx для проверки браузера

Тут опишу параметры, которые относятся именно к настройкам проксирования на Keycloak

Файл nginx.conf

http {
    server {
        listen 443 ssl;
        server_name		proxy.domain.ru;
        ssl_certificate		path/certificate.pem;
        ssl_certificate_key	path/private.pem;

# Оставляем корневой location, чтобы можно было добраться до админки Keycloak
# из любого браузера (на усмотрение, удобно для тестирования)
        location / {
            proxy_pass https://kc.domain.ru:8443/;
        }

# Все SAML запросы проверяем на наличие заголовка. Путь может отличаться, если
# используем не master realm, а какой-то другой 

        location /realms/master/protocol/saml {

# Добавляем переменную, чтобы можно было производить дополнительные проверки,
# например наличие сертификата
            set $allowlogin "0";

            if ($http_X_Yandex_CustomHeader = "SecretData") {
                set $allowlogin "1";
            }

# В случае верного заголовка проксируем запрос в Keycloak
            if ($allowlogin = "1") {
                proxy_pass https://kc.domain.ru:8443;
            }

# Если заголовок неправильный, то возвращаем ошибку. Тут можно использовать
# дополнительную логику, чтобы возвращать страницу с информацией для 
# пользователя, а не ошибку
            if ($allowlogin = "0") {
                return 421;
            }
        }
# Добавляем берем параметры проксирования из другого файла
  include proxy.conf;
  }
} 

Файл proxy.conf

proxy_http_version                 1.1;
proxy_cache_bypass                 $http_upgrade;

# Proxy SSL
proxy_ssl_server_name              on;

# Proxy headers
proxy_set_header Upgrade           $http_upgrade;
proxy_set_header Connection        Upgrade;
proxy_set_header X-Real-IP         $remote_addr;
proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host  $host;
proxy_set_header X-Forwarded-Port  $server_port;

# Proxy timeouts
proxy_connect_timeout              60s;
proxy_send_timeout                 60s;
proxy_read_timeout                 60s;

3. Настройка заголовка в консоли браузера

  • Для браузера задать политику YandexCustomHeader равным значению проверяемому в Nginx, например SecretData Подробнее про настройку политики в справке браузера

  • Так же можно настроить политику YandexCustomHeaderSettings, которая разрешает отправку заголовка, только на определенные URL, в нашем случае это будет https://proxy.domain.ru

  • Так же добавлю, что этот заголовок и его значение не отображаются ни в инструментах разработчика (их, кстати, тоже можно отключить), ни в свойствах browser://policy

    Политики отвечающие за "кастомный" заголовок
    Политики отвечающие за «кастомный» заголовок
Политики отвечающие за «кастомный» заголовок
Значение заготовка скрыто на странице browser://policy

4. Настройка SSO в организации Яндекс 350

В организации Яндекс 360 необходимо настроить SSO в соответствии с документацией.

В настройках SSO URL страницы входа и Издатель поставщика удостоверений, должны указывать на Nginx (в нашем примере proxy.domain.ru

Настройка SSO в админке Яндекс 360
Настройка SSO в админке Яндекс 360

Что получаем в результате

  • Пользователи могут зайти в сервисы Яндекс 360 только с использованием Яндекс Браузер для организаций

  • Соответственно можно принудительно применять различные политики безопасности для всех пользователей сервиса (ограничения действий, интеграции с SIEM и DLP и многое другое)

  • Из недостатков: требуется расширенная (платная) версия Яндекс Браузер и тариф Яндекс 360 с поддержкой SSO

Теги:
Хабы:
-3
Комментарии0

Публикации

Ближайшие события