STIGQter STIGQter: STIG Summary: Microsoft SQL Server 2012 Database Instance Security Technical Implementation Guide Version: 1 Release: 18 Benchmark Date: 25 Jan 2019: SQL Server must be protected from unauthorized access by developers on shared production/development host systems.

DISA Rule

SV-53921r2_rule

Vulnerability Number

V-41396

Group Title

SRG-APP-000062-DB-000015

Rule Version

SQL2-00-009300

Severity

CAT II

CCI(s)

Weight

10

Fix Recommendation

Within the system documentation, clearly identify if SQL Server is hosting both development and production databases.

Restrict developer privileges to production objects to only objects and data where those privileges are required and authorized by running the following scripts as needed:

Remove the user from direct access to server permission by running the following script:
USE master
REVOKE <'server permission name'> TO <'account name'> CASCADE

Remove the user from user-defined role access by running the following script:
USE master
ALTER SERVER ROLE [<'server role name'>] DROP MEMBER <'user name'>

Remove permissions from developer user accounts that grant permissions beyond the development database.

Navigate to SQL Server Management Studio >> Object Explorer >> <'SQL Server name'> >> Security >> Logins >> right click <'administrator account name'> >> Properties >> User >> Securables.

Remove 'Securables' permissions from accounts that are beyond what is required.

Navigate from 'Securables' to 'Server Roles'.

Remove 'Server Roles' permissions from accounts that are beyond what is required.

Navigate from 'Server Roles' to 'Users mapped to the login'.

Remove 'Users mapped to the login' permissions from accounts that are beyond what is required.

Check Contents

Identify whether SQL Server contains both development and production databases from the system documentation.

If SQL Server is not hosting both production and development databases, this is NA.


If SQL Server is hosting both development and production databases, but this is not clearly documented in the system documentation, this is a finding.
Check the list of SQL Server users against the list of developer accounts by running the following SQL Server query:

SELECT name AS 'Account Name'
, create_date AS 'Account Create Date'
, LOGINPROPERTY(name, 'PasswordLastSetTime') AS 'Password Last Set on'
FROM sys.server_principals
WHERE NOT TYPE IN ('C', 'R', 'U') -- ('C', 'G', 'K', 'R', 'S', 'U')
AND NOT name IN ('##MS_PolicyEventProcessingLogin##', '##MS_PolicyTsqlExecutionLogin##')
AND sid <> CONVERT(VARBINARY(85), 0x01) -- no 'sa' account
AND is_disabled <> 1
ORDER BY name


If no developer user account is listed, this is not a finding.

Check each developer user account privilege listed above.

Navigate to SQL Server Management Studio >> Object Explorer >> <'SQL Server name'> >> Security >> Logins >> right click <'developer account name'> >> Properties >> User >> Securables.

If any item in the 'Permission' listing, for each highlighted item that exists in the 'Securables' listing, grants production privileges, this is a finding.

Navigate from 'Securables' to 'Server Roles'.

If any 'Server roles' are checked that grant production privileges, this is a finding.

Navigate from 'Server Roles' to 'Users mapped to the login'.

If any checked 'Database role membership' of each highlighted and checked 'Database' are determined to be granting production privileges, this is a finding.

Vulnerability Number

V-41396

Documentable

False

Rule Version

SQL2-00-009300

Severity Override Guidance

Identify whether SQL Server contains both development and production databases from the system documentation.

If SQL Server is not hosting both production and development databases, this is NA.


If SQL Server is hosting both development and production databases, but this is not clearly documented in the system documentation, this is a finding.
Check the list of SQL Server users against the list of developer accounts by running the following SQL Server query:

SELECT name AS 'Account Name'
, create_date AS 'Account Create Date'
, LOGINPROPERTY(name, 'PasswordLastSetTime') AS 'Password Last Set on'
FROM sys.server_principals
WHERE NOT TYPE IN ('C', 'R', 'U') -- ('C', 'G', 'K', 'R', 'S', 'U')
AND NOT name IN ('##MS_PolicyEventProcessingLogin##', '##MS_PolicyTsqlExecutionLogin##')
AND sid <> CONVERT(VARBINARY(85), 0x01) -- no 'sa' account
AND is_disabled <> 1
ORDER BY name


If no developer user account is listed, this is not a finding.

Check each developer user account privilege listed above.

Navigate to SQL Server Management Studio >> Object Explorer >> <'SQL Server name'> >> Security >> Logins >> right click <'developer account name'> >> Properties >> User >> Securables.

If any item in the 'Permission' listing, for each highlighted item that exists in the 'Securables' listing, grants production privileges, this is a finding.

Navigate from 'Securables' to 'Server Roles'.

If any 'Server roles' are checked that grant production privileges, this is a finding.

Navigate from 'Server Roles' to 'Users mapped to the login'.

If any checked 'Database role membership' of each highlighted and checked 'Database' are determined to be granting production privileges, this is a finding.

Check Content Reference

M

Target Key

2560

Comments