# Gradleを使用するJava/Scala/Kotlinプロジェクト: セキュリティスキャンのベストプラクティス

Aikido は、Java の依存関係に含まれる既知の脆弱性（CVE）だけでなく、それらの依存関係で使用されている危険なライセンスも検出できます。

Aikido は、それらの依存関係とその推移的なサブ依存関係をどのように見つけるのですか？

Aikido は標準で、スキャン対象として以下のファイルをサポートしています:

* gradle.lockfile
* pom.xml
* .jar/.war/.ear

build.gradle.\*（Gradle マニフェスト）ファイルには、依存関係の一部について正確なバージョンが含まれていない場合があることに注意してください。これにより、Aikido がアプリケーション内のリスクの全範囲を検出できない可能性があります。

各依存関係とサブ依存関係ごとに正確なバージョンを含む Gradle のロックファイルを使用することを推奨します。

Aikido によるセキュリティスキャンを容易にする以外にも、ロックファイルを使う理由があります:

* ロックファイルを使うことで、悪意のあるパッケージを介したサプライチェーン攻撃から身を守れます。この種の攻撃はますます一般的になっています
* ロックファイルを使うと、誰もがパッケージのまったく同じマイナーバージョンを使用するため、ビルドの予測可能性が高まります。「自分の環境では動く」問題が起こりにくくなります。
* ビルド時間の短縮: もはや依存関係の解決が不要になります

## Gradle プロジェクトでロックファイルの使用を始めるには？ <a href="#how-to-start-using-lockfiles-in-your-gradle-project" id="how-to-start-using-lockfiles-in-your-gradle-project"></a>

リポジトリにロックファイルを入手する方法は 2 つあります。

**方法 1: Aikido に作成させる（推奨）**

リポジトリに `build.gradle` または `build.gradle.kts` がある一方で対応する `gradle.lockfile`がない場合、Aikido はこれを自動検出し、 **プルリクエストを開いて** 作成できます。 *注:* [*AutoFix*](https://help.aikido.dev/aikido-autofix/overview-aikido-autofix) *このオプションを有効にする必要があります。*

**手順 1.** ロックファイルが不足している該当のリポジトリに移動してください

**手順 2.** 上部にあるロックファイルの提案を探してクリックしてください **PR を作成**<br>

<figure><img src="https://help.aikidogov.us/_assets/009720482412/image-254.png" alt=""><figcaption></figcaption></figure>

**手順 3.** PR をレビューしてマージしてください。残りは Aikido が処理します

マージされると、Aikido はすぐに、すべての推移的依存関係を含む完全な依存関係ツリーをスキャンできるようになります。

**方法 2: 手動で追加する**

必要な設定を Gradle マニフェストファイルに追加してください。正確に追加すべき行については、 [Gradle ロックファイルのドキュメント](https://docs.gradle.org/current/userguide/dependency_locking.html#ex-locking-all-configurations) を参照してください。

次に、以下を実行します：

```
gradle dependencies --write-locks
```

生成されたロックファイルをリポジトリにコミットしてください。これは `package-lock.json` のように扱い、手動で編集しないでください。
