For the complete documentation index, see llms.txt. This page is also available as Markdown.

Pythonプロジェクト: セキュリティスキャンのベストプラクティス

Aikido は、Python の依存関係にある既知の脆弱性(CVE)を検出し、それらの依存関係で使用されているリスクのある、または望ましくないライセンスをフラグできます。

これを正確に行うには、Aikido は、それらのパッケージが依存しているものも含め、すべての依存関係の正確なバージョンにアクセスする必要があります。

Aikido はどのように依存関係とサブ依存関係を見つけるのでしょうか?

すぐに使える状態で、Aikido は依存関係スキャン用に次のファイルをサポートしています:

  • uv.lock

  • Pipfile.lock

  • poetry.lock

  • pdm.lock

  • requirements.txt (lockfile が存在しない場合のみフォールバック)

  • requirements.yml (lockfile が存在しない場合のみフォールバック)

もしあなたのプロジェクトに含まれているのが requirements.txt、Aikido は完全な依存関係ツリーを検出できない場合があります。

これは、pip がサブ依存関係の正確なバージョンを記録しないため、結果が不完全または古くなる可能性があるからです。

完全で信頼性の高いスキャンのために、lockfile を生成する最新の Python パッケージマネージャーである uv を使用することをおすすめします。

なぜ lockfile を使うのか?

  • 正確なセキュリティスキャン: lockfile には、解決されたすべての依存関係が正確なバージョン付きで含まれており、Aikido にリスク領域の全体像を提供します。

  • サプライチェーン攻撃からの保護: 固定することで、悪意あるパッケージを持ち込む可能性のある不要なバージョン変更を防げます。

  • 予測可能なビルド: すべての環境で同じバージョンがインストールされます。「自分の環境では動く」の問題が減ります。

  • より高速なインストール: 依存関係が固定されると、lockfile は負荷の高い解決ステップを省略します。

プロジェクトで lockfile の使用を始める方法

UV

そこから、 依存関係を定義し、uv に uv.lock ファイルを生成させます これにより、すべての依存関係とサブ依存関係の正確なバージョンが固定されます。

pyproject.toml と uv.lock の両方をリポジトリにコミットし、lockfile を手動で編集しないようにしてください。

現在プロジェクトで requirements.txt を使っている場合、 uv はそれらの依存関係を直接取り込み、lockfile を作成できます。これにより、Aikido は完全なバージョン精度で依存関係ツリー全体を検出できます。

プロジェクトのセットアップ、依存関係管理、移行についての詳しい手順は、次で確認できます: uv のドキュメント.

Poetry

そこから、 依存関係を定義し、Poetry に poetry.lock ファイルを生成させます これにより、すべての依存関係と、それらが依存するパッケージの正確なバージョンが固定されます。

pyproject.toml と poetry.lock の両方をリポジトリにコミットし、lockfile を手動で編集しないようにしてください。

プロジェクトのセットアップ、依存関係管理、移行についての詳しい手順は、次で確認できます: Poetry のドキュメント.

最終更新

役に立ちましたか?