Инженерная аналитика для GitLab с самоуправлением через VPN
Безопасный шаблон для анализа частных данных доставки GitLab, когда размещенное приложение не может достичь сети клиента.
Поймите сетевые ограничения
Размещенный бэкэнд SaaS обычно не может вызвать экземпляр GitLab, который доступен только в корпоративной VPN или частной сети. Добавление каждого источника клиента в конфигурацию развертывания не масштабируется, а требование к клиенту публично раскрыть GitLab ослабляет границу безопасности. Однако браузер пользователя может уже иметь авторизованный доступ к сети при подключении к VPN. Это создает практический путь для ручной синхронизации напрямую с браузером при условии, что продукт рассматривает браузер как ненадежную границу и сводит к минимуму все, что выходит за ее пределы.
Позвольте браузеру напрямую вызывать GitLab
В режиме прямого доступа к браузеру пользователь вводит на странице источник GitLab, область действия группы и токен, доступный только для чтения. JavaScript, работающий в браузере, вызывает API GitLab через существующее VPN-соединение. Он нормализует только метаданные доставки, необходимые продукту, и отправляет эти нормализованные полезные данные в размещенное приложение. Токен никогда не должен включаться в эту полезную нагрузку, журналы приложений, мониторинг ошибок или аналитику. Дополнительное удобное хранилище должно представлять собой хранилище сеансов на уровне вкладок, а не постоянное локальное хранилище, а закрытие вкладки должно привести к удалению учетных данных.
Используйте самые узкие практические разрешения
Создайте токен, предназначенный для доступа к API только для чтения, и ограничьте синхронизацию группами или проектами, которые рабочая область имеет право анализировать. Подтвердите происхождение GitLab как HTTPS, отклоните учетные данные, встроенные в URL-адреса, и по возможности предотвратите вызовы на произвольные внутренние хосты. Размещенный маршрут приема должен независимо проверять вошедшего в систему диспетчера рабочей области, тип принятого поставщика, схему полезных данных, максимальный размер, область репозитория и ограничение скорости. Токен, хранящийся в браузере, снижает раскрытие секретов на стороне сервера, но не устраняет необходимости проверять все, что отправляет браузер.
Оптимизируйте синхронизацию ограниченных страниц.
Извлекайте проекты и последние мерж-реквесты с максимальным поддерживаемым размером страницы, соблюдайте заголовки пагинации GitLab и ограничивайте историю четким временным окном или ограничением записи. Избегайте одного запроса на мерж-реквест, если метрика действительно не требует подробных событий. Загружайте дорогостоящие данные обзоров, участников или итераций одновременно с консервативным ограничением и показывайте прогресс по завершенной работе, а не по произвольному индикатору. Кэшируйте нормализованные результаты в приложении, чтобы в отчетах не повторялась выборка VPN. Ручной режим прямого доступа к браузеру не может обеспечить надежную фоновую синхронизацию или веб-перехватчики после закрытия вкладки, поэтому честно отмечайте актуальность.
Проверьте обещание безопасности
Во время пилотного проекта проверьте сетевую панель браузера и убедитесь, что токен отправляется только в источник GitLab клиента. Убедитесь, что запросы приложений содержат нормализованные метаданные, а не необработанные секреты или исходный код. Закройте вкладку и убедитесь, что токен исчез. Проверьте недопустимый источник, токен с истекшим сроком действия, пользователя без разрешений на рабочую область, слишком большой ответ и частичную синхронизацию. Наконец, сравните образцы проектов, мерж-реквесты, рецензентов, метки, этапы и итерации с самим GitLab. Безопасная архитектура полезна только тогда, когда пользователи также могут доверять полученным доказательствам.
Четко посмотрите на свою систему доставки.
Исследуйте производственное рабочее пространство Troodo и узнайте, как доказательства доставки становятся целенаправленным управленческим заданием.
Изучите живую демонстрацию