プロジェクト

全般

プロフィール

QA #1276

未完了

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

奈良 裕記 さんがほぼ3年前に追加. 2年以上前に更新.

ステータス:
回答済
優先度:
通常
担当者:
カテゴリ:
-
対象バージョン:
-
開始日:
2021/06/20
期日:
進捗率:

0%

予定工数:

説明

■現象/要望

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の対処が困難である。
・ドメイン単位の自動承認は、インターネット上よりもイントラ上でニーズがありそう。


ファイル

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

奈良 裕記 さんがほぼ3年前に更新

奈良 裕記 さんがほぼ3年前に更新

奈良 裕記 さんが2年以上前に更新

奈良 裕記 さんが2年以上前に更新

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のみを削除対象としている。(安全サイドに処理)

奈良 裕記 さんが2年以上前に更新

  • 説明 を更新 (差分)
  • ステータス新規 から 回答済 に変更
  • 担当者奈良 裕記 にセット

奈良 裕記 さんが2年以上前に更新

奈良 裕記 さんが2年以上前に更新

奈良 裕記 さんが2年以上前に更新

他の形式にエクスポート: Atom PDF