法務部門は契約書や証拠ファイル、その他の極めて機密性の高い文書を扱います。PDF をクラウドベースの共有サービスにアップロードするという一般的なワークフローは、即座にセキュリティリスクを生み出します。ファイルが企業の境界外に存在し、誰がいつまで閲覧できるかという細かな制御が失われます。
もし、セキュアで暗号化された PDF ビューアを .NET Web ポータルに直接埋め込むことができ、文書が決してサードパーティのサーバーに触れないことを保証できたらどうでしょうか?
本ガイドでは、Doconut Viewer(.NET ドキュメントビューア SDK)を中心とした実用的なアーキテクチャを解説します。これを自社アプリケーションにインストールすれば、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 暗号化アルゴリズムの選択
これはあなたの判断とコードです。.NET の System.Security.Cryptography は AES-256-GCM を提供し、認証付き暗号化(機密性と完全性を同時に確保)を実現し、保存中の文書に対する妥当なデフォルトとなります。
どの暗号化アルゴリズムも GDPR、HIPAA、ISO 27001 への準拠を保証するものではありません。これらのフレームワークはプロセス、アクセス制御、保持、証拠について問います。暗号化は多数の制御のうちの一つであり、ビューアライブラリだけで残りを提供することはできません。
2.2 安全なキー管理の実装
- キーをハードコードしないでください。 実行時に暗号化キーを取得するために Azure Key Vault、AWS KMS、または HashiCorp Vault を使用します。
- キーを定期的にローテーションする — 90 日ごとが一般的な実践です。必要になる前に再暗号化ジョブを計画してください。キーをロールできないことに気付くと、インシデント時に大きな問題になります。
ステップ 3 – 時間制限付き・一回限りトークンの生成
プレビュー トークンは自動的に期限切れになる 一回限りのバッジ のように機能します。トークンには以下が埋め込まれます:
- User ID – 文書の閲覧が許可されたユーザー。
- PDF ID – ストリームする暗号化ファイル。
- Expiration – 通常 5〜10 分で、ポリシーに応じて設定可能です。
- Signature – 改ざん防止のために HMAC または RSA で署名されます。
3.1 セキュリティ上の考慮点
- TLS は常に使用 – トークンは常に HTTPS で配信してください。
- 最小権限 – プレビューに必要なデータだけをエンコードし、余分なクレームの埋め込みは避けます。
- トークンの失効 – Redis のシンプルな「ブラックリスト」により、ユーザーのアクセス権が変更された際に即座に失効させることができます。
ステップ 4 – DoconutApp Viewer の埋め込み
4.1 サーバー側ストリーミングエンドポイント
- メモリ内で復号 することで、プレーンテキストがディスクに書き込まれないようにします。これはあなたのエンドポイントであり、実装はあなたの選択でコードレビューの対象です。
- レンダリングはサーバー側で実行 され、閲覧者のブラウザでは行われません。これにより、ブラウザはソースファイルを受け取らずに文書を表示でき、SDK が一時的なレンダリング出力を書き込む場所とその削除方法を確認する必要があります。
4.2 プラグインは不要
閲覧者は標準的な Web 技術でレンダリングされたページを取得するため、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 を書き込む際に暗号化 し、.NET の暗号ライブラリから AES-256-GCM を使用します。キーはボールトサービスで管理します。
- ユーザーが閲覧を要求した際に、短時間有効な一回限りのプレビュートークンを発行 します。
- サーバー側でレンダリングし、Razor ページにビューアを埋め込む。文書は第三者に渡らず、閲覧者のマシンに何もインストールされません。
- すべてのプレビューをログに記録 し、監査可能にします。疑わしいパターンに対してはアラートを設定します。
ポイント 2、3、5 はあなたのコードです。これは正直な役割分担であり、レビュー担当者が最終的に誰が何を担当しているかを尋ねるため、セキュリティ文書に明確に記載しておく価値があります。
結論
サードパーティのサービスを利用しなくても、Secure PDF の共有は可能です。自社の .NET ポータル内に Doconut Viewer を組み込めば、法務部門は機密契約書、訴訟資料、社内ポリシーを、ファイルがインフラを離れることなく提示できます。
SDK が提供するのはこの最後の部分、すなわち「自分の環境でのレンダリング」であり、外部へ通信することはありません。エンドツーエンドの暗号化、アクセス制御、監査ログはすべて貴社のものです。これは重要なポイントで、これらを提供すると主張するビューアは、ベンダーのコンプライアンスを信頼させようとするだけで、貴社自身のコンプライアンスを犠牲にします。
試してみませんか? doconut.com にアクセスしてください — トライアルライセンスは無料で、ライブデモ が、コードを書き始める前に最悪の展示資料でもレンダリングが機能するかを確認する最速の方法です。
これらの手順を実装すれば、コンプライアンス担当者は安心でき、攻撃面を削減し、PDF を企業のファイアウォール内にしっかりと保つことができます — 法務チームが必要とするセキュリティ姿勢そのものです。
安全を保ち、コンプライアンスを遵守し、封印された封筒は本来あるべき場所、すなわち自社の金庫内に保管しましょう。
