Вход в Яндекс 360 только через Браузер для организаций
Часто требуется исключить вход пользователей в сервисы Яндекс 360 через другие браузеры, т. к. это позволяет сотруднику обойти контур безопасности компании. Политики дают возможность ограничить скачивание или загрузку файлов, накладывать водяные знаки и многое другое. Также можно ограничить вход в сервисы Яндекс 360 только корпоративными аккаунтами и исключить личные учетные записи.
Варианты решения
Сейчас в Яндекс Браузере есть несколько вариантов ограничить вход на ресурсы только корпоративным Браузером. Они сводятся к тому, что Браузер может добавлять специальные заголовки (статические и динамические) в запросы.
При работе с Яндекс 360 можно проверять наличие заголовков при входе пользователей через SSO. В процессе аутентификации в сервисе Яндекс пользователь перенаправляется в IDP (например, Keycloak или ADFS). Перед тем, как пропустить пользователя, можно проверить наличие необходимых заголовков.
Пример реализации
Пример использования статического заголовка в Браузере и с использованием SSO + Keycloak:
- Пользователь авторизуется в сервисе Яндекс 360 со своей корпоративной почтой.
- Яндекс 360 перенаправляет пользователя на Nginx, работающий в режиме прокси, в соответствии с настройками SSO.
- Nginx проверяет наличие заголовка в HTTP-запросе. При соответствии его определенному значению, проксирует запрос в Keycloak.
- Если заголовка нет или его значение неверное, отображается страница с ошибкой.
- При успешной аутентификации в Keycloak пользователь перенаправляется обратно в Яндекс 360 и работает в сервисах.
Потребуются следующие настройки:
- Настроить Keycloak для аутентификации пользователей Яндекс 360.
- Настроить Nginx для проксирования запросов в Keycloak и проверки заголовков Браузера.
- Настроить Браузер в Консоли управления для добавления заголовка.
- Настроить параметры 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
.
4. Настройка SSO в Яндекс 360
В Яндекс 360 необходимо настроить SSO по документации.
В настройках SSO параметры URL страницы входа и Издатель поставщика удостоверений должны указывать на Nginx. В данном примере это https://proxy.domain.ru
.
Результат
Пользователи могут войти в сервисы Яндекс 360 только с использованием Яндекс Браузера для организаций. Можно принудительно применять политики безопасности для всех пользователей сервиса (ограничения действий, интеграции с SIEM и DLP и другое).
Требуется расширенная версия Яндекс Браузера и тариф Яндекс 360 с поддержкой SSO.
Полезные ссылки