概要
Gitlab と reCAPTCHA v2 を連携しログイン時にロボット化どうかを判定するチェックを導入してみました
v3 にはまだ対応していないので v2 を使いましょう
環境
- reCAPTCHA v2
- Gitlab 17.9.3
reCAPTCHA の登録
Gitlab は reCAPTCHA v3 をまだサポートしていないんどえ v2 のキーを取得しましょう
ここから申し込みます
GCP のプロダクトと紐づける必要があります
ドメインには Gitlab の URL を指定しましょう
サイトキーとシークレットキーが発行されるのでメモしておきます
また GCP 側のプロジェクトにも紐づいているのでそちらでも reCAPTCHA の情報を確認できます
Gitlab 側の設定
- Admin ユーザでログイン
- 左下の Admin ボタンをクリック
- 左メニュー Settings -> Reporting
- Spam and Anti-bot Protection
- Enable reCAPTCHA -> ON
- Enable reCAPTCHA for login. -> ON
- reCAPTCHA site key -> 先ほど取得したサイトキーを入力
- reCAPTCHA private key -> 先ほど取得したシークレットキーを入力
- Save Change
動作確認
Gitlab にアクセスしてログインページで reCAPTCHA が表示されることを確認します
表示されない場合は以下を試してください
- ブラウザのシークレットモードでアクセスする
- パスワードを何回か間違えて表示されることを確認
- ブラウザのキャッシュをクリアする
- 異なる IP の環境からアクセスする
一度信頼されている環境だと reCAPTCHA は表示されないので注意してください GCP 上の reCAPTCHA でも保護がカウントされていることが確認できます
gitlab.rb の編集
これはいらないかもです
一応入れておくと安心です
Omnibus Gitlab であれば docker-compose.yml などに記載しましょう
- vim /etc/gitlab/gitlab.rb
nginx['proxy_set_headers'] = { 'X-GitLab-Show-Login-Captcha' => '1' }
ロックアウトされた場合は
DB に直接触れたり Admin 権限のあるアクトークンがあるのであれば API から reCAPTCHA を一時的に無効にすることも可能です
curl --request PUT --header \
"PRIVATE-TOKEN: <PersonalAccessToken>" \
"https://gitlab.example.com/api/v4/application/settings?recaptcha_private_key=<SecretKey>&recaptcha_site_key=<SiteKey>"
最後に
Gitlab と reCAPTCHA を連携してみました
テストする場合はロックアウトされる可能性もあるのでログイン状態を保持したブラウザを用意しておくことをおすすめします



0 件のコメント:
コメントを投稿