Page MenuHomePhabricator

Move "privileged account' concept into MediaWiki core
Closed, ResolvedPublic

Description

IMO the kind of authentication logging we are doing is expected from any decent application by default and should live in core. (Also, for obvious reasons the config files are a poor place for business logic.) The only reason this is not trivial to do is the wfGetPrivilegedGroups method which is used to enrich the logs and is somewhat WMF-specific. We should probably move it (and the whole logging) to core.

We could have a static User::getPrivilegedGroups() method, a $wgPrivilegedGroups config settings which defaults to admin/bureaucrat/interface-admin and a GetPrivilegedGroups hook for CentralAuth and similar extensions to tie into.


See also:

Event Timeline

Change 482589 had a related patch set uploaded (by Gergő Tisza; owner: Gergő Tisza):
[mediawiki/core@master] Add User::getPrivilegedGroups()

https://gerrit.wikimedia.org/r/482589

chasemp triaged this task as Medium priority.Dec 9 2019, 4:42 PM
chasemp added a project: Security-Team.

Change 482589 had a related patch set uploaded (by Reedy; owner: Gergő Tisza):
[mediawiki/core@master] Add UserManager::getUserPrivilegedGroups()

https://gerrit.wikimedia.org/r/482589

Change 482589 merged by jenkins-bot:

[mediawiki/core@master] Add UserGroupManager::getUserPrivilegedGroups()

https://gerrit.wikimedia.org/r/482589

Change 954628 had a related patch set uploaded (by Reedy; author: Gergő Tisza):

[mediawiki/core@REL1_40] Add UserGroupManager::getUserPrivilegedGroups()

https://gerrit.wikimedia.org/r/954628

Change 954629 had a related patch set uploaded (by Reedy; author: Gergő Tisza):

[mediawiki/core@REL1_39] Add UserGroupManager::getUserPrivilegedGroups()

https://gerrit.wikimedia.org/r/954629

Change 954730 had a related patch set uploaded (by Reedy; author: Reedy):

[mediawiki/core@master] UserGroupManager: Fixup getUserPrivilegedGroups docs

https://gerrit.wikimedia.org/r/954730

Change 954730 merged by jenkins-bot:

[mediawiki/core@master] UserGroupManager: Fixup getUserPrivilegedGroups docs

https://gerrit.wikimedia.org/r/954730

Change 954629 merged by jenkins-bot:

[mediawiki/core@REL1_39] Add UserGroupManager::getUserPrivilegedGroups()

https://gerrit.wikimedia.org/r/954629

Change 954628 merged by jenkins-bot:

[mediawiki/core@REL1_40] Add UserGroupManager::getUserPrivilegedGroups()

https://gerrit.wikimedia.org/r/954628

Change 954742 had a related patch set uploaded (by Reedy; author: Reedy):

[mediawiki/core@master] Expose PrivilegedGroups to extension schema

https://gerrit.wikimedia.org/r/954742

Change 955757 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/extensions/WikiLambda@master] Flag functioneer and functionmainters as privileged

https://gerrit.wikimedia.org/r/955757

Change 955767 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/extensions/CheckUser@master] Flag checkusers privileged

https://gerrit.wikimedia.org/r/955767

Change 955768 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/extensions/CentralAuth@master] Flag stewards as privileged

https://gerrit.wikimedia.org/r/955768

Change 955770 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/extensions/WikimediaIncubator@master] Flag test-sysops as privileged

https://gerrit.wikimedia.org/r/955770

OK, I've quickly read through every hit on this search and I think the only four production repos we care about rights from (beyond core itself) are as patched above:

[mediawiki/extensions/WikiLambda@master] Flag functioneer and functionmainters as privileged
https://gerrit.wikimedia.org/r/955757

[mediawiki/extensions/CheckUser@master] Flag checkusers privileged
https://gerrit.wikimedia.org/r/955767

[mediawiki/extensions/CentralAuth@master] Flag stewards as privileged
https://gerrit.wikimedia.org/r/955768

[mediawiki/extensions/WikimediaIncubator@master] Flag test-sysops as privileged
https://gerrit.wikimedia.org/r/955770

Change 954742 merged by jenkins-bot:

[mediawiki/core@master] Expose PrivilegedGroups to extension schema

https://gerrit.wikimedia.org/r/954742

Change 955064 had a related patch set uploaded (by Reedy; author: Reedy):

[mediawiki/core@REL1_40] Expose PrivilegedGroups to extension schema

https://gerrit.wikimedia.org/r/955064

Change 955065 had a related patch set uploaded (by Reedy; author: Reedy):

[mediawiki/core@REL1_39] Expose PrivilegedGroups to extension schema

https://gerrit.wikimedia.org/r/955065

Change 955065 merged by jenkins-bot:

[mediawiki/core@REL1_39] Expose PrivilegedGroups to extension schema

https://gerrit.wikimedia.org/r/955065

Change 955064 merged by jenkins-bot:

[mediawiki/core@REL1_40] Expose PrivilegedGroups to extension schema

https://gerrit.wikimedia.org/r/955064

Change 955768 merged by jenkins-bot:

[mediawiki/extensions/CentralAuth@master] Flag stewards as privileged

https://gerrit.wikimedia.org/r/955768

Change 955767 merged by jenkins-bot:

[mediawiki/extensions/CheckUser@master] Flag checkusers privileged

https://gerrit.wikimedia.org/r/955767

Change 955788 had a related patch set uploaded (by Dreamy Jazz; author: Jforrester):

[mediawiki/extensions/CheckUser@REL1_40] Flag checkusers privileged

https://gerrit.wikimedia.org/r/955788

Change 955789 had a related patch set uploaded (by Dreamy Jazz; author: Jforrester):

[mediawiki/extensions/CheckUser@REL1_39] Flag checkusers privileged

https://gerrit.wikimedia.org/r/955789

Change 955788 merged by jenkins-bot:

[mediawiki/extensions/CheckUser@REL1_40] Flag checkusers privileged

https://gerrit.wikimedia.org/r/955788

OK, I've quickly read through every hit on this search and I think the only four production repos we care about rights from (beyond core itself) are as patched above:

Should we add push-subscripton-managers as well? Per T259148, it's some sort of system bot account.

OK, I've quickly read through every hit on this search and I think the only four production repos we care about rights from (beyond core itself) are as patched above:

Should we add push-subscripton-managers as well? Per T259148, it's some sort of system bot account.

I felt that it wasn't a risky-enough user right set to warrant it, but I defer to others' views. :-)

Change 955770 merged by jenkins-bot:

[mediawiki/extensions/WikimediaIncubator@master] Flag test-sysops as privileged

https://gerrit.wikimedia.org/r/955770

Change 955801 had a related patch set uploaded (by Reedy; author: Jforrester):

[mediawiki/extensions/CentralAuth@REL1_40] Flag stewards as privileged

https://gerrit.wikimedia.org/r/955801

Change 955802 had a related patch set uploaded (by Reedy; author: Jforrester):

[mediawiki/extensions/CentralAuth@REL1_39] Flag stewards as privileged

https://gerrit.wikimedia.org/r/955802

Change 955802 merged by jenkins-bot:

[mediawiki/extensions/CentralAuth@REL1_39] Flag stewards as privileged

https://gerrit.wikimedia.org/r/955802

Change 955801 merged by jenkins-bot:

[mediawiki/extensions/CentralAuth@REL1_40] Flag stewards as privileged

https://gerrit.wikimedia.org/r/955801

Change 955789 merged by jenkins-bot:

[mediawiki/extensions/CheckUser@REL1_39] Flag checkusers privileged

https://gerrit.wikimedia.org/r/955789

Change 955757 merged by jenkins-bot:

[mediawiki/extensions/WikiLambda@master] Flag functioneer and functionmainters as privileged

https://gerrit.wikimedia.org/r/955757

Seb35 assigned this task to Reedy.
Seb35 subscribed.

I mark this as Resolved mainly by Reedy on 1.39.5/1.40.1/1.41.0:

  • parameter $wgPrivilegedGroups added
  • method MediaWiki\User\UserGroupManager::getUserPrivilegedGroups added
  • hook onUserPrivilegedGroups added
  • extensions may declare some groups as privileged in their extension.json/skin.json

Some extensions have already used the concept of "privileged groups" (CentralAuth, CheckUser, WikimediaIncubator, WikiLambda). If other extensions want to declare some added groups as "privileged" it’s up to them (Echo mentionned above).

The task T347414: Migrate $wmgPrivilegedGroups to $wgPrivilegedGroups was created to adapt WMF config to this new core parameter.