MITRE ATT&CK Navigatorをコンテナで用意する
コンテナ環境にMITRE ATT&CK Navigatorを用意する手順について記載します。
将来的に社内SOC、可視化支援、レポート作成用途での導入を踏まえた、検証目的での環境を想定しています。
MITRE ATT&CK Navigatorをローカルで用意する必要性については、attack-navigator公式リポジトリの以下の内容を基にしています。
https://github.com/mitre-attack/attack-navigator?tab=readme-ov-file#usage
重要事項: GitHub PagesでホストされているNavigatorインスタンスにアクセスした際にアップロードされたレイヤーファイルは、Navigatorがクライアントサイドのみのアプリケーションであるため、サーバーサイドには保存されません。ただし、レイヤーファイルに機密コンテンツが含まれている場合は、ATT&CK Navigatorの独自のインスタンスをインストールして実行することをお勧めします。
[2026-01-30] Navigator v5.3.0に対応しました。
前提条件
- macOS
- Dockerコンテナ環境
- Git
導入の流れ
- GitHubの公式リポジトリからattack-navigatorのリポジトリをクローンします。
- docker-compose.ymlを用意します。
- attack-navigatorのコンテナを起動します。
- ブラウザでコンテナのattack-navigatorに接続します。
- コンテナを終了します。
導入方法
- attack-navigatorリポジトリをクローンします。
$ git clone https://github.com/mitre-attack/attack-navigator.git
- attack-navigator ディレクトリに移動します。
$ cd attack-navigator
$ ls
CHANGELOG.md CONTRIBUTING.md* Dockerfile layers/ LICENSE.txt* nav-app/ NOTICE.txt* README.md* USAGE.md
- docker-compose.yml を作成します。
docker-compose.yml
services:
navigator: # サービス名
build:
# Dockerfile がどのディレクトリのファイルを使ってイメージを作るかを決める設定
# Dockerfile内のCOPYなどに影響します
context: .
# Dockerfileの内容を基にコンテナイメージを用意します
dockerfile: Dockerfile
ports:
# localhostの4200番ポートで待ち受け、接続をコンテナの80番ポートにつなげます
- 127.0.0.1:4200:80
# コンテナ名
container_name: attack-navigator
volumes:
# ローカルのlayersディレクトリをコンテナ内のディレクトリと共有します。
# 直接レイヤーを反映させた状態で開くための設定です。
- ./layers:/src/nav-app/src/assets/layers
- コンテナを起動します。
$ docker compose up -d
(中略)
✔ Container attack-navigator Started
- ブラウザを開き次のURLを開きます。
http://localhost:4200

- コンテナを終了します。
$ docker compose down
Navigatorへのアクセス時にレイヤーファイルを直接指定して呼び出す
指定したレイヤーファイルを直接表示する方法について説明します。
たとえばレイヤーファイルを更新した後、
毎回Navigatorの初期画面(Create New Layerや、Open Existing Layerなど)を表示すること無く、
ブラウザの表示の更新のみにで、画面を更新することができるようになります。
レイヤーファイルは、コンテナ内の /src/nav-app/src/assets/layers ディレクトリに配置する必要があります。
assetsディレクトリは、webアプリ内で使用する、画像、スタイル、アイコン、サンプルレイヤーJSONなどの
静的コンテンツを格納するディレクトリです。
assetsディレクトリに output.json を配置すると、 'http://localhost:4200/assets/layers/output.json` というURLでアクセスすることができます。
/src/nav-app/src/assets/layers ディレクトリに、レイヤーファイルを配置するには、
コンテナのボリューム機能による同期を利用します。
ホストの layers ディレクトリと、 /src/nav-app/src/assets/layers を同期させるのは、 docker-compose.yml 内の次の箇所で実現しています。
volumes:
- ./layers:/src/nav-app/src/assets/layers
http://localhost:4200/assets/layers/output.json に配置したレイヤーファイルを指定して、
MITRE ATT&CK Navigatorを開くには、 layerURL パラメターターを使います。
具体的には、ブラウザで開く際に次のURLを使います。
http://localhost:4200/#layerURL=http://localhost:4200/assets/layers/output.json
このURLを直接ブックマークなどに登録して呼び出すことで、そのレイヤーを反映した画面を直接呼び出すことができるようになります。
ローカルの layers/output.json をプログラムなどで直接書き換れば、ブラウザの表示の更新を行うと新しい画面が表示されます。

参考サイト
GitHub attack-navigatorリポジトリ
関連記事
MITRE ATT&CK関連記事一覧
Discussion