Project

General

Profile

Actions

QA #1276

open

SPAMユーザ登録対処/ユーザ登録効率化

Added by 奈良 裕記 11 months ago. Updated 6 months ago.

Status:
回答済
Priority:
通常
Assignee:
Category:
-
Target version:
-
Start date:
06/20/2021
Due date:
% Done:

0%

Estimated time:

Description

■現象/要望

Redmineでインターネットからのユーザ登録を受け付けている場合、大量のSPAMユーザが登録申請する場合がある。
SPAMユーザの削除を効率化すると共に、条件に合ったユーザは自動登録したい。
(ユーザ誤削除の対策として、削除時にログインIDを入力する仕様となった。大量のSPAMユーザの削除に毎回IDを入力するのは現実的な操作ではない。)

SPAMユーザ登録状況

■解決策

1.Redmine4.2で実装された、メールアドレス/ドメインによる登録禁止機能を利用し、SPAMユーザの登録余地を減らす。
  https://redmine.jp/faq/general/allowed-disallowed-email-domains/

2.指定メールアドレス/ドメインの自動登録は、pythonなどで周期的に登録処理を実施すればよい。(別サーバ定期処理可能)

インターネット上で大半のSPAMユーザIDはgmailのアカウントであり、インターネット上Redmineサイトでは1と2は事実上実現困難である。

3.SPAMユーザIDの削除作業を効率的に実施するスクリプトを実行する。
(登録承認待ちユーザIDのリストから削除)
登録承認待ちユーザを一括してロック(使用不可)とし、本来ユーザだけ戻した方が良いかもしれない。(動作未確認)

#note-4

■対応状況

・SPAMユーザIDの削除作業を効率的に実施するスクリプトを実施する。
(登録承認待ちユーザIDのリストから削除)
#note-4

■補足

・SPAMMER/本来ユーザ共にgmailの比率が非常に高く、ドメイン単位の登録制限ではSPAMMERの対処が困難である。
・ドメイン単位の自動承認は、インターネット上よりもイントラ上でニーズがありそう。


Files

delete_redmine_loginid.py (1.76 KB) delete_redmine_loginid.py 登録承認待ちのユーザをCSVファイルを参照し削除 奈良 裕記, 11/22/2021 02:38 AM
redmine-spam-users.png (297 KB) redmine-spam-users.png SPAMユーザ登録状況 奈良 裕記, 11/22/2021 03:00 AM
Actions #1

Updated by 奈良 裕記 11 months ago

  • Description updated (diff)
Actions #2

Updated by 奈良 裕記 11 months ago

  • Description updated (diff)
Actions #3

Updated by 奈良 裕記 10 months ago

  • Description updated (diff)
Actions #4

Updated by 奈良 裕記 6 months ago

Redmine登録承認待ちユーザの一括削除処理

ユーザ誤削除の対策として、Redmineでは管理画面上のユーザ削除処理時に、削除対象のログインIDを入力する仕様となっている。
大量のSPAMユーザを削除する場合、全員分のIDを入力するのは現実的な操作ではなく、一括削除処理が必要である。

しかし、削除直前に正常なユーザ登録が行われる可能性もあるため、登録承認待ちのIDを単純に全部削除するのは危険。
そのため、一旦登録承認待ちのユーザID一覧を出力し、内容の確認後に一括削除する処理をpythonで作成した。

事前作業

RedmineのRESTAPIで利用可能とする。
python3の実行環境を用意する。 python-redmine をインストールする。
本チケット添付ファイルの delete_redmine_loginid.py をダウンロードする。
下記の3行を、実行環境に合わせて編集する。

redmine_url='https://対象RedmineサーバURL'
redmine_key='システム管理権限ユーザのAPIKEY'
del_csvfilename="登録承認待ユーザIDのCSVファイルフルパス"

登録承認待ちユーザの削除作業

Redmineの画面上で、管理/ユーザ一/ステータス=登録を選択、
右下の、他の形式にエクスポート:CSVを押し、CSVファイルとしてダウンロードする。
(ここで、ステータス=「登録」となっているが、登録済ではなく、登録承認待の位置付けである。)

ダウンロードしたCSVファイルを直接EXCELで読み込み、削除対象外のユーザ行を削除して、そのままCSVファイルとして保存する。
登録承認するユーザIDがあれば、ここで右側の「有効にする」を押して有効にする。(安全サイドに操作)

保存したCSVファイルのフルパスを、pythonスクリプト最初の del_csvfilename に設定する。

python3上で、delete_redmine_loginid.py を実行すると、CSVファイルに登録されていたユーザIDが削除される。

補足事項

・CSVファイル上のユーザIDを全員削除する場合には、ダウンロードしたファイルをそのまま利用して構わない。
・EXCELで編集し別名で保存した場合、デフォルトの保存先フォルダは、ダウンロードフォルダではなくドキュメントフォルダになる。
・CSVファイルの先頭行をカラム名と仮定している。CSVファイルの先頭行が削除ユーザIDの場合は、header = next(f)の行を削除する必要がある。
・本スクリプトでは登録承認待ちのIDのみを削除対象としている。(安全サイドに処理)

Actions #5

Updated by 奈良 裕記 6 months ago

  • Description updated (diff)
  • Status changed from 新規 to 回答済
  • Assignee set to 奈良 裕記
Actions #6

Updated by 奈良 裕記 6 months ago

  • Description updated (diff)
Actions #7

Updated by 奈良 裕記 6 months ago

Actions #8

Updated by 奈良 裕記 6 months ago

  • Description updated (diff)
Actions

Also available in: Atom PDF