-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[review] Blazer と GoodJob の追加認証 #40
Conversation
@@ -24,6 +24,9 @@ class Railtie < ::Rails::Railtie | |||
end | |||
|
|||
Blazer::Plus.blazer_danger_actionable_method ||= ->(blazer_user) { blazer_user.email.ends_with?('@sonicgarden.jp') } | |||
|
|||
# NOTE: すべての callback をすてているので致し方なく Blazer の用意している callback を利用する | |||
Blazer.before_action = :authenticate_to_access_blazer! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
これ何のために必要なんだろう?
Blazer側で既に機能として用意しているのだから、必要なプロジェクトはちゃんとblazer公式ドキュメントに記載のあるそちらの機能を利用するほうがむしろ分かりやすいし保守しやすい気がしました。
さらにこのやり方だと強制的に一つだけ設定可能なBlazer.before_action
設定が、暗黙的に使われてしまうことになるという点も将来トラブルポイントになりそうだなーと思いました。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
blazer authenticate などの認証に不備があったとき(実装漏れなど)に、誰もアクセスできない状態にしておきたい、認証処理の実装に強制力をもたせておきたいというのが目的です
では、これがそれをできているかというと、完全ではないと思うのですが、ないよりはよいのかなというところ
なので、ここで認証したいわけではなく、認証が抜けた状態でリリースできない、などの仕組みでもよいかも
特定の CI を必須化してそこでテスト通過しないとリリースできないとか
一つだけ設定可能なBlazer.before_action設定が、暗黙的に使われてしまうことになるという点も将来トラブルポイントになりそうだなー
全くもって同意です、やりたくないですよね
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
blazer authenticate などの認証に不備があったとき(実装漏れなど)に、誰もアクセスできない状態にしておきたい
ちなみに実際にそういった問題がおきたということですか?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
問題はおきてないけど、おきたときのインパクトがかなり大きいので、ガード強化しておきたいって思いがあります
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
実際に問題が起きたことあるなら、そのケースに対する対処方法ということで考えやすいかもですけど、認証といっても色々な方法で設定するやり方があるので、その全てが漏れていたケースを検知やガードしたいということだと難しいんじゃないかなーと思いました。
READMEにあるだけでも以下の3パターンがあるなと。
- 環境変数によるベーシック認証
- routes.rbによる制御
- before_actionによる制御
https://github.com/ankane/blazer?tab=readme-ov-file#authentication
|
||
def authenticate_to_access_good_job! | ||
return unless defined?(::GoodJob) | ||
return unless self.class.module_parent == ::GoodJob |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
good_job に関してもgem標準の機能で簡単に認証を追加出来るので、独自仕様の仕組みを追加するよりもgem標準で用意されている機能を用意するほうがメンテナブルだと思います。
標準で用意されている機能だけで不足があるのであれば、good_jobに関してはちゃんと目的伝えた上でPR送れば取り込んでくれる率も高いし、ピタゴラスイッチ的にモンキーパッチ当てていくより、普通にPR送るほうがいいんじゃないかとも思いました。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
こちらも目的は blazer と同様で、認証がなかったらアクセスできないようにで(リリースできないように)できればよいですね
適切な認証処理を実装することに強制力かチェックする仕組みがあればよいので
なにかよいアイデアがあれば是非 🙏
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
good_jobに関しては、既にproxy経由以外はデフォルトでアクセス不可になっているので、そういった目的なら対応不要な気がする?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
good_jobに関しては、既にproxy経由以外はデフォルトでアクセス不可になっている
そうですね good_jobに関しては、あったほうがよいけど、ここまでする必要はない気もします
方針から再検討するため、一旦このPRはクローズします |
以下のメソッドを initializer や
config/application.rb
などで定義する