How do I prepare MS SQL database cluster for collection by Nanitor?
Introduction
Nanitor supports a whole range of Microsoft SQL servers and connects directly to them via a TCP/IP connection and performs an audit. As recommended by CIS we encourage the use of Windows Authentication
instead of the deprecated SQL Server Authentication
.
Preparation
Nanitor requires a user in order to connect to MS SQL and collect all information and will run various commands on all databases it can access on the server it is connecting to. In this example we use Microsoft SQL Server Management Studio
to grant a Windows user called Nanitor access to a MS-SQL database. It is out of scope of this document how to create an Active Directory users. In this example we have already created an Active Directory user called Nanitor
.
Before
The image above shows before we have granted the Nanitor
user access to the Database cluster.
Granting the user access.
Now we navigate to the database cluster, expand the Security tab and right-click on the Logins tab.
Then fill out the login information and find the right Active Directory user in Entire directory
and click OK.
Then navigate to User role mappings
and grant the user access to all databases, it only requires access to the public
role.
After this is complete, click OK to save the settings.
After
The image above shows after we have granted the Nanitor
user access to the Database cluster.
Now the Windows user is ready to be used as an SQL credential the Nanitor collector UI.
Troubleshooting
Permission was denied
When you get the following message in the collector debug window when trying to onboard a MSSQL database,
Error checking in benchmark: mssql: The SELECT permission was denied on the object 'sysproxies', database 'msdb', schema 'dbo'.
mssql: The user does not have permission to perform this action.
you need to adopt the permissions on the MSSQL database for the Nanitor user. Apply the following commands to resolve the permission issue.
use [msdb]
grant select on [msdb].[dbo].[sysproxies] to [nanitor_user]
grant select on [msdb].[dbo].[sysproxylogin] to [nanitor_user]
use [master]
grant view server state to [nanitor_user]
Information
Replace nanitor_user with the username you use for connecting to the MSSQL database
Availability Group Database in Read-Only Mode
When you get the following message in the collector debug window when trying to onboard a MSSQL database,
Could not connect to database:
mssql: The target database ('databaseName') is in an availability group and is
currently accessible for connections when the application intent is set to read
only.
To avoid the error, edit your collected MSSQL Asset to include a specific starting point database along with the read-only intent, like so: databaseName;ApplicationIntent=ReadOnly;
Information
Replace databaseName with one of the databases in your MSSQL server