Pythonプロジェクト: セキュリティスキャンのベストプラクティス
Aikido は、Python の依存関係にある既知の脆弱性(CVE)を検出し、それらの依存関係で使用されているリスクのある、または望ましくないライセンスをフラグできます。
これを正確に行うには、Aikido は、それらのパッケージが依存しているものも含め、すべての依存関係の正確なバージョンにアクセスする必要があります。
Aikido はどのように依存関係とサブ依存関係を見つけるのでしょうか?
すぐに使える状態で、Aikido は依存関係スキャン用に次のファイルをサポートしています:
uv.lockPipfile.lockpoetry.lockpdm.lockrequirements.txt(lockfile が存在しない場合のみフォールバック)requirements.yml(lockfile が存在しない場合のみフォールバック)
もしあなたのプロジェクトに含まれているのが requirements.txt、Aikido は完全な依存関係ツリーを検出できない場合があります。
これは、pip がサブ依存関係の正確なバージョンを記録しないため、結果が不完全または古くなる可能性があるからです。
完全で信頼性の高いスキャンのために、lockfile を生成する最新の Python パッケージマネージャーである uv を使用することをおすすめします。
なぜ lockfile を使うのか?
正確なセキュリティスキャン: lockfile には、解決されたすべての依存関係が正確なバージョン付きで含まれており、Aikido にリスク領域の全体像を提供します。
サプライチェーン攻撃からの保護: 固定することで、悪意あるパッケージを持ち込む可能性のある不要なバージョン変更を防げます。
予測可能なビルド: すべての環境で同じバージョンがインストールされます。「自分の環境では動く」の問題が減ります。
より高速なインストール: 依存関係が固定されると、lockfile は負荷の高い解決ステップを省略します。
プロジェクトで lockfile の使用を始める方法
UV
始めるには、 uv をインストールし と pyproject.toml でプロジェクトをセットアップし まだない場合は。
そこから、 依存関係を定義し、uv に uv.lock ファイルを生成させます これにより、すべての依存関係とサブ依存関係の正確なバージョンが固定されます。
pyproject.toml と uv.lock の両方をリポジトリにコミットし、lockfile を手動で編集しないようにしてください。
現在プロジェクトで requirements.txt を使っている場合、 uv はそれらの依存関係を直接取り込み、lockfile を作成できます。これにより、Aikido は完全なバージョン精度で依存関係ツリー全体を検出できます。
プロジェクトのセットアップ、依存関係管理、移行についての詳しい手順は、次で確認できます: uv のドキュメント.
Poetry
始めるには、 Poetry をインストールし、pyproject.toml でプロジェクトをセットアップし まだない場合は。
そこから、 依存関係を定義し、Poetry に poetry.lock ファイルを生成させます これにより、すべての依存関係と、それらが依存するパッケージの正確なバージョンが固定されます。
pyproject.toml と poetry.lock の両方をリポジトリにコミットし、lockfile を手動で編集しないようにしてください。
プロジェクトのセットアップ、依存関係管理、移行についての詳しい手順は、次で確認できます: Poetry のドキュメント.
最終更新
役に立ちましたか?