[Rails 7.2から新規アプリケーションにおいてBrakemanがデフォルトで有効になりました。 ](https://railsguides.jp/7_2_release_notes.html#brakeman%E3%81%8C%E6%96%B0%E8%A6%8F%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%A7%E3%83%87%E3%83%95%E3%82%A9%E3%83%AB%E3%83%88%E3%81%A7%E6%9C%89%E5%8A%B9%E3%81%AB%E3%81%AA%E3%81%A3%E3%81%9F) このTopicでは、7.1以前で作成した既存RailsアプリにBrakemanを後から導入して、Brakemanに関して7.2の新規アプリ相当の状態にセットアップする方法をご紹介します。 ### Brakemanのインストール まず以下のように、Gemfileの`group :development, :test`のところにbrakemanを追加します。 ```ruby group :development, :test do # Static analysis for security vulnerabilities [https://brakemanscanner.org/] gem "brakeman", require: false end ``` 次に`bundle install`を実行します。 ```sh bundle install ``` 以上でBrakemanのインストールが出来ました。 ### ローカル環境でのBrakemanの実行 以下のコマンドでBrakemanを実行でき、デフォルトのチェックを行えます。 ```sh bundle exec brakeman ``` 全てのチェックを実行する場合には、以下のオプション付けて実行します。 ```sh bundle exec brakeman -A ``` 警告の無視に関する設定と管理を行う場合は、以下のオプション付けて実行します。 ```sh bundle exec brakeman -I ``` 以下のように、これら2つのオプションを同時に指定して実行することも出来ます。 ```sh bundle exec brakeman -IA ``` なお、Brakemanの詳細については[公式ドキュメント](https://brakemanscanner.org/docs/)をご覧ください。 また、brakemanコマンドのオプションについては[日本語訳](https://brakemanscanner.org/docs/options/ja)もあります。 ### GitHubワークフロー(CI)でのBrakemanの実行 .github/workflows/ci.ymlに相当するファイルがなければ作成します。 この.ymlファイルを編集して、以下のように`jobs`の下に`scan_ruby`ジョブを追加します。 #### ymlファイルの設定に関する注意点 - `timeout-minutes:`の設定は、実行時間に対して十分余裕を持たせて下さい。 - 「`ruby-version: .ruby-version`」という設定は、プロジェクトルートにある.ruby-versionという名前のファイルで指定されているrubyのバージョンという意味になります。[この設定についての詳細はこちらのTopicをご覧下さい。](https://www.techtips.page/ja/topics/161) ```yaml jobs: scan_ruby: runs-on: ubuntu-latest timeout-minutes: 10 steps: - name: Checkout code uses: actions/checkout@v4 - name: Set up Ruby uses: ruby/setup-ruby@v1 with: ruby-version: .ruby-version bundler-cache: true - name: Scan for common Rails security vulnerabilities using static analysis run: bundle exec brakeman --no-pager ```