open-riskarmは、Webアプリケーションの脆弱性診断を効率化するための管理ツールです。診断対象の管理、指摘事項の登録・進捗管理、レポート生成などができます。
- 診断対象管理: 診断対象のWebサイト(ドメイン)情報を登録・管理
- 指摘事項管理: 脆弱性や改善点の情報を登録し、ステータス(未着手, 対応中, 対応完了, 確認済み)を管理
- 担当者・レビュアー設定: 各指摘事項に担当者とレビュアーを割り当て
- テンプレート機能: よく利用する指摘事項をテンプレートとして保存し、再利用
- レポート自動生成: 管理している情報から、PDF形式の脆弱性診断レポートを生成
- Discord連携: 各種更新情報をDiscordに通知
- uv
- Python 3.9 以降
- Node.js 18.x 以降
- pnpm
git clone https://github.com/4equest/open-riskarm.git
cd open-riskarmプロジェクトのルートディレクトリに .env ファイルを作成することで、設定を上書きできます。
デフォルトではデータベースに app.sqlite が使用されます。
# .envファイルの設定例
# データベース(どこか別の所で管理するなら)の接続先 (デフォルト: sqlite:///app.sqlite)
SQLALCHEMY_DATABASE_URI=postgresql://user:password@host:port/dbname
# Flaskのシークレットキー
SECRET_KEY=your-super-secret-key
# JWTのシークレットキー
JWT_SECRET_KEY=your-super-secret-jwt-key
-
Python仮想環境の作成
uv venv
-
依存ライブラリのインストール
uv pip install -r requirements.txt
もしかしたらuv syncの方がいいかもしれない 動かなかったら各自で追加してください
-
Playwrightが利用するブラウザのインストール (PDF生成用)
uv run playwright install
-
データベースのマイグレーション(基本必要なし)
uv run flask db upgrade
-
初期データ(管理者アカウント)の投入
- ユーザー名:
admin - パスワード:
4equest
uv run flask seed
- ユーザー名:
cd frontend
pnpm installconcurrentlyでバックエンドとフロントエンドのサーバーが同時に起動します。
cd ..
pnpm dev- バックエンド (Flask):
http://127.0.0.1:5000 - フロントエンド (React):
http://127.0.0.1:5173
pm2 を使ってアプリケーションを永続化して実行する場合、プロジェクトのルートディレクトリで以下のコマンドを実行します。
事前にフロントエンドのビルドが必要です。
# フロントエンドのビルド
cd frontend
pnpm build
# ルートディレクトリに戻ってpm2を起動
cd ..
pm2 start ecosystem.config.js- ログイン: 初期管理者アカウント (
admin/4equest) でログインします。 - ユーザー作成: [Admin] -> [User Management] から、診断を担当する一般ユーザーを作成します。
- ドメイン作成: [Domains] ページから、診断対象のWebサイト情報を登録します。
- 指摘事項登録: 作成したドメインの詳細ページから、脆弱性や改善点などの指摘事項を登録します。テンプレートを利用することも可能です。
- 進捗管理: 各指摘事項のステータスを更新し、担当者やレビュアーを割り当てます。
- レポート生成: ドメイン詳細ページから、PDF形式のレポートを生成・ダウンロードします。
データベースのモデルに変更を加えた場合は、以下の手順でマイグレーションスクリプトを作成・適用してください。
-
マイグレーションスクリプトの自動生成
uv run flask db migrate -m "変更内容の要約" -
生成されたスクリプトの確認・修正 (必要に応じて) (
migrations/versions/以下に生成されます) -
マイグレーションの適用
uv run flask db upgrade