Draugr について
Draugrは、アプリケーションやインフラのリスクを確認するチーム向けの、CI・リリース用セキュリティスキャンツールです。既存のスキャナーを実行し、露出度、重要度、悪用可能性、到達可能性を考慮して検出結果を順位付けします。
主な機能
- 01SAST、SCA、シークレット、IaCのスキャン
- 02DAST、イメージ、クラウド、Kubernetesの検査
- 03リスク状況に基づく検出結果の順位付け
- 04新規検出結果のみで変更をゲート
- 05SARIF、JSON、HTMLなどのレポート
活用シーン
- 01リリース前のアプリと実行環境の検査
- 02新たなセキュリティ問題だけでCIを失敗させる
- 03スキャン結果をコードスキャン基盤へ送信
MCP 対応
`draugr mcp`は、MCP経由でDraugrをAIクライアントに提供します。スキャンにはコミット済みのプロジェクト記述ファイルを使い、稼働中ホストの検査や第三者へのデータ送信などは事前に許可を求めます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Draugr
CI 向けのセキュリティスキャンを1つのファイルで実行し、すべての検出結果を露出度、重要度、悪用可能性、到達可能性に基づいてランク付けします。
アプリについて説明すれば、あとは Draugr におまかせください。
どのアプリケーションにも、意図せず紛れ込んだ問題があります。脆弱性が見つかったライブラリ、誤ってコミットされたパスワード、侵入経路を残してしまうサーバー設定などです。Draugr はそうした問題を見つけ、あなたのアプリにとって本当に重要なものを見極め、リリース前に本当に知りたい問いに答えます。このままリリースしても安全でしょうか?
Trivy、Semgrep、Gitleaks など、定評のあるオープンソースのスキャナーを代わりに実行するため、どれを選ぶか、どう連携させるか、5つのツールの結果を読み比べるかで悩む必要はありません。リポジトリの場所、ビルドするイメージ、公開するもの、実行するインフラストラクチャなど、構築したものを1つのファイルに一度記述するだけです。Draugr は適用されるチェックを選び、それぞれに適したツールを実行し、ほかの人に渡せる証拠を作成します。すでに契約しているスキャナーを使うことも、オープンソースのデフォルト設定を使うこともできます。
検出結果は一覧表示ではなく、ランク付けされます。スキャナーが示す「重大」は、抽象的な欠陥の深刻度、つまり、どこであっても最悪の場合にどれほど危険かを表しています。同じ欠陥でも、見知らぬ人がアクセスできるサービスでは今すぐ対処すべき問題となり、3人しか使わない内部ツールでは後回しにできる問題となります。その違いはコードではなく、あなたが書いたファイルにあるため、スキャナーには見分けられません。また、draugr diff は新たな検出結果のみを対象にプルリクエストをブロックするため、既存の検出結果を200件引き継いでも、変更のたびにブロックされることはありません。
クイックスタート · 実際の動作を見る · チェック内容 · パイプラインでの利用 · ドキュメント · Draugr が保証しないこと · セキュリティ
実際の動作を見る
優先度(P1~P4)は深刻度ではありません。 深刻度は、欠陥がどこであっても最悪の場合にどれほど危険かを示します。優先度は、その危険度を、アプリのどれほど重要な部分に存在し、どれほど外部に露出しているかを踏まえて評価します。これはコードには含まれていないため、スキャナーには判断できません。
draugr-dev/draugr-demo は、Draugr と連携する、意図的に脆弱性を含めたアプリです。すべてのコントロールが実行され、検出結果はリポジトリの Security → Code scanning タブに表示されます。また、サンプルのプルリクエストでは、新たに追加された検出結果と修正された検出結果の差分を確認できます。
クイックスタート
curl -fsSL https://draugr.dev/install.sh | sh
sudo は不要で、~/.local/bin にインストールします。インストール前に検証を行い、実行したチェックの内容を表示します。リリースの checksums.txt に記載されたアーカイブの SHA-256 を確認し、cosign が PATH にある場合は、そのファイルの cosign 署名も検証します。チェックに失敗した場合は、何もインストールしません。スクリプトはリポジトリで確認できます。Homebrew や go install など、ほかの方法についてはインストールガイドをご覧ください。
draugr init # describe this project in a draugr.saga.yaml
draugr tools install # fetch the scanners it needs, pinned and verified
draugr scan # scan what the descriptor describes
tools install は、隣にある記述ファイルから必要なツールを判断します。そのため、小規模なサービスには Draugr が用意できるすべてのツールではなく、3 つのスキャナーだけがインストールされます。複数のプロジェクトで使うマシンを準備するときは --all を指定してください。
次に、実際に提供しているものを記述します。
project: my-app
release:
version: "1.0"
config:
controls:
images:
enabled: true
components:
- name: web
images:
- image: alpine:3.19
draugr scan draugr.saga.yaml # console summary; exits non-zero on fail
draugr scan draugr.saga.yaml -o out/ # also writes report.json + results.sarif
draugr scan draugr.saga.yaml --format markdown # or html, junit, json, sarif
エディターはすでにこのファイルを認識しています。 Draugr の
JSON Schema は
SchemaStore に登録されているため、*.saga.yaml を開くだけで、設定を追加しなくても入力補完、ホバードキュメント、タイプミスの警告が利用できます。
または、検出機能を使って記述ファイルを生成できます。
draugr survey github repos --org my-org -o draugr.saga.yaml
draugr survey k8s images --namespace prod -o draugr.saga.yaml
詳しい手順については、クイックスタートをご覧ください。
実際のリポジトリでセットアップしていますか? ピン留めされたディスカッションに、リポジトリの内容と実行しているスキャナーを返信してください。判断が必要な公開範囲や重要度も含め、記述ファイルの作成を一緒に進めます。
チェック項目
各コントロールは、Draugr に同梱されるのではなく、Draugr が実行するツールによってチェックされます。そのため、各スキャナーはそれぞれのライセンスに従い、別のツールに置き換えることもできます。
| コントロール | 検出対象 | デフォルト |
|---|---|---|
sca | 依存ライブラリにある既知の脆弱性 | Trivy、Grype。Mend はオプトイン |
secrets | 誤ってコミットされたパスワードやキー(履歴も含む) | Gitleaks |
sast | コードへの不正侵入を許す、記述したコード内のパターン | Semgrep。Go では gosec をオプトイン |
iac | Terraform、Kubernetes、Dockerfile のセキュリティを脅かす設定 | Trivy |
images | コンテナイメージに含まれているもの | Trivy。Grype はオプトイン |
licenses | 自分で記述していないコードに適用されるライセンス条件 | Trivy |
dast | 実行中のアプリを外部から確認して初めて見つかる問題 | Nuclei。認証に対応し、OpenAPI 仕様から実行 |
headers | ブラウザーに対するサイトの応答 | ネイティブ |
tls | 証明書と暗号化 | ネイティブ |
kubernetes | CIS ベンチマークに照らした Kubernetes クラスター | ネイティブ。kube-bench はオプトイン |
cloud | CIS ベンチマークに照らした現在のクラウドアカウント | Prowler |
threats | 通信先が公開ブロックリストに掲載されていないか | abuse.ch URLhaus |
provenance | イメージが想定どおりのビルダーによって署名されているか | Sigstore cosign |
各スキャナー、その送信内容、適用されるライセンスについては、 インテグレーションカタログをご覧ください。
これらに加え、コンテンツハッシュキャッシュ、リポジトリおよびイメージごとの SBOM、KEV/EPSS による情報補強、コントロールごとのゲートしきい値を利用できます。また、抑制した項目はレポートから消えるのではなく、理由とともにレポートに残ります。
パイプラインで使う
ファーストパーティの GitHub Action が Draugr をインストールし、スキャナーを準備して、統合した SARIF をコードスキャンに渡します。Security タブには、すっきりと Draugr ツールが 1 つ表示されます。
permissions:
contents: read
security-events: write
steps:
- uses: actions/checkout@v4
- id: draugr
uses: draugr-dev/draugr@v0 # pin @vX.Y.Z for reproducible CI
with:
saga: draugr.saga.yaml
tools: true # provision the scanners the controls need
- if: always() # publish findings even when the gate fails
uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: ${{ steps.draugr.outputs.sarif }}
GitHub Actions · GitLab では、include、GitLab 独自のレポート形式、マージリクエストへの固定コメントを利用できます · Azure Pipelines では、ステップテンプレートを利用できます
AI コーディングアシスタントから。 アシスタントに変更をチェックするよう頼むと、アシスタントは見つけたスキャナーを使い、自分で選んだ範囲をスキャンします。draugr mcp は Model Context
Protocol 経由で Draugr を提供するため、代わりに コミット済み のディスクリプターを読み取ります。ライブホストの調査やサードパーティへのデータ送信など、チェックアウトの読み取りにとどまらないスキャンを行う場合は、まず確認を求めます。
claude mcp add draugr -- draugr mcp
AI コーディングアシスタントから Draugr を使うを参照してください。
ドキュメント
- クイックスタート、インストール、最初のスキャン、最初の調査、CI
- コンセプト、ディスクリプター、コントロール、スキャナー、判定
- Saga スキーマ · CLI リファレンス、 すべてのフィールド、すべてのフラグ
- インテグレーションカタログ、ライセンスと利用規約を含むすべてのスキャナー
- コントリビューション · 変更履歴
Draugr が保証しないこと
判定が合格でも、設定したコントロールが検出対象を見つけられなかったことを意味するにすぎません。ソフトウェアが安全であることを示すものではありません。ディスクリプターに宣言されていない事項、有効にしていないコントロール、および基盤となるスキャナーが見逃すものについては、何も示しません。ライセンスに関する検出結果は情報であり、法的助言ではありません。Draugr は Apache-2.0 のもとで提供され、保証はありません。
スキャナーに適用される利用規約や、ライブエンドポイントをスキャンする際の承認取得に関するお客様の責任など、詳細についてはスコープと免責事項を参照してください。
セキュリティとサプライチェーン
セキュリティツールは、自らが検査する対象と同じ基準を自らにも適用すべきです。Draugr はそうしています。
-
標準出力。すべての検出結果は SARIF 2.1.0(OASIS)に正規化されるため、結果を GitHub/GitLab/Azure DevOps のコードスキャンや、SARIF 対応ツールに取り込めます。
-
署名付きリリースと来歴情報。リリースアーカイブの
checksums.txtは cosign(Sigstore)で キーレス署名され、checksums.txt.sigstore.jsonバンドルに格納されます。また、各リリースでは SLSA ビルド来歴の証明書(gh attestation verify …)が公開されます。インストール前に検証してください (手順)。 -
SBOM。すべてのリリースアーカイブについて、Syft の SBOM が公開されます。
-
検証済みツール。
draugr tools installは SHA-256 で固定されたスキャナーを取得し、上流が署名している場合は cosign の署名も検証します。cosign 自体もインストールできるため、検証に必要なものがすべて揃います。 -
自分たちもスキャンします。Draugr はすべての PR で自らのリポジトリを実行し(自分自身を使ったスキャン)、 OpenSSF Scorecard (上のバッジ)でサプライチェーンの状況を追跡しています。
Scorecard は
SAST: 0と報告していますが、このままにしている理由を説明しておきます。このリポジトリでは静的解析を実行しています。すべてのスキャンで、Draugr 独自のsastコントロールを通じて Semgrep と gosec を実行し、すべてのプルリクエストでgolangci-lint内からも gosec を実行しています。Scorecard は認識している特定のツール群を対象にしていますが、私たちが使っているツールはその対象に含まれていません。数値を上げるためだけに静的解析ツールをもうひとつ追加するのは、何も検証しないままコードに触れるテストを書き、指標だけを改善して、その指標が示す本質を改善しないのと同じです。解析の実態よりスコアが誤っているほうがよいと考えています。スコアではなく解析結果を確認したい場合は、スキャン自体がアップロードした検出結果を、リポジトリの Security タブで確認できます。
-
脆弱性の報告。SECURITY.md をご覧ください。
開発
Go 1.26 以降が必要です。make build は ./bin/draugr をビルドします。make gate は fmt、
vet、lint、カバレッジ付きの race テスト、govulncheck を含むローカルゲートをすべて実行します。CONTRIBUTING.md をご覧ください。
ライセンス
Draugr は Apache License 2.0 のライセンスに基づいています。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。