比較
CRACIとMend.ioの比較
Mend.ioはコードと依存関係をスキャンし、到達可能なものに優先順位を付け、パッケージを最新の状態に保ちます。CRACIはビルドを実行し、実際に取り込んだものを記録します。一方はスキャンし、もう一方は観測します。両者は組み合わせて使えます。
更新日
結論から
Mend.ioはアプリケーションセキュリティプラットフォームです。Mend AppSecは、自社コード向けのMend SASTと、オープンソースの依存関係やコンテナ向けのMend SCAを組み合わせたもので、Mend Renovateは自動プルリクエストで依存関係を最新に保ちます。CRACIはGitHub Actions互換のCIランナーで、ビルドが取得するすべての外部依存関係を記録し、その記録からSBOM、来歴、コンプライアンスのエビデンスを作成します。Mendはスキャナーであり、CRACIはレコーダーです。現在Mendをお使いなら、CRACIは何かを置き換えるのではなく、レイヤーを1つ追加します。
一覧で比較
| 機能 | CRACI | Mend.io |
|---|---|---|
| ビルド実行中に依存関係を観測 | ランナー上のパッケージを認識するプロキシ | ビルドステップの後にプロジェクトをスキャン |
| 完全性の状態付きのビルド時SBOM | ジョブごと・キャッシュごとに5つの状態 | SPDXとCycloneDX、依存関係の変更に応じて再生成 |
| ビルドジョブのエグレスポリシー | デフォルト拒否または許可、フェイルクローズ | ビルドを実行しない |
| 継続的な脆弱性監視 | 監視対象のSBOMを継続的に再評価 | アプリケーションごとに継続更新されるインベントリ |
| 到達可能性による優先順位付け | 推移的依存関係までたどるコールグラフ | |
| 自社コードのSAST | Mend SAST、30以上の言語 | |
| ライセンスポリシー | ライセンスによるビルドのブロックを含むライセンスポリシールール | ポリシーを自動適用(例:AGPLのブロック) |
| IaCスキャン | Mend CLIがInfrastructure as Codeをスキャン | |
| CIジョブを実行 | ジョブはCRACIランナー上で実行 | 既存のCIに組み込み |
| 対応CIシステム | 現在はGitHub Actions、GitLab CIとJenkinsはロードマップに掲載 | Azure DevOps、Bitbucket、CircleCI、GitHub Actionsなど |
| 料金 | 1vCPU分あたり$0.002(2vCPUで$0.004)、秒単位で計測。月額料金なし、SBOMごとの課金なし | Mend AppSecはコントリビュートする開発者1人あたり年額最大$1,000、Renovate CLIは無料。2026年9月時点。 |
- 対応
- 一部対応
- 非対応
- ロードマップに掲載
Mend.ioが得意なこと
到達可能なものの優先順位付け。Mend SCAは、自社コードから直接・推移的依存関係までコールグラフをたどり、アプリケーションが実際に脆弱な関数を呼び出しているかを判断します。これにより、チームが対応すべき検出結果の一覧が絞り込まれます。CRACIはビルドとリポジトリをまたいで脆弱性を集約しますが、到達可能性分析は行いません。
依存関係だけでなくコードも。Mend SASTは30以上の言語に対応し、Mend CLIはオープンソースコンポーネント、カスタムコード、コンテナイメージ、Infrastructure as Codeをスキャンします。CRACIはこれらのいずれも行いません。
依存関係を最新に保つ。Mend Renovateは、90以上のパッケージマネージャーにわたって、古くなったパッケージのプルリクエストを作成します。Renovate CLIとCommunityエディションは無料で、Enterpriseではセキュリティ機能とサポートが加わります。
ライセンス、悪意のあるパッケージ、SBOM。Mend SCAは直接・推移的依存関係のライセンスを検出し、商用製品でのAGPLのブロックなどのポリシーを適用します。タイポスクワッティング、依存関係混乱攻撃(dependency confusion)、バックドアやデータ流出のコードを含むパッケージにフラグを付けます。SPDXとCycloneDXのSBOMを作成し、サードパーティのSBOMを取り込み、VEXデータを適用します。
CRACIの違い
再構成ではなく観測
Mend自身のドキュメントは、ビルドステップの後にスキャンすることを推奨しています。ビルドによってスキャナーがプライベートレジストリや外部の成果物にアクセスできるようになり、ビルドせずにスキャンすると不正確な結果になりうるためです。これは的を射た考え方です。CRACIはさらに一歩進めます。ビルド完了後にプロジェクトを読み取るのではなく、ビルドそのものを記録します。
ジョブの実行中、CRACIランナー上のパッケージを認識するプロキシが、npm、PyPI、RubyGems、Composer、Cargo、Go、Nix、OCI、apt、apk、Gitの各ソースとダウンロードプリセットへの通信を監視します。依存関係のエビデンスはCIキャッシュと一緒に引き継がれるため、キャッシュから復元されたパッケージも記録に残ります。各SBOMには、ジョブごと・キャッシュごとにComplete、Complete with connections、Incomplete、Unavailable、Not recordedのいずれかで完全性が示されます。
ビルドネットワークの制御
CRACIはジョブを実行するため、ジョブの接続先を制限できます。エグレスポリシーはデフォルト拒否またはデフォルト許可で、24種類の組み込みソフトウェアソースプリセットと、npm、PyPI、apt、apk、Goプロキシ、Nix、Cargo、OCIレジストリ、Git向けの型付きカスタムソースを備えています。ポリシーはジョブ開始前に検証され、フェイルクローズで動作します。Mendは、悪意のあるパッケージが依存関係ツリーに入った時点でそれを検出します。エグレスポリシーは、そもそもビルドがアクセスできるソースを制限します。2つのレイヤーは異なるタイミングで機能します。
ビルドから得るエビデンス
APIからSBOM、ネットワークトレース、来歴を取得できます。CRACIは来歴に署名しません。
どこに何がデプロイされているかのインベントリ
CRACIのインベントリビューでは、どのソフトウェアのバージョンがどの製品にデプロイされているかを、グローバルに正確に確認できます。新たな脆弱性が公開されたとき、リリースノートやスプレッドシートをつなぎ合わせなくても、影響を受けるバージョンを実行している製品がわかります。
どちらが適しているか
- 主な課題がコードと依存関係の検出結果の滞留である場合。SAST、到達可能性分析、Renovateを備えたMendは、まさにそのために作られています。
- 各リリースに何が入ったかを証明する必要がある場合。CRACIはビルドごとにそれを記録し、記録がどれだけ完全かを明示します。
- ビルドがロックファイルからのインストール以上のことを行う場合。ツールチェーンのダウンロード、ベースイメージ、curlでの取得こそ、観測が最も効果を発揮するところです。
- パイプラインがAzure DevOps、Bitbucket、CircleCI上にある場合。現時点ではMendが適しています。CRACIは現在GitHub Actionsのみに対応しており、GitLab CIとJenkinsはロードマップに掲載されています。
Cyber Resilience Actへの対応
Mend.ioは、CRAコンプライアンスガイドと、自社製品を規制に対応づけるコンプライアンスページを公開しています。CycloneDXとSPDXのSBOMおよび到達可能性に基づく優先順位付けにはMend AppSec、依存関係の更新による継続的な脆弱性対応にはMend Renovate、そしてセキュリティ態勢と並べて文書化されたライセンスコンプライアンス、という対応づけです。
CRACIはビルドからのエビデンスを提供します。完全性を明示した各リリースのSBOM、来歴、継続的な監視、CycloneDXまたはSPDXでのSBOMエクスポートです。企業がより広いCRAコンプライアンスのプロセスに必要とするソフトウェアサプライチェーンの可視性とエビデンスのかなりの部分を自動化します。単一のツールで製品がコンプライアンスを満たすことはありません。CRAコンプライアンスとCRAとはをご覧ください。
Mend.ioとCRACIを併用する
CRACIが置き換えるのはランナーであり、GitHub Actionsではありません。ワークフローでruns-onをcraciに変更しても、実行結果は引き続きGitHubのUIに表示されます。Mend CLIのステップはビルドの後のまま残せます。リリースパイプラインを1つCRACIで実行し、そのSBOMを同じコミットに対するMendのインベントリと比較してください。
CRACIは現在GitHub Actionsに対応しています。GitLab CI、Jenkins、その他のCIシステムはロードマップに掲載されています。ビルド時のSBOM生成と脆弱性トラッキングについて詳しくご覧ください。