Engine レポート
解析プロセス
Glasswall ライブラリは公開された API を介してファイルを受け取り、それを複数の処理サイクルに通します。各サイクルの出力は次のサイクルへの入力となり、その結果、プロセス間の分離レベルが維持されます。ファイルの解析は各サイクルで実行されます。初期のサイクルでは、ファイルの構造とその構成要素のサイズが明らかにされます。後続のサイクルでは、構文チェックおよび意味チェックの実施に重点が置かれ、リスクの可能性がある要因、範囲外のフィールド、または不正な形式の構造が特定されます。
ファイルの要素が圧縮されている場合、それらは展開され、その結果が評価、解析、検証されます。これにより、プロセスの最後に出力される解析レポートで、ファイルの内容と構造を包括的に評価できます。サニタイゼーションおよび修復プロセスを段階的にたどることで、Glasswall は Glasswall の再生成機能によって実行可能なアクションを正確に報告でき、これによりファイルを仕様に準拠させることができます。
各サイクルの間に、処理中のファイルは Glasswall 独自の内部表現に変換されます。これにより、解析および走査のプロセスが簡素化され、分離の提供にも役立ちます。解析プロセスが Glasswall の構造内をたどる際、詳細なチェックは個々のコンポーネントに対して行われるだけでなく、ファイルコンポーネント間の関係について、より高いレベルでも実施されます。これらの高レベルのチェックにより、ファイルの意味構造と整合性を適切に検証できます。
解析レポート
Embedded Engine の解析レポートは、データに関する詳細でファイルタイプに依存しない説明を提供し、XML 形式で記録されます。このレポートの構造は Analysis Report XSD に従っており、解析と処理を簡素化するよう設計されています。analysis report XSD は、Embedded Engine リリースパッケージの /schemas/sdk_editor フォルダーにあります。
解析レポートには、次のファイル情報が含まれます。
- ドキュメント概要 — ファイル固有の高レベル情報。
- コンテンツ管理 policy — 処理されたファイルに適用されたコンテンツ管理スイッチの設定。
- コンテンツグループ — 処理されたファイルで検出されたコンテンツの主なグループ化。
- コンテンツ項目 — 処理されたファイルで検出された低レベル構造。
- 問題項目 — 製造元の仕様に一致しない検出構造、または policy によって許可されていない検出構造(いずれの場合もファイルは拒否されます)。
- サニタイゼーション項目 — コンテンツ管理下で検出され、policy によって削除対象としてマークされた構造。
- 許可項目 — コンテンツ管理下で検出され、policy によって許可されている構造。
- 修復項目 — ファイルを製造元の仕様に適合させるために、処理されたファイルに適用される自動修正。
解析レポートのサンプル
このセクションには、一般的なレポートの主要な要素をすべて含む、簡略化された Glasswall Analysis Report が記載されています。この特定の例は PDF ファイルに基づいています。
ドキュメント概要
各 XML レポートは、以下に示すドキュメント概要から始まります。
<gw:DocumentSummary>
<gw:TotalSizeInBytes>2293803</gw:TotalSizeInBytes>
<gw:FileType>pdf</gw:FileType>
<gw:Version>PDF-1.6</gw:Version>
<gw:FileTypeDetectionMethod>signature match</gw:FileTypeDetectionMethod>
<gw:InputSHA256>DEE7CEB7AB57227121FF65F0D8D0878CBEDF90864069D9525698257972498099</gw:InputSHA256>
<gw:OutputSHA256>83EE59FAB5972429CE65CBB22EBF8B592D53F47927E0FA751584875D4F80CA1E</gw:OutputSHA256>
<gw:ProcessingTimeMilliseconds>101</gw:ProcessingTimeMilliseconds>
<gw:ComplexityLevel>4.41</gw:ComplexityLevel>
</gw:DocumentSummary>
- TotalSizeInBytes - 入力ファイルのサイズ
- FileType - Glasswall が検出したファイルタイプ
- Version - ファイル形式のバージョン(判別可能な場合)
- FileTypeDetectionMethod - ファイル形式を判定するために使用された Glasswall の検出方法
- InputSHA256 - 元の入力ファイルの SHA-256
- OutputSHA256 - Glasswall による処理後の出力ファイルの SHA-256(ファイルが再生成された場合)
- ProcessingTimeMilliseconds - ファイルの処理に要した、Glasswall による測定時間
- ComplexityLevel - ファイル内で識別されたアーティファクト数の log10 を小数点以下 2 桁で計算して算出された、ファイルの複雑さレベルに関する Glasswall の推定値
コンテンツ管理
その後、ファイルに使用されたコンテンツ管理 policy が一覧表示されます。
注: 各レポートには、すべてのファイルタイプに対するすべての policies が一覧表示されます。policy が設定されていないものの利用可能な場合は、適用されたデフォルトの policy 設定も一覧表示されます。
PDF のコンテンツ管理スイッチ設定の一部を以下に示します。
<gw:ContentManagementPolicy>
<gw:Camera cameraName="pdfConfig">
<gw:ContentSwitch>
<gw:ContentName>javascript</gw:ContentName>
<gw:ContentValue>sanitise</gw:ContentValue>
</gw:ContentSwitch>
<gw:ContentSwitch>
<gw:ContentName>acroform</gw:ContentName>
<gw:ContentValue>sanitise</gw:ContentValue>
</gw:ContentSwitch>
<gw:ContentSwitch>
<gw:ContentName>embedded_files</gw:ContentName>
<gw:ContentValue>sanitise</gw:ContentValue>
</gw:ContentSwitch>
</gw:Camera>
</gw:ContentManagementPolicy>
コンテンツグループと項目
ファイル内で見つかった異なるコンテンツグループの数 (16) と、第1グループのコンテンツ項目の例を以下に示します。
<gw:ContentGroups groupCount="16">
<gw:ContentGroup>
<gw:BriefDescription>PDF document has Basic File Section structure instances</gw:BriefDescription>
<gw:ContentItems itemCount="5">
<gw:ContentItem>
<gw:TechnicalDescription>PDF Header Instances</gw:TechnicalDescription>
<gw:InstanceCount>1</gw:InstanceCount>
<gw:TotalSizeInBytes>15</gw:TotalSizeInBytes>
<gw:AverageSizeInBytes>15</gw:AverageSizeInBytes>
<gw:MinSizeInBytes>15</gw:MinSizeInBytes>
<gw:MaxSizeInBytes>15</gw:MaxSizeInBytes>
</gw:ContentItem>
</gw:ContentItems>>
</gw:ContentGroup>
...
</gw:ContentGroups>
サニタイズ項目
この例では、metadata スイッチが sanitise に設定されているため、辞書構造が削除対象としてタグ付けされていることが示されています。
<gw:SanitisationItems itemCount="1">
<gw:SanitisationItem>
<gw:TechnicalDescription>Document information dictionary detected in a document trailer dictionary.</gw:TechnicalDescription>
<gw:SanitisationId>16872998749</gw:SanitisationId>
<gw:InstanceCount>1</gw:InstanceCount>
<gw:TotalSizeInBytes>0</gw:TotalSizeInBytes>
</gw:SanitisationItem>
</gw:SanitisationItems>
許可された項目
この例では、metadata スイッチが allow に設定されているため、辞書構造は保持されます。
<gw:AllowedItems itemCount="1">
<gw:AllowedItem>
<gw:TechnicalDescription>Document information dictionary detected in a document trailer dictionary.</gw:TechnicalDescription>
<gw:AllowedId>16872998749</gw:AllowedId>
<gw:InstanceCount>1</gw:InstanceCount>
<gw:TotalSizeInBytes>0</gw:TotalSizeInBytes>
</gw:AllowedItem>
Remedy 項目
すべての XML レポートに Remedy が含まれるわけではありません。これは、再生成されたファイルをファイル仕様に適合させるために行われる自動修正だからです。この例では、ファイル内で remedy 項目が報告されています。
<gw:RemedyItems itemCount="1">
<gw:RemedyItem>
<gw:TechnicalDescription>
PDF Stream is missing an End-Of-Line before the 'EndStream' marker.
</w:TechnicalDescription>
<gw:RemedyId>1605893787</gw:RemedyId>
<gw:InstanceCount>7</gw:InstanceCount>
</gw:RemedyItem>
</gw:RemedyItems>
問題項目
問題があるファイルはごくわずかです。これは、そのファイルが単にファイル仕様に準拠していないだけでなく、Glasswall がその問題を仕様で定められた標準に戻すよう Remedy できなかったことを意味します。問題項目を持つファイルは再生成できません。
<gw:IssueItems itemCount="1">
<gw:IssueItem>
<gw:TechnicalDescription>
/Info dictionary contained an unexpected key (/GTS_PDFXConformance).
</gw:TechnicalDescription>
<gw:IssueId>1670998746</gw:IssueId>
<gw:InstanceCount>1</gw:InstanceCount>
</gw:IssueItem>
</gw:IssueItems>
ファイルがコンテンツ管理 policy により非準拠(disallow の設定が使用されている場合)と判定された場合にも、Issue item が報告されます。
各 Sanitisation item、Allowed Item、Remedy item、または Issue item には、それぞれ一意の数値 ID が関連付けられており、XML レポートを処理したい他のアプリケーションがその item を一意に識別できるようになっています。