sql server security interview questions
1. What is the Guest user account in SQL Server? What login is it mapped to it?
The Guest user account is created by default in all databases and is used when explicit permissions are not granted to access an object. It is not mapped directly to any login, but can be used by any login. Depending on your security needs, it may make sense to drop the Guest user account, in all databases except Master and TempDB
2. What is the use of BUILTIN\Administrators Group in SQL Server?
Any Windows login in BUILTIN\Administrators group is by default a SQL Server system administrator. This single group can be used to manage administrators from a Windows and SQL Server perspective
3. We have a list of 3 SQL Server logins which are dedicated to a critical application. We have given all required rights to those logins. Now my question is we have to restrict the access only to these three logins. Means there are two conditions:
a) No other user should be able to access the database except those three logins
b) Even for those three logins they should be able to run their queries only through the application. If someone login through SSMS and trying to run a query should result into a failure.
Finally there should be only way to running a query is from their application using one of those three logins, there should be no other way to run queries on that database. How do you restrict?
- Do not give access to any other login on that database except for those 3 app logins.
- Create a trigger that test each and every query like below
IF app_name() in(‘SQL Query Analyzer’,’Microsoft SQL Server Management Studio’)
4. How to resolve the orphan use problem?
Such a user is said to be an orphaned user of the database on that server instance. A database user can become orphaned if the corresponding SQL Server login is dropped. Also, a database user can become orphaned after a database is restored or attached to a different instance of SQL Server. Orphaning can happen if the database user is mapped to a SID that is not present in the new server instance.
- To find out the orphan users
- To resolve the orphan user problem
5. What are the fixed server level roles?
- SysAdmin – Can perform any activity
- ServerAdmin – Can change server configuration, restart, shutdown server
- SecurityAdmin – Can manage server level logins, also can manage db level if they have permission on db
- Granted: ALTER ANY LOGIN
- ProcessAdmin – Can kill a process on an instance
- Granted: ALTER ANY CONNECTION, ALTER SERVER STATE
- DiskAdmin – Can manage the disk files
- Granted: ALTER RESOURCES
- BulkAdmin – Can perform BULK INSERT
- Granted: ADMINISTER BULK OPERATIONS
- SetupAdmin – Can add and remove linked servers
- Granted: ALTER ANY LINKED SERVER
- Dbcreator – Can create, alter, drop and restore any database on the instance
- Granted: CREATE ANY DATABASE
- Public – Default role for newly created login
sp_helpsrvrolemember : List out the members mapped with the server roles
6. What are the Database roles?
- db_accessadmin – Granted: ALTER ANY USER, CREATE SCHEMA, Granted with Grant option – Connect
- db_backupoperator – Granted: BACKUP DATABASE, BACKUP LOG, CHECKPOINT
- db_datareader – Granted – SELECT
- db_datawriter – Granted – INSERT, UPDATE and DELETE
- db_ddladmin – Granted – Any DDL operation
- db_denydatareader – Denied – SELECT
- db_denydatawriter – Denied – INSERT, UPDATE and DELETE
- db_owner – Granted with GRANT option: CONTROL
- db_securityadmin – Granted: ALTER ANY APPLICATION ROLE, ALTER ANY ROLE, CREATE SCHEMA, VIEW DEFINITION
- dbm_monitor – Granted: VIEW most recent status in Database Mirroring Monitor
sp_helprolemember : List out the members mapped with the server roles
Fixed database roles are not equivalent to their database-level permission. For example, the db_owner fixed database role has the CONTROL DATABASE permission. But granting the CONTROL DATABASE permission does not make a user a member of the db_owner fixed database role.
7. What are the security related catalog views?
Where the security related information stored on?
- Server Level:
- Database Level:
8. What are the extra roles available in msdb?
- db_ssisadmin: Equals to sysadmin
- db_ssisoperator: Import/Delete/Change Role of own packages
- db_ssisltduser: Only can view and execute the packages
- dc_admin : Can administrate and use the data collector
- dc_operator: Can administrate and use the data collector
- dc_proxy : Can administrate and use the data collector
- PolicyAdministratorRole: can perform all configuration and maintenance activities on Policy-Based Management policies and conditions.
- ServerGroupAdministratorRole : Can administrate the registered server group
- ServerGroupReaderRole: Can view and the registered server group
- dbm_monitor: Created in the msdb database when the first database is registered in Database Mirroring Monitor
9. If you lose rights to your SQL Server instance what are the options to connect to SQL SERVER Instance?
Option1: Use the Dedicated Administrator Connection
Option2: Use BUILTIN\Administrators Group
Option3: Change Registry Values
10. What objects does the fn_my_permissions function reports on?
- APPLICATION ROLE
- MESSAGE TYPE
- ASYMMETRIC KEY
- SYMMETRIC KEY
- REMOTE SERVICE BINDING
- FULLTEXT CATALOG
- XML SCHEMA COLLECTION
SELECT * FROM fn_my_permissions(NULL, ‘SERVER’);
SELECT * FROM fn_my_permissions(‘AdventureWorks’, ‘DATABASE’);
SELECT * FROM fn_my_permissions(‘Employee’, ‘OBJECT’)
11. Name three of the features managed by the Surface Area Configuration tool.
- Ad-hoc remote queries
- Common language runtime
- Dedicated Administrator Connection
- Database Mail
- Native XML Web Services
- OLE Automation
- Service Broker
- SQL Mail
- Web Assistant
12. What options are available to audit login activity?
- Custom solution with your application to log all logins into a centralized table
- Enable login auditing at the instance level in Management Studio
- Execute Profiler to capture logins into the instance
- Leverage a third party product
13. How to perform backup for Certificates in sql server?
- Using Native Backup
- Using Backup Certificate Command
14. Name 3 of the features that the SQL Server built-in function LOGINPROPERTY performs on standard logins.
- Date when the password was set
- Locked out standard login
- Expired password
- Must change password at next login
- Count of consecutive failed login attempts
- Time of the last failed login attempt
- Amount of time since the password policy has been applied to the login
- Date when the login was locked out
- Password hash
15. How can SQL Server instances be hidden?
To hide a SQL Server instance, we need to make a change in SQL Server Configuration Manager. To do this launch SQL Server Configuration Manager and do the following: select the instance of SQL Server, right click and select Properties. After selecting properties you will just set Hide Instance to “Yes” and click OK or Apply. After the change is made, you need to restart the instance of SQL Server to not expose the name of the instance.
16. Is Profiler the only tool that has the ability to audit and identify DDL events?
No. In SQL Server 2005 DDL triggers were introduced to audit CREATE, ALTER and DROP events for relational (stored procedures, functions, views, etc.) and security (certificates, logins, server, etc.) objects.
17. What are some of the pros and cons of not dropping the SQL Server BUILTIN\Administrators Group?
- Any Windows login is by default a SQL Server system administrator
- This single group can be used to manage SQL Server from a system administrators perspective
- Any Windows login is by default a SQL Server system administrator, which may not be a desired situation
18. What is SQL Injection and why is it a problem?
SQL Injection is an exploit where unhandled\unexpected SQL commands are passed to SQL Server in a malicious manner. It is a problem because unknowingly data can be stolen, deleted, updated, inserted or corrupted.
19. How can SQL Injection be stopped?
- Validate the SQL commands that are being passed by the front end
- Validate the length and data type per parameter
- Convert dynamic SQL to stored procedures with parameters
- Prevent any commands from executing with the combination of or all of the following commands: semi-colon, EXEC, CAST, SET, two dashes, apostrophe, etc.
- Based on your front end programming language determine what special characters should be removed before any commands are passed to SQL Server
- Prevent traffic from particular IP addresses or domains
- Review the firewall settings to determine if SQL Injection attacks can prevented
- Remove old web pages and directories that are no longer in use because these can be crawled and exploited
- Research products or services to scan your code and web site on a regular basis to prevent the issue
20. How to recover from SQL Injection?
If for some reason the resolution implemented does not resolve the problem and the SQL Injection attack occurs again, the quickest path may be to do the following:
- Shut down the web sites
- Review the IIS logs to determine the commands issued and which web page\command has the vulnerability
- Convert the code to determine which tables were affected and the command issued
- Find and replace the string in your tables
- Correct the web page\command that has the vulnerability
- Test to validate the issue no longer occurs
- Deploy the web page\command
- Re-enable the web sites
21. How to enforce Security in SQL SERVER?
By providing strong Passwords, Limited the access to make sure right people have access to the right data, Creating Customized database roles, server roles and assign privileges and by choosing the correct authentication mode etc.
A DBA should be careful in providing security…..General precautions includes:
- Minimize the number of sysadmins allowed to access SQL Server.
- Give users the least amount of permissions they need to perform their job.
- Use stored procedures or views to allow users to access data instead of letting them directly access tables.
- When possible, use Windows Authentication logins instead of SQL Server logins.
- Don’t grant permissions to the public database role.
- Remove user login IDs who no longer need access to SQL Server.
- Avoid creating network shares on any SQL Server.
- Turn on login auditing so you can see who has succeeded, and failed, to login.
- Ensure that your SQL Servers are behind a firewall and are not exposed directly to the Internet.
- Using server, database and application roles to control access to the data
- Securing the physical database files using NTFS permissions
- Using an un guessable SA password
- Restricting physical access to the SQL Server
- Disabling the Guest account
- Isolating SQL Server from the web server
- Choose either of the service to run SQL Server (Local User – Not an Admin , Domain User – Not an Admin)
- Restrict the remote administration (TC)
- If SQL Server authentication is used, the credentials are secured over the network by using IPSec or SSL, or by installing a database server certificate.
- Do not use DBO users as application logins
- Firewall restrictions ensure that only the SQL Server listening port is available on the database server.
- Remove the SQL guest user account.
- Remove the BUILTIN\Administrators server login.
- Apply the latest security updates / patches
We have plenty of features in SQL SERVER to enforce the security. The major features include:
- Password policies
- Limited metadata visibility (system Tables to Catalog Views)
- DDL triggers
- User-schema separation
- Granular permission sets
- Security catalog views
In addition to these features we have some more added in SQL SERVER 2008, like Policy Based Management, Security Audit, Improved Encryption, Backup Security etc.
When we talk about the security we have to consider the bellow
- Patches and Updates
- Files and Directories
- Auditing and Logging
- SQL Server Security
- SQL Server Logins, Users, and Roles
- SQL Server Database Objects
22. You are delegating permissions on your SQL Server to other administrators. You have local, single server jobs on one server that you would like to allow another administer to start, stop, and view the history for, but not delete history. This administrator will own the jobs. Which role should you assign?
SQL Server provides 3 fixed roles for the agent service that limit privileges for administrators. The SQLAgentUserRole is designed for local jobs (not multiserver) that allow the member to work with their owned jobs (edit, start, stop, view history) without deleting the history of any job.
23.What is application role in SQL Server database security?
Application roles are database level roles like database roles. We can create them and assign permissions to them just like regular database roles but we can’t map users with them. Instead, we provide a password to unlock access to the database. Here it is how it works:
- Create a login on SQL Server for application user
- Create an application role on the corresponding database.
- Give the application role password to the user
- User will have access to login to SQL Server but doesn’t have any access to the database including public role.
- He/she just need to provide the password to unlock the access to the database
- EXEC sp_addapprole ‘App_Role_Name’, ‘Password’
- Once it is executed successfully the user will get all rights that your app role have on that database.
24. What are the new security features added in SQL Server 2012?
Default Schema for Windows Group Logins: Let’s say we have a Windows account [MyDomain\ WinAdmin]. If someone from this group logged in [MyDomain\User1] and tried to create an object then there will be a new schema created like [MyDomain\User1].Table. This issue got fixed in 2012. In 2012 we can assign a default schema for the Windows Group accounts.
User Defined Server Roles: Till 2008 R2 we have user defined roles at database level, 2012 allows us to create a Server level user defined roles which gives us more control in handling security.
Contained Database: Easier database migrations as it contains user and login information on same database instead of in Master.
Data Protection: Supporting Hash Algorithm-256 (SHA-256) and SHA-512.
Auditing: Native support/feature for auditing the database environment by creating the Audit specifications. We can also create user defined audits. Ex: We can create an Audit specification to trace all events for a specific login and write all these event details into Audit Log. We can also filter the events.
25.What is the new security features added in SQL Server 2014?
Functionality Enhancement for TDE: In 2014 Transparent Data Encryption takes the normal backup and then applies the Encryption before writing it to the disk. It allows backup compression is useful when TDE enabled. TDE applies on compressed backup.
CONNECT ANY DATABASE: This is a new server level permission which can allow a login to connect all existing and future databases in the instance. This can be helpful when we need to give permissions for audit purpose.
IMPERSONATE ANY LOGIN: This is a new server level permission which gives us more control in giving/denying impersonate access to logins.
SELECT ALL USER SECURABLES: A new server level permission. When granted, a login such as an auditor can view data in all databases that the user can connect to.
26. What is the new Security features added in SQL Server 2016?
- This is a new feature which is useful for managing highly sensitive data
- Unlike TDE it encrypts data at rest means physical files (Data, Log and Backup), data in memory and data in communication channels.
- TEMPDB is uninvolved from encryption
- Encryption can be applied to column level.
- A driver that encrypts and decrypts the data as it is sent to the database server is installed on the client.
- Application connection string must be changed.
Row Level Security:
- This is first introduced in Azure SQL Database. Now it’s part of on-premises feature from SQL Server 2016.
- Data need not be encrypted but we can restrict the users to see the sensitive data. No master keys or certificates required as there is no encryption
- Row-level security is based on a table-valued function which evaluates user access to the table based on a security policy that is applied to the table.
- The access levels only applies to SELECT, UPDATE, DELETE operations but anyone who is having INSERT permissions can insert rows.
- Only problem with this is using user defined functions to control user access which is a huge disadvantage from performance prospect.
- Dynamic Data Masking:
- Masks data at select time based on user or database roles (Mainly for Read-only Users).
- It actually doesn’t change the data but mask data based on the user who access that data.
- For example I have a columns called “CredNo” to store customer creditcard number. If I mask this column then it will be viewed as 22XXXXXXXXXX56.
- But as I said data is not modified only this logic applied and data is masked based on the user/role.
- A SYSADMIN or db_owner can view the actual data.
- We can use 4 different types of functions to mask data; Email, Partial, Default, Random