TMAegis
More rules for sharepoint

TMA-SHAREPOINT-2.2

Ensure the SharePoint farm service account (database access account) is configured with the minimum privileges for the local server.

HighLevel 1Automatedsharepoint

Description

The SharePoint farm service account (database access account) must be configured with the minimum privileges for the local server. Prints the number of local groups on this server, other than WSS_RESTRICTED_WPG, WSS_ADMIN_WPG and WSS_WPG, that directly contain the farm service account (expected 0). Only direct membership is evaluated; nested domain groups need manual review. Run on every farm server. Run on a SharePoint farm server as a farm administrator; the audit loads the Microsoft.SharePoint.PowerShell snap-in and fails if it cannot.

How it is checked

Audit method: Shell command

shell
$ErrorActionPreference = 'Stop'; if (-not (Get-Command Get-SPFarm -ErrorAction SilentlyContinue)) { Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction Stop }; if (-not (Get-Command Get-SPFarm -ErrorAction SilentlyContinue)) { throw 'SharePoint cmdlets are not available' }; $acct = "$((Get-SPFarm -ErrorAction Stop).DefaultServiceAccount.Name)"; if ($acct -notmatch '\\') { throw 'farm account not found' }; $dom, $sam = $acct.Split('\', 2); $re = '/' + [regex]::Escape($dom) + '/' + [regex]::Escape($sam) + '$'; $allowed = @('WSS_RESTRICTED_WPG','WSS_ADMIN_WPG','WSS_WPG'); $pc = [ADSI]("WinNT://" + $env:COMPUTERNAME + ",computer"); $bad = @($pc.Children | Where-Object { $_.SchemaClassName -eq 'group' } | Where-Object { $allowed -notcontains "$($_.Name)" } | Where-Object { $paths = @($_.Invoke('Members') | ForEach-Object { $_.GetType().InvokeMember('ADsPath', 'GetProperty', $null, $_, $null) }); @($paths | Where-Object { $_ -match $re }).Count -gt 0 }); $bad.Count
Expected output
0

How it is fixed

Fix method: Guidance or infrastructure patch

Remove the farm account from every local group except WSS_RESTRICTED_WPG, WSS_ADMIN_WPG and WSS_WPG (Server Manager > Local Users and Groups, or Remove-LocalGroupMember -Group <group> -Member <DOMAIN\farmaccount>), and remove any other rights/services assigned to it.

Properties

Operating systems
Any
Tags
sharepointservice-accountsleast-privilege
Reference
CIS Microsoft SharePoint 2019 Benchmark v1.0.0 - 2.2 Ensure the SharePoint farm service account (database access account) is configured with the minimum privileges for the local server.

Check this host

Run this on a machine you are allowed to audit. The scan is read-only.

shell
tmaegis scan --target sharepoint