Gradleを使うJava/Scala/Kotlinプロジェクト: セキュリティスキャンのベストプラクティス
Aikidoは、Javaの依存関係における既知の脆弱性(CVE)だけでなく、それらの依存関係が使用している危険なライセンスも検出できます。
Aikidoはどのようにしてこれらの依存関係とその推移的なサブ依存関係を見つけるのでしょうか。
Aikidoは標準で以下のファイルをスキャン対象としてサポートしています。
- gradle.lockfile
- pom.xml
- .jar/.war/.ear
build.gradle.*(Gradleマニフェスト)ファイルは、一部の依存関係について正確なバージョンを含んでいない場合がある点に注意してください。これにより、Aikidoがアプリケーション内のリスクを完全には検出できないことがあります。
各依存関係とサブ依存関係の正確なバージョンを含むGradle ロックファイルを使用することを推奨します。
ロックファイルを使用することには、Aikidoによるセキュリティスキャンを容易にする以外にも理由があります。
- ロックファイルを使用することで、悪意あるパッケージによるサプライチェーン攻撃から保護されます。この種の攻撃は増加傾向にあります
- ロックファイルを使用することで、全員が全く同じマイナーバージョンのパッケージを使うためビルドの再現性が高まります。「自分の環境では動く」問題が起きにくくなります
- ビルド時間の短縮: 依存関係解決が不要になります
Gradleプロジェクトでロックファイルを使い始めるには
Section titled “Gradleプロジェクトでロックファイルを使い始めるには ”リポジトリにロックファイルを導入する方法は2つあります。
オプション1: Aikidoに作成させる(推奨)
リポジトリにbuild.gradleまたはbuild.gradle.ktsがあり、対応するgradle.lockfileが存在しない場合、Aikidoはこれを自動的に検出し、生成のためのプルリクエストを開くことができます。注: このオプションを利用するにはAutoFixを有効にする必要があります。
ステップ1. ロックファイルが不足している該当リポジトリに移動します
ステップ2. 上部に表示されるロックファイルの提案を確認し、Create PRをクリックします

ステップ3. PRをレビューしてマージします。あとはAikidoが処理します
マージが完了すると、Aikidoはすべての推移的依存関係を含む依存関係ツリー全体を即座にスキャンできるようになります。
オプション2: 手動で追加する
Gradleマニフェストファイルに必要な設定を追加します。追加すべき正確な記述についてはGradle ロックファイルのドキュメントを参照してください。
その後、以下を実行します。
gradle dependencies --write-locks生成されたロックファイルをリポジトリにコミットします。Node.jsのpackage-lock.jsonと同様に扱い、手動で編集しないでください。