
エンタープライズアプリにおける .NET ドキュメントビューアのセキュリティ考慮事項
はじめに

.NET ベースの ドキュメントビューアを構築するということは、最初からセキュリティを考慮しなければならないということです。エンタープライズ .NET アプリにビューアを埋め込む際に最も重要な問いは、コンテンツを機密に保ちつつ、ユーザーにリッチでインタラクティブな体験を提供する方法です。DMS、顧客ポータル、あるいはリーガルテックワークフローを構築する場合でも、知的財産、個人データ、そして規制で求められる情報を閲覧パイプラインのすべての段階で保護する必要があります。本稿では、シニア開発者とアーキテクト向けに最も一般的な攻撃ベクトル、リスクを低減するアーキテクチャ上の選択肢、そして Doconut のユニバーサルドキュメントビューアがどのように安全な基盤として設計されているかを解説します。
1. 埋め込みビューアの脅威領域
美しく設計された UI であっても、ビューアがデータを漏洩したり信頼できないコードを実行したりすれば攻撃対象となります。以下は主に遭遇する可能性が高い 3 つの脅威カテゴリです。
| 脅威 | 典型的な現れ方 | ビジネスへの影響 |
|---|---|---|
| データ流出 | 直接ダウンロードリンク、保護されていない API、またはクライアント側で生バイトをブラウザへ送信するレンダリング | 機密契約書の流出、個人情報の漏洩、規制罰金 |
| クロスサイトスクリプティング (XSS) とインジェクション | PDF や Office ファイル内の悪意あるマークアップがレンダリング時にスクリプト実行を引き起こす | セッションハイジャック、認証情報の窃取、ランサムウェアへの転用 |
| 不正な操作 | ユーザーが注釈を追加・変更し、監査トレイルなしで改変ファイルをエクスポート | 法的紛争、偽造記録、コンプライアンス違反 |
ビューアは PDF、DOCX、DWG など複雑なフォーマットをレンダリングし、注釈 や OCR といった機能をサポートする必要があるため、コードパスが増大し攻撃面も広がります。最初の防御ラインは何か? 信頼できるサーバー側処理 と 制御されたクライアント側インタラクション を明確に分離することです。
2. .NET におけるサーバー側とクライアント側のレンダリング
サーバー側が重要な理由
- データの完全な非公開 – 生ファイルは信頼されたバックエンドを離れません。ブラウザへ送られるのはレンダリングされた画像または安全な HTML フラグメントだけです。
- 集中型ポリシー実施 – 暗号化、マスク、ビジュアルマーキングは、ドキュメントがユーザーに届く前に一律に適用できます。
- スケーラブルな隔離 – 重量級変換(例: CAD DWG をラスタ画像に変換)は分離されたバックグラウンドジョブで実行でき、侵害されたリクエストの影響範囲を限定します。
クライアント側が許容できるケース
- 低感度のプレビュー(公開パンフレットなど)で、レイテンシが最重要課題の場合。
- インフラ全体がエアギャップ化され、クライアントが信頼できる社内デバイス上で動作する環境。
Doconut のバランスの取れたアーキテクチャ
Doconut は重い変換、OCR、注釈の準備を サーバー側 で行い、軽量な HTML5 ベースのビューア を配信します。このビューアはサードパーティプラグインを必要とせず、すべてのレンダリングはサーバー側 Viewer コンポーネントから生成されたストリームから行われます。この設計により、多くの脆弱なソリューションが陥りがちな「元ファイルをダウンロードさせる」パターンを排除します。
ASP.NET Core パイプラインへの Doconut の登録方法
コードスニペットではなく、登録作業を Doconut 画像エンドポイント(例: DocImage.axd)へのリクエストをインターセプトし、Doconut のレンダリングエンジンへルーティングするミドルウェアコンポーネントの追加と考えてください。ミドルウェアは既存の認証/認可ロジックと照合し、画像ストリームをクライアントに送信する前にリクエストを検証します。セキュリティ基準を満たさないリクエストはすべて拒否するようにミドルウェアを設定すれば、検証済みのドキュメントだけがレンダリングされます。
3. アクセス・認証・認可の制御
アクセス制御戦略
静的なファイルパスや公開 URL を露出させるのではなく、Doconut を既存の ID プロバイダーと統合します。ユーザーがドキュメントを要求した際にサーバー側コードは次を実行すべきです:
- 標準の ASP.NET Core 認証パイプラインを通じてユーザーの身元とロールを検証する。
- 追加のビジネスロジックチェックを行う(例: ユーザーが正しい部門に所属しているか、特定のクレームを保持しているか)。
- チェックが通れば Doconut のビューアを呼び出し、要求されたドキュメントページ用の secure stream を生成する。ストリームは現在の HTTP リクエストに紐付けられ、セッション終了後に再利用できません。
注釈権限
Doconut の Annotation Plugin はページ単位で動作します。ユーザーの権限が確認された後、サーバーは対象ページ用に AnnotationManager を作成します。ユーザーが適切なクレーム(例: CanAnnotate)を持っていない場合、サーバーは読み取り専用ビューを返し、注釈変更の投稿は 403 応答で拒否されます。これにより、権限を持つ担当者だけがレビューコメントを追加・変更できるようになります。
4. データ漏洩防止:暗号化、ビジュアルマーキング、制御された印刷
エンドツーエンド暗号化
Doconut が取り扱うすべてのドキュメントストリームは HTTPS 経由で送信され、選択したストレージプロバイダー(Azure Blob、SQL Transparent Data Encryption など)で保存時に暗号化されます。ビューアはラスタ化されたページのみを受け取り、元ファイルには決してアクセスできないため、クライアントがソースドキュメントを直接取得することはありません。
注釈によるビジュアルマーキング(ウォーターマーク)
サーバー側でレンダリングが行われるため、ページがブラウザに送信される前に、閲覧者の名前、メールアドレス、タイムスタンプを含む半透明テキストオーバーレイといったユーザー固有の注釈を付与できます。この手法はスクリーンショットの抑止につながり、情報漏洩が発生した際の法医学的証拠となります。すべて Doconut の検証済み注釈機能の範囲内で実装できます。
制御された印刷
多くの企業は、ドキュメントを 認可されたデバイスのみ、または コピー数を制限 して印刷できるよう求めます。Doconut の Controlled Printing 機能はサーバー側で印刷コマンドをインターセプトし、ユーザーのロールを検証した上で、必要に応じて「印刷日時」情報を生成 PDF に埋め込みます。印刷ジョブはサーバー側で作成されるため、クライアントがマーキングのないバージョンを受け取ることはありません。
5. OCR と注釈の監査・ログ・コンプライアンス
不変な監査トレイル
注釈操作(追加、変更、削除)ごとに XML ペイロードが生成され、Azure Append Blob や不変テーブルなどの不変ログに保存できます。Doconut の GetAnnotationXml() メソッドは変更後の正確な状態を返すため、XML とタイムスタンプ、ユーザー識別子を永続化できます。リクエストレベルのセキュリティチェックと組み合わせることで、誰が、何を、いつ、どのように操作したか を再現可能です。
安全な OCR 処理
検索可能 PDF に OCR は不可欠ですが、OCR エンジンが生テキストをクライアントに露出させるリスクがあります。Doconut は OCR を サーバー側 で実行し、検索インデックスデータのみを返します。元のスキャン画像は暗号化されたままで、検索テキストは 読み取り専用 キャッシュに格納され、ビューア全体と同様のリクエストライフサイクル規則が適用されます。
規制への適合
すべての処理がオンプレミス(または管理下のプライベートクラウド)で完結するため、Doconut は GDPR、HIPAA、PCI‑DSS など、保護データを外部 SaaS エンドポイントへ送信することを禁じる要件を満たすのに役立ちます。さらに、製品アーキテクチャは audit‑ready logs をサポートしており、コンプライアンスレポート作成の負担を大幅に軽減します。
6. Doconut がセキュリティ要件を競争優位に変える方法
| セキュリティ要件 | Doconut の機能 | ビジネス上のメリット |
|---|---|---|
| データ流出の防止 | サーバー側変換とストリームベースのレンダリング | 機密ファイルが信頼された環境から出ることはありません。 |
| XSS 対策 | サニタイズされた HTML 出力、ドキュメントからのクライアント側スクリプト実行なし | 追加のコーディング作業なしで攻撃面を削減します。 |
| 細粒度の権限強制 | クレーム対応ミドルウェア、ページ単位のアノテーションマネージャ | 既存の RBAC モデルと整合し、管理負荷を軽減します。 |
| 制御された印刷とビジュアルマーキング | アノテーションベースのオーバーレイを使用した組み込み印刷ワークフロー | データ漏洩を防止し、法医学的な追跡可能性を提供します。 |
| 監査可能性 | GetAnnotationXml()、リクエストスコープのストリーム、サーバーログ | 金融、法務、医療分野のコンプライアンス報告を簡素化します。 |
| スケーラブルな OCR | サーバー側 OCR プラグイン、JSON で返される検索可能インデックス | 生テキストを公開せずに、数百万ページの即時検索を実現します。 |
| クロスプラットフォーム配信 | HTML5 ビューアはあらゆるブラウザで動作し、React、Angular、Vue、Blazor と統合可能 | デスクトップ、モバイル、キオスク展開全体で投資を将来にわたって保護します。 |
サーバー側で重い処理を担うことで、Doconut は ビジネスロジックに集中 できる環境を提供します。たとえば、複数段階の承認ワークフローで契約書を回す場合や、エンジニアリング図面を安全なポータルで公開する場合でも、同一コードベースが .NET 6、.NET Core、最新の .NET 8 で動作し、ベンダーロックインの心配がありません。
実際に試す – Doconut は 無料トライアル を提供しており、ビューア、注釈、OCR、変換プラグインすべてが含まれます。数分でサンプル ASP.NET Core アプリを起動し、セキュリティモデルを実際に体感してください。
主なポイント
- サーバー側レンダリングとストリームベース配信 は古いリンク攻撃を排除し、生ファイルを信頼された境界内に留めます。
- 集中型ポリシー実施(暗号化、マスク、注釈ベースのマーキング)はクライアントにデータが届く前に実施されます。
- 細粒度のクレームチェック により、ドキュメントの閲覧や注釈の有効化前に企業の RBAC ポリシーを遵守できます。
- 制御された印刷と注釈ベースのオーバーレイ はデータ漏洩を抑止し、法医学的証拠を提供します。
- 不変な監査ログ は
GetAnnotationXml()から生成され、規制報告を簡素化します。 - HTML5 ビューア は最新のブラウザで動作し、React、Angular、Vue、Blazor のフロントエンドに最適です。
- Doconut の無料トライアル でセキュリティ、パフォーマンス、開発者体験を本番導入前に検証できます。
よくある質問
Q1: Doconut は Word や Excel の変換にサーバーに Microsoft Office のインストールが必要ですか?
A: いいえ。Doconut の Converter Plugin はすべての Office‑to‑PDF およびその他のフォーマット変換をサーバー上で実行し、ローカルに Office をインストールする必要はありません。
Q2: エアギャップ環境で Doconut を使用できますか?
A: はい。Doconut はドキュメントを完全にオンプレミスで処理し、外部 SaaS サービスに依存しないため、隔離されたネットワークでも問題なく動作します。
Q3: 大容量ファイルはどのように処理されますか?
A: Doconut はページ単位でストリーミングし、必要な部分だけをメモリにロードします。このページング方式はバックグラウンドジョブや大規模ワークロードに適しています。
Q4: ビューアは障害者向けにアクセシビリティ対応していますか?
A: HTML5 ビューアは標準的なアクセシビリティプラクティスに従っており、ARIA 属性を追加することで WCAG ガイドラインに準拠させることが可能です。
Q5: 無料トライアルはどこで入手できますか?
A: 公式 Doconut サイト (https://doconut.com) にアクセスし、トライアルライセンスをリクエストしてください。トライアルにはビューア、注釈、OCR、変換のすべてのコアプラグインが含まれます。