0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Pythonの依存関係を安全に保つ ― pip-auditの活用法

Posted at

はじめに

PythonでWebアプリや機械学習の開発をしていると、外部ライブラリに依存することが多くなります。
FlaskDjangorequestsなど便利なパッケージは数多く存在しますが、それらの中にはセキュリティ上の脆弱性が報告されているものも少なくありません。
古いバージョンを使い続けていると、情報漏洩や不正アクセスのリスクが高まってしまいます。そこで役立つのが pip-audit です。


pip-auditとは?

pip-auditは、Pythonパッケージの脆弱性診断ツールです。
Node.jsのnpm auditに相当するもので、プロジェクトや仮想環境で利用している依存関係を調べ、既知の脆弱性がないかをチェックしてくれます。

背後では以下のデータベースを利用しています。

特徴まとめ

  • 依存関係の脆弱性を検出
  • 修正可能なバージョンを提案
  • requirements.txtPipfile など複数形式に対応
  • JSONなど機械可読形式の出力に対応し、CI/CDに組み込みやすい
  • --fix オプションで自動更新も可能

インストール方法

pip install pip-audit

基本的な使い方

1. 現在の環境をスキャン

pip-audit

2. requirements.txtを対象にする

pip-audit -r requirements.txt

3. JSON形式で出力(CI/CDで便利)

pip-audit -r requirements.txt -f json

4. 自動修正(可能な場合のみアップデート)

pip-audit --fix

⚠️ 注意: 自動修正は便利ですが、互換性が崩れる可能性があるため、テストを通したうえで利用してください。


出力例

Flask 1.0 に既知の脆弱性が含まれていた場合の例です。

Found 1 known vulnerability in 1 package
Name     Version   ID             Fix Versions
-------  --------  -------------  ------------
flask    1.0       PYSEC-2019-179 1.0.2

👉 この場合、Flaskを1.0.2以上に更新することで解決できます。


実務での活用

  • CI/CDに組み込む
    GitHub ActionsやGitLab CIで定期的に依存関係をチェックし、脆弱性があれば通知する仕組みを作ると安心です。

  • 古いプロジェクトの棚卸し
    長期間メンテされていないPythonプロジェクトを引き継いだ際、まずpip-auditで安全性を確認するのは有効です。


他ツールとの違い

Pythonには他にもセキュリティ関連ツールがあります。

  • bandit
    → ソースコードの静的解析。危険な書き方や脆弱なコードパターンを検出。

  • safety
    → 依存関係の脆弱性チェックに特化。

  • pip-audit
    safetyに近いが、PyPAが公式に関わっており、CI/CDとの親和性が高いのが特徴。


まとめ

pip-auditは、Pythonプロジェクトの依存関係を安全に保つための強力なツールです。

  • 導入は簡単
  • 日常的なチェックにもCI/CDにも活用可能
  • 他ツールと組み合わせることで、より堅牢なセキュリティ体制を構築できる

セキュリティリスクを放置すると重大な被害につながりかねません。
ぜひ今日からプロジェクトにpip-auditを取り入れて、安全なPython開発を実現してみてください。 🚀

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?