Юридические отделы работают с контрактами, файлами доказательств и другими строго конфиденциальными документами. Обычный процесс загрузки PDF в облачный сервис обмена мгновенно создает угрозу безопасности: файл находится за пределами корпоративного периметра, и вы теряете детальный контроль над тем, кто может его просматривать и как долго.
Что если вы могли бы встроить безопасный, зашифрованный просмотрщик PDF непосредственно в ваш .NET веб‑портал, гарантируя, что документ никогда не попадет на сторонний сервер?
В этом руководстве мы рассмотрим практическую архитектуру, построенную вокруг Doconut Viewer, SDK для просмотра документов в .NET. Он устанавливается в ваше собственное приложение и не делает запросов к серверам Doconut, поэтому документ никогда не покидает вашу инфраструктуру.
Две вещи, которые необходимо уточнить перед первым шагом, потому что остальная часть руководства зависит от них. Doconut.app — это бесплатный веб‑просмотрщик, веб‑сайт, а не компонент, и не то, что вы устанавливаете здесь. Шифрование, токены и аудит‑лог ниже — это то, что вы должны построить сами: SDK только отображает документы, он не поставляет программу соответствия. Doconut не имеет сертификата ISO 27001, отчёта SOC 2 и подтверждения HIPAA, поэтому аргумент о соответствии, который вы можете представить регулятору, носит архитектурный характер — файл остаётся внутри границы, которую вы уже контролируете.
Почему традиционный облачный обмен не справляется
| Риск | Типичный облачный сервис | Что делает эта архитектура вместо этого |
|---|---|---|
| Экзиль данных — файл хранится на внешних серверах | Файлы сохраняются в хранилище провайдера, часто в регионах, которые вы не можете контролировать. | PDF остаётся в вашей собственной инфраструктуре. SDK отображает его там и не делает запросов никому. |
| Потеря контроля над сроками доступа | Ссылки для совместного доступа могут пересылаться бесконечно. | Вы выдаёте краткоживущие одноразовые токены. Это код, который вы пишете, а не переключатель. |
| Недостатки соответствия | Журналы аудита часто ограничиваются событиями «скачивание». | Вы регистрируете каждый запрос предварительного просмотра, потому что запрос направляется к вашему собственному эндпоинту. |
| Зависимость от плагинов | Многие просмотрщики требуют Flash, ActiveX или расширения браузера. | Ничего не устанавливается на машине читателя; браузер получает отрисованные страницы. |
Обзор решения
- Установите Doconut Viewer в ваш .NET проект.
- Зашифруйте PDF в состоянии покоя с помощью серверного ключа, используя собственную криптографию .NET.
- Встроите просмотрщик в страницу Razor или представление MVC, за токеном, который выдаёт ваше приложение.
- Записывайте каждый запрос предварительного просмотра для аудита и обнаружения аномалий.
Шаги 2, 3 и 4 — это работа вашего приложения. Часть SDK — это шаг 1 и рендеринг; всё защитное в этой конструкции — это ваш собственный код, что также позволяет проводить аудит вашей собственной командой.
Ниже представлено подробное пошаговое руководство по каждому шагу, включая рекомендации лучших практик по управлению ключами, безопасности токенов и аудиту журналов.
Шаг 1 – Подготовьте вашу .NET среду
- Откройте решение в Visual Studio (рекомендуется 2022 или новее).
- Выберите целевую платформу. Doconut Viewer поддерживает ASP.NET, MVC, .NET Core, .NET 6+ и Blazor. Зафиксируйте выбранную версию — детали интеграции зависят от версии.
- Установите SDK со страницы загрузки Doconut, используя пакет и документацию, соответствующие выбранной версии. Возьмите название пакета и шаги установки из этой документации, а не из статьи; оба изменялись в разных релизах.
Держите конфигурацию лицензии вне системы контроля версий, пока вы работаете. Это самая распространённая утечка из работающего прототипа.
Дополнительные рекомендации
- Храните ссылку на пакет в файле
Directory.Packages.propsдля централизованного управления версиями в нескольких сервисах.
Шаг 2 – Хранение PDF с сильным шифрованием
2.1 Выбор алгоритма шифрования
Это ваше решение и ваш код. System.Security.Cryptography в .NET предоставляет AES-256-GCM, который обеспечивает аутентифицированное шифрование — конфиденциальность и целостность одновременно — и является обоснованным вариантом по умолчанию для документов в состоянии покоя.
Ни один алгоритм шифрования не делает систему соответствующей GDPR, HIPAA или ISO 27001. Эти стандарты спрашивают о процессах, контроле доступа, хранении и доказательствах. Шифрование — лишь один из множества контролей, и библиотека просмотра не может обеспечить остальные.
2.2 Реализация безопасного управления ключами
- Никогда не встраивайте ключи в код. Используйте Azure Key Vault, AWS KMS или HashiCorp Vault для получения ключа шифрования во время выполнения.
- Регулярно вращайте ключи — каждые 90 дней это распространённая практика. Планируйте задачу повторного шифрования заранее; обнаружить, что нет способа сменить ключ, во время инцидента — плохой опыт.
Шаг 3 – Генерация ограниченного по времени одноразового токена
Токен предварительного просмотра действует как одноразовый бейдж, который автоматически истекает. Он содержит:
- Идентификатор пользователя – Кто имеет право просматривать документ.
- Идентификатор PDF – Какой зашифрованный файл передавать.
- Срок действия – Обычно 5–10 минут, настраиваемо в соответствии с политикой.
- Подпись – Подписано HMAC или RSA для предотвращения подделки.
3.1 Соображения по безопасности
- TLS везде – Всегда передавайте токен по HTTPS.
- Принцип наименьших привилегий – Кодируйте только данные, необходимые для предварительного просмотра; избегайте включения лишних заявлений.
- Отзыв токена – Простая «чёрный список» в Redis позволяет мгновенно отозвать токен, если изменились права доступа пользователя.
Шаг 4 – Встраивание DoconutApp Viewer
4.1 Серверный эндпоинт потоковой передачи
- Расшифровывайте в памяти если ваша модель угроз требует этого, чтобы открытый текст никогда не попадал на диск. Это ваш эндпоинт, и вы сами решаете, как его реализовать и проверять код.
- Отрисовка происходит на вашем сервере, а не в браузере читателя. Это позволяет браузеру отображать документ, не получая исходный файл — и также требует проверки, куда SDK записывает временный вывод рендеринга и как он удаляется.
4.2 Плагины не требуются
Читатель получает отрисованные страницы через стандартные веб‑технологии, поэтому просмотрщик работает в Chrome, Edge, Firefox и Safari без плагинов, ActiveX‑контроля или зависимости от Flash. На ноутбуке юриста ничего не устанавливается, что обычно является решающим фактором между завершённым и незавершённым обзором безопасности.
Шаг 5 – Аудит и журналирование доступа для соответствия требованиям
Юридические команды часто нуждаются в журнале, защищённом от подделки того, кто и когда просматривал тот или иной контракт. Реализуйте структурированный конвейер логирования:
| Поле | Описание |
|---|---|
UserId | Идентификатор запрашивающего юридического специалиста |
PdfId | Внутренняя ссылка на зашифрованный документ |
Timestamp | Время запроса предварительного просмотра в UTC |
IpAddress | IP‑адрес источника (полезно для проверки геолокации) |
UserAgent | Строка браузера для судебно‑технического анализа |
Result | Успех / Ошибка (например, недействительный токен, ошибка расшифровки) |
Лучшие практики
- Храните журналы в только‑добавляемом, неизменяемом хранилище данных (например, Azure Log Analytics, Splunk или S3‑бакет с однократной записью).
- Включите оповещения о аномальных шаблонах — например, когда один и тот же токен используется с двух разных IP‑адресов в течение нескольких секунд.
- Политика хранения: Сохраняйте журналы в течение периода, требуемого вашим законодательством (обычно 7 лет для юридических записей).
Краткое резюме
- Установите Doconut Viewer в ваш .NET‑проект, используя документацию для вашей версии.
- Шифруйте PDF при записи с помощью AES-256-GCM из встроенной криптографической библиотеки .NET; управляйте ключами через сервис хранилища.
- Выдавайте короткоживущий одноразовый токен предварительного просмотра при запросе пользователя.
- Отрисовывайте на сервере и встраивайте просмотрщик в страницу Razor. Документ никогда не передаётся третьим сторонам, и на машине читателя ничего не устанавливается.
- Журналируйте каждый просмотр для аудита, с оповещениями о подозрительных шаблонах.
Пункты 2, 3 и 5 — ваш код. Это честное разделение обязанностей, и его стоит явно указать в собственной документации по безопасности, потому что ревьюер в конце концов спросит, какая сторона отвечает за что.
Заключение
Безопасный обмен PDF не обязательно должен включать сторонний сервис. С Doconut Viewer внутри вашего собственного .NET портала ваш юридический отдел может представлять конфиденциальные контракты, материалы судебных разбирательств и внутренние политики, не позволяя файлу покидать вашу инфраструктуру.
То, что дает вам SDK, — это последняя часть: рендеринг в вашей среде без обратных вызовов. Сквозное шифрование, контроль доступа и журнал аудита принадлежат вам — в этом и суть, потому что просмотрщик, который утверждает, что предоставляет их, заставил бы вас доверять соответствию поставщика, а не вашему собственному.
Готовы попробовать? Посетите doconut.com — пробная лицензия бесплатна, а живые демонстрации — самый быстрый способ увидеть, выдержит ли рендеринг ваш самый сложный материал, прежде чем вы напишете любой из приведённых выше кодов.
Реализация этих шагов даст сотрудникам по соблюдению требований уверенность, сократит поверхность атаки и удержит ваши PDF‑файлы надёжно внутри корпоративного брандмауэра — именно тот уровень безопасности, который нужен любой юридической команде.
Оставайтесь в безопасности, соблюдайте требования и держите эти запечатанные конверты там, где им место: внутри вашего собственного хранилища.
