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

от автора

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

В Яндекс Браузере для организаций есть широкие возможности по управлению политиками доступа пользователям к ресурсам в интернет и внутри организации. Часто заказчики (ИБ, Админы) хотят исключить возможность входа пользователей в сервисы Яндекс 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_nameproxy.domain.ru;         ssl_certificatepath/certificate.pem;         ssl_certificate_keypath/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


ссылка на оригинал статьи https://habr.com/ru/articles/934192/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *