知識マップ: OLEオブジェクトとは何か ── 埋め込み・リンクの仕組みと業務文書の落とし穴
記事「OLEオブジェクトとは何か ── 埋め込み・リンクの仕組みと業務文書の落とし穴」の主張を、概念と関係(エッジ)に分解した知識グラフの全体です。各関係には根拠・確認日・確度が付いています。
OLEオブジェクトの正体は、文書に埋め込みまたはリンクできるCOMオブジェクトです。埋め込みはデータ本体を文書内に保存するため自己完結する代わりにファイル肥大化の原因になり、リンクは文書側にモニカが持つ「名前と場所」や更新設定と(通常は)表示用キャッシュだけを保存し、データ本体はリンク元に残すため、ファイルサーバーの移設や改名で変更後の場所をたどれなくなるとリンク切れが構造的に起きます。保存の器は「ファイルの中のファイルシステム」である構造化ストレージ(複合ファイル)で、旧Office形式(.doc/.xls)はファイル自体がこの複合ファイルで、現行形式でもレガシーなOLE埋め込みのバイナリはこの形式で格納されます(新しいOffice文書同士の埋め込みは、ファイルのままZIP内に収まることもあります)。ダブルクリックの正体はオブジェクト自身が決める主動詞の実行、In-Place Activationは埋め込みだけの仕組みで、コンテナーとサーバー双方の対応が前提です。編集は作成元アプリ(OLEサーバー)が前提で、無い環境では文書側に表示用キャッシュが保存されていればそれを見るだけになります(キャッシュを持つかどうかは作成時の指定で決まります)。リンク元の変更の反映は、自動更新か手動更新かのリンク更新の設定によります。細工されたOLEオブジェクトは任意コード実行の攻撃経路として実際に使われたため、OLEパッケージのアクティブ化はレジストリ設定で組織的に禁止します。Accessでの画像・ファイルの格納には、OLEオブジェクト型ではなく添付ファイル型が推奨されます。
flowchart LR
accTitle: OLEオブジェクトの知識マップ
accDescr: OLEオブジェクトがCOMを前提とし構造化ストレージとIDataObjectと動詞を利用する構造、編集がOLEサーバーを前提としIn-Place Activationがコンテナーとサーバー双方の対応と埋め込みを前提とすること、複合ファイルが構造化ストレージの実装を担い旧Office形式がその複合ファイルを利用すること、埋め込みが肥大化の、リンクがリンク切れの原因になり得ること、埋め込み・リンクが通常は表示用キャッシュを保持すること(有無は作成時の指定による)、リンクが更新設定で構成されること、OLEパッケージのアクティブ化の危険とその防止、Accessでの画像・ファイル格納にはOLEオブジェクト型より添付ファイル型が推奨されることを示す図
ole_object["OLEオブジェクト"]
com["COM(コンポーネントオブジェクトモデル)"]
structured_storage["構造化ストレージ"]
ole_data_object["IDataObject"]
ole_verb["動詞(verb)"]
compound_file["複合ファイル"]
clsid["CLSID(Class ID)"]
ole_embedding["埋め込み(Embedding)"]
file_size_bloat["ファイル肥大化"]
ole_linking["リンク(Linking)"]
moniker["モニカ"]
link_break["リンク切れ"]
in_place_activation["In-Place Activation"]
microsoft_word["Microsoft Word"]
access_ole_object_field["AccessのOLEオブジェクト型"]
access_file_image_storage["Accessでの画像・ファイル格納"]
access_attachment_field["Accessの添付ファイル型"]
ole_package_activation["OLEパッケージのアクティブ化"]
arbitrary_code_execution["任意コード実行"]
ole_package_activation_prevention["OLEパッケージのアクティブ化防止"]
intune["Microsoft Intune"]
ole_server["OLEサーバー"]
ole_container["OLEコンテナー"]
presentation_cache["表示用キャッシュ"]
link_update_policy["リンク更新の設定"]
legacy_office_binary_format["旧Office形式(.doc/.xls)"]
ole_package["OLEパッケージ"]
ole_object -->|"前提とする"| com
ole_object -.->|"利用する"| structured_storage
ole_object -.->|"利用する"| ole_data_object
ole_object -->|"利用する"| ole_verb
compound_file -->|"実装を担う"| structured_storage
compound_file -.->|"利用する"| clsid
ole_embedding -->|"原因になり得る"| file_size_bloat
ole_linking -->|"利用する"| moniker
ole_linking -.->|"原因になり得る"| link_break
in_place_activation -->|"前提とする"| ole_embedding
microsoft_word -->|"利用する"| ole_object
access_ole_object_field -->|"用いるのは非推奨"| access_file_image_storage
access_attachment_field -->|"推奨される対応"| access_file_image_storage
ole_package_activation -.->|"原因になり得る"| arbitrary_code_execution
ole_package_activation_prevention -->|"防止する"| ole_package_activation
ole_package_activation_prevention -->|"で構成できる"| intune
ole_verb -->|"前提とする"| ole_server
microsoft_word -->|"実装を担う"| ole_container
in_place_activation -->|"前提とする"| ole_container
in_place_activation -->|"前提とする"| ole_server
ole_embedding -.->|"利用する"| presentation_cache
ole_linking -.->|"利用する"| presentation_cache
ole_linking -->|"で構成できる"| link_update_policy
legacy_office_binary_format -->|"利用する"| compound_file
ole_package -->|"利用する"| ole_embedding
概念間の関係(全25件)
図と同じ関係を文章でも列挙します。表示している文と機械可読な意味データ(RDFa)は同じ要素に載っています。確度が「確立した関係」のものは直接の関係として、「条件付きの関係」のものは成立条件つきの言明(rdf:Statement)として表現しています。
- OLEオブジェクトはCOM(コンポーネントオブジェクトモデル)を前提とします。
- OLEオブジェクトは構造化ストレージを利用します。
- OLEオブジェクトはIDataObjectを利用します。
- OLEオブジェクトは動詞(verb)を利用します。
- 複合ファイルは構造化ストレージの実装を担います。
- 複合ファイルはCLSID(Class ID)を利用します。
- 埋め込み(Embedding)はファイル肥大化の原因になることがあります。
- リンク(Linking)はモニカを利用します。
- リンク(Linking)はリンク切れの原因になることがあります。
- In-Place Activationは埋め込み(Embedding)を前提とします。
- Microsoft WordはOLEオブジェクトを利用します。
- AccessのOLEオブジェクト型をAccessでの画像・ファイル格納に用いることは推奨されません。
- Accessの添付ファイル型はAccessでの画像・ファイル格納に対する本記事の推奨です。
- OLEパッケージのアクティブ化は任意コード実行の原因になることがあります。
- OLEパッケージのアクティブ化防止はOLEパッケージのアクティブ化を防ぎます。
- OLEパッケージのアクティブ化防止はMicrosoft Intuneで構成できます。
- 動詞(verb)はOLEサーバーを前提とします。
- Microsoft WordはOLEコンテナーの実装を担います。
- In-Place ActivationはOLEコンテナーを前提とします。
- In-Place ActivationはOLEサーバーを前提とします。
- 埋め込み(Embedding)は表示用キャッシュを利用します。
- リンク(Linking)は表示用キャッシュを利用します。
- リンク(Linking)はリンク更新の設定で構成できます。
- 旧Office形式(.doc/.xls)は複合ファイルを利用します。
- OLEパッケージは埋め込み(Embedding)を利用します。
主要概念の定義
機械可読データ
このデータセットについて
このページはサイトの知識グラフ(_data/knowledge/)から自動生成されています。誤りの指摘はお問い合わせからお願いします。