GitHubで依存関係のセキュリティの脆弱性を指摘された
プログラミングの勉強日記
2020年8月5日 Progate Lv.226
RailsのアプリをGitHubにプッシュしたら「One of your dependencies has a security vulnerability」というメールがたくさんきて、GitHubを見てみたら警告が出ていた。この対処法をまとめる。
セキュリティアラートの確認
「We found potential security vulnerabilities in your dependencies.
Only the owner of this repository can see this message.」
という警告が出ている。
(メールにもセキュリティ警告のメールがたくさん届いた。)
「See Dependabout alerts」をクリックすると詳細がわかる。(スクショを取り忘れてしまった、、)
私の場合は「Gemfile.lock」を書きかえるよう言われていた。Gemfile.lockなんていじったことないのに、なんで…?という感じだったのでいろいろ調べてみた。
対処法
ネットで調べてみた結果、コマンドでbundle update
を実行すれば解決するらしい。
bundle update
いくつかの警告は減ったが、それでも警告が残ってしまっていた。
警告内容を詳しく見てみると、railsとpumaを最新のバージョンにアップデートすればいいみたいだったので、Gemfileを書きかえた。(バージョンを指定しないと最新のgemがインストールされる)
#gem 'rails', '5.0.3'
#以下に書きかえる
gem 'rails'
#gem 'puma', '3.6.2'
#以下に書きかえる
gem 'puma'
Gemfileを書きかえたあとにbundle update
を実行する。
bundle update
実行したら、Gemfile
とGemfile.lock
をプッシュする。
警告が消えた!!
以上が解決方法である。
Gemfileはこちらの記事で触れているので、なんとなく理解しているが、Gemfile.lockがよくわからないので調べてみた。
GemfileとGemfile.lockの違い
Gemfileとは
インストールしたいgemを記述するファイル。
gem 'gemの名前'
と記述する。rails new
コマンドで生成されたGemfileにはすでにいくつかのgemが書かれてインストールされている。
gem 'gemの名前', 'gemのバージョン'
とすると、そのバージョンがインストールされる。バージョンを指定しないと、最新のgemがインストールされる。
Gemfile.lockとは
bundle install
した時に作られるもの。Gemfileと似ているが、Gemfileに書いていたgemが必要としている別のgemも含め、動作に必要な全てのgemが展開される。つまり、Gemfile.lockはGemfile には書いてなくても,依存している gem は書かれている。
gem 自体がインストールされたかされていないかに関わらず、bundle install
したときに「Gemfile」に書かれたgemについてのバージョンや名前は「Gemfile.lock」に書かれている。
Bundlerについて
Bundlerはgemを管理するためのgemのこと。bundle install
やbundle update
などを使用することができる。
Bundlerは「Gemifile」に書かれてあるgemの他に必要なgemもあり、それらを自動でインストールして「Gemifile.lock」に記述する。
違い
- Gemfileは、インストールするgemを指定するファイル。
- Gemfile.lockは、実際にインストールされたものを記載したファイル(全部のgemが書かれている)。Bundlerでインストールされるgemパッケージの依存関係の解決結果とバージョンを固定する役割がある。単にgemだけ書いてあるGemfileと違って、バージョンまで書いてある。
gem updateとbundle updateの違い
gem コマンドは「Gemfile」や「Gemfile.lock」とは無関係である。gem update はシステムにインストールされている gem について、それより新しいバージョンがあればその最新版をインストールする。
bundleコマンドは「Gemfile」と「Gemfile.lock」と関係している。「Gemfile.lock」は、bundle installすることで書き込まれる。(インストールを行った後に更新されている)
bundle install と bundle updateについて
bundle install:「Gemfile.lock」を元にgemのインストールを行う。新しい環境や、gemfileに新しくgemを記述したときに使う。
bundle update:「Gemfile」を元にgemのインストールを行う。
参考文献
GitHubでセキュリティ脆弱性のアラートが来てビビりながら対応した話
Githubから脆弱性を指摘されたのでメモ
Gemfile.lock が更新されるタイミングはいつなのか?
bundle installとupdateの使い方について
Author And Source
この問題について(GitHubで依存関係のセキュリティの脆弱性を指摘された), 我々は、より多くの情報をここで見つけました https://qiita.com/mzmz__02/items/c8f5337f2991ccdd5d4f著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .