{"id":84375,"date":"2019-05-29T14:03:47","date_gmt":"2019-05-29T14:03:47","guid":{"rendered":"https:\/\/www.red-gate.com\/simple-talk\/?p=84375"},"modified":"2022-04-24T21:15:08","modified_gmt":"2022-04-24T21:15:08","slug":"introduction-to-sql-server-security-part-6","status":"publish","type":"post","link":"https:\/\/www.red-gate.com\/simple-talk\/devops\/data-privacy-and-protection\/introduction-to-sql-server-security-part-6\/","title":{"rendered":"Introduction to SQL Server Security \u2014 Part 6"},"content":{"rendered":"<h4>The series so far:<\/h4>\n<ol>\n<li><a href=\"https:\/\/www.red-gate.com\/simple-talk\/sysadmin\/data-protection-and-privacy\/introduction-to-sql-server-security-part-1\/\">Introduction to SQL Server Security \u2014 Part 1<\/a><\/li>\n<li><a href=\"https:\/\/www.red-gate.com\/simple-talk\/sysadmin\/data-protection-and-privacy\/introduction-to-sql-server-security-part-2\/\">Introduction to SQL Server Security \u2014 Part 2<\/a><\/li>\n<li><a href=\"https:\/\/www.red-gate.com\/simple-talk\/sysadmin\/data-protection-and-privacy\/introduction-to-sql-server-security-part-3\/\">Introduction to SQL Server Security \u2014 Part 3<\/a><\/li>\n<li><a href=\"https:\/\/www.red-gate.com\/simple-talk\/sysadmin\/data-protection-and-privacy\/introduction-to-sql-server-security-part-4\">Introduction to SQL Server Security \u2014 Part 4<\/a><\/li>\n<li><a href=\"https:\/\/www.red-gate.com\/simple-talk\/sysadmin\/data-protection-and-privacy\/introduction-to-sql-server-security-part-5\">Introduction to SQL Server Security \u2014 Part 5<\/a><\/li>\n<li><a href=\"https:\/\/www.red-gate.com\/simple-talk\/sysadmin\/data-protection-and-privacy\/introduction-to-sql-server-security-part-6\/\">Introduction to SQL Server Security\u00a0<span>\u2014 <\/span>Part 6<\/a><\/li>\n<li style=\"list-style-type: none;\">\u00a0<\/li>\n<\/ol>\n\n<p>SQL Server offers a wide range of tools for ensuring that your environment remains secure and that privacy is protected. In the last article in this series, I covered some of the system views and functions that can help you safeguard that environment.<\/p>\n<p>In this article, I continue the discussion by providing an overview of five other important features: SQL Server Configuration Manager, server-level facets, the <code>sp_configure<\/code> system stored procedure, the SQL Vulnerability Assessment tool, and the SQL Data Discovery &amp; Classification tool. As with any SQL Server tools, the better you understand how to use these features, the more effectively you can protect your databases and the data they contain.<\/p>\n<h2>SQL Server Configuration Manager<\/h2>\n<p>SQL Server Configuration Manager is a Microsoft Management Console snap-in that lets you manage the services, network protocols, and network connectivity configurations associated with a SQL Server instance. Through this tool, you can start, pause, resume, or stop services, or you can view or change service properties. You can also enable or disable connection protocols, force protocol encryption, or configure SQL Server to listen on a specific port, pipe, or network protocol.<\/p>\n<p>Figure 1 shows SQL Server Configuration Manager with the <em>SQL Server Services<\/em> node selected. You can navigate through any of the nodes, as well as drill into specific services or configurations, where you can view or modify property settings.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"869\" height=\"427\" class=\"wp-image-84376\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2019\/05\/word-image-31.png\" \/><\/p>\n<p class=\"caption\">Figure 1. Viewing services and configurations in SQL Server Configuration Manager<\/p>\n<p>To access a component\u2019s properties, double-click the listing in the right pane. For example, one of the services shown in Figure 1 is <em>SQL Server (SQLSRV16),<\/em> which is a running instance of SQL Server 2016. When I double-click the service, the <em>SQL Server (SQLSRV16) Properties<\/em> dialog box appears, as shown in Figure 2.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"431\" height=\"510\" class=\"wp-image-84377\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2019\/05\/word-image-32.png\" \/><\/p>\n<p class=\"caption\">Figure 2. Viewing service details in SQL Server Configuration Manager<\/p>\n<p>The options available in the <em>Properties<\/em> dialog box depend on the selected service or configuration. In this case, the dialog box opens to the <em>Log On<\/em> tab, where you can start, stop, pause, and restart the service. You can also change the service account or update the password.<\/p>\n<p>The other tabs provide additional options. For example, on the <em>Service<\/em> tab, you can set the service to start automatically, specify that the service must be started manually, or disable the service altogether.<\/p>\n<p>SQL Server Configuration Manager is a good place to start for handling services, network protocols, and network connectivity configurations all in one interface. The interface is simple to use and is a lot easier than wading through all a system\u2019s services to find those specific to SQL Server.<\/p>\n<h2>SQL Server Configuration Facets<\/h2>\n<p>In SQL Server Management Studio (SSMS), you can configure several server-wide facets related to SQL Server security. A facet is a collection of logical properties that apply to a specific area of management.<\/p>\n<p>To access the server-level facets, right-click the SQL Server instance name in Object Explorer and then click <em>Facets<\/em>. When the <em>View Facets<\/em> dialog box appears, select the <em>Surface Area Configuration<\/em> facet from the <em>Facet<\/em> drop-down list. The main window displays the properties associated with the selected facet, as shown in Figure 3.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"663\" height=\"444\" class=\"wp-image-84378\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2019\/05\/word-image-33.png\" \/><\/p>\n<p class=\"caption\">Figure 3. Accessing the Surface Area Configuration facet<\/p>\n<p>As the name suggests, the Surface Area Configuration facet provides quick access to surface area configuration settings. Here you can enable or disable features as necessary, the idea being that you should disable any unnecessary features to reduce the surface area. For example, you can configure the <em>SqlMailEnabled<\/em> property, which supports legacy applications that exchange email messages with the database engine.<\/p>\n<p>Another useful facet is <em>Server Security,<\/em> which is shown in Figure 4. Here you can enable or disable security-related properties that apply at the server-level, such as the <em>CrossDBOwnershipChainingEnabled <\/em>property, which controls cross-database ownership chaining. Currently, the property is set to <em>False<\/em>, so chaining is not permitted.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"638\" height=\"466\" class=\"wp-image-84379\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2019\/05\/word-image-34.png\" \/><\/p>\n<p class=\"caption\">Figure 4. Accessing the Server Security facet properties<\/p>\n<p>In the <em>View Facets<\/em> dialog box, you can also access a number of other facets, such as <em>Server Audit<\/em> and <em>Server Configuration<\/em>. Facets provide a quick and easy way to adjust settings from within SSMS. However, you can also use the <code>sp_configure<\/code> stored procedure to set database engine options, which provides more flexibility for controlling SQL Server settings.<\/p>\n<h2>SQL Server sp_configure Stored Procedure<\/h2>\n<p>The <code>sp_configure<\/code> system stored procedure lets you view or modify server-wide configuration settings. When used to modify a setting, the stored procedure is often executed in conjunction with a <code>RECONFIGURE<\/code> statement, which applies the new setting immediately to the server environment\u2014if the setting is <em>dynamic<\/em>. If it\u2019s not dynamic, the new setting does not take effect until the SQL Server service has been restarted.<\/p>\n<p>You can use the <code>sys.configurations<\/code> system view to determine whether a setting is dynamic. The view also returns other important information about configuration settings. The following <code>SELECT<\/code> statement uses the <code>sys.configurations<\/code> view to return details about the server-wide configuration settings available to the current SQL Server instance:<\/p>\n<pre class=\"lang:tsql theme:ssms2012-simple-talk\">USE master;\r\nGO\r\nSELECT * FROM sys.configurations;<\/pre>\n<p>Figure 5 shows part of the results returned by the <code>SELECT<\/code> statement on my system, a local instance of SQL Server 2017. The statement returns a total of 77 rows.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"920\" height=\"270\" class=\"wp-image-84380\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2019\/05\/word-image-35.png\" \/><\/p>\n<p class=\"caption\">Figure 5. Viewing all server-wide configuration options<\/p>\n<p>In addition to the name and description of each setting, the <code>sys.configurations<\/code> view returns several other columns, which have implications when using the <code>sp_configure<\/code> stored procedure:<\/p>\n<ul>\n<li>The <code>value<\/code> column is the option\u2019s configured value.<\/li>\n<li>The <code>minimum<\/code> column is the option\u2019s permitted minimal value.<\/li>\n<li>The <code>maximum<\/code> column is the option\u2019s permitted maximum value.<\/li>\n<li>The <code>value_in_use<\/code> column is the value currently in effect. This value can be different from the one in the <code>value<\/code> column if the value has been set but not yet committed.<\/li>\n<li>The <code>is_dynamic<\/code> column specifies whether the configuration setting is dynamic. A dynamic setting has a value of <code>1<\/code>.<\/li>\n<li>The <code>is_advanced<\/code> column indicates whether the option is an advanced option. An advanced option has a value of <code>1<\/code>. The <code>sp_configure<\/code> stored procedure can access advanced options only if the <code>show<\/code> <code>advanced<\/code> <code>options<\/code> setting has been enabled.<\/li>\n<\/ul>\n<p>You\u2019ll get a better sense of the implications of these columns as you work through this article. However, first, run the following <code>EXECUTE<\/code> statement, which calls the <code>sp_configure<\/code> stored procedure without any parameters:<\/p>\n<pre class=\"lang:tsql theme:ssms2012-simple-talk\">EXEC sp_configure;<\/pre>\n<p>When you call the procedure without parameters, it returns a list of server-wide configuration options. Figure 6 shows part of the results returned on my system. The statement returned 23 rows in all.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"501\" height=\"273\" class=\"wp-image-84381\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2019\/05\/word-image-36.png\" \/><\/p>\n<p class=\"caption\">Figure 6. Viewing non-advanced server-wide configuration options<\/p>\n<p>The procedure\u2019s <code>config_value<\/code> column maps to the <code>value<\/code> column returned by the <code>sys.configurations<\/code> view, and the procedure\u2019s <code>run_value<\/code> column maps to the view\u2019s <code>value_in_use<\/code> column.<\/p>\n<p>The reason that <code>sp_configure<\/code> returns only 23 rows on my system is because the <code>show<\/code> <code>advanced<\/code> <code>options<\/code> setting was not enabled. To enable the setting and then view the results, run the following set of T-SQL statements:<\/p>\n<pre class=\"lang:tsql theme:ssms2012-simple-talk\">EXEC sp_configure 'show advanced options', '1';\r\nGO\r\nRECONFIGURE;\r\nGO\r\nEXEC sp_configure;<\/pre>\n<p>The first <code>EXECUTE<\/code> statement runs the <code>sp_configure<\/code> stored procedure and sets the value of the <code>show<\/code> <code>advanced<\/code> <code>options<\/code> setting to <code>1<\/code>. When you use the stored procedure to update an option value, you must first specify the option name and then the new value, both in single quotes and separated by a comma.<\/p>\n<p>After you reset the value, you can run a <code>RECONFIGURE<\/code> statement to apply the value immediately. This is possible because the <code>show<\/code> <code>advanced<\/code> <code>options<\/code> setting is a dynamic option, that is, the <code>is_dynamic<\/code> value is set to <code>1<\/code>.<\/p>\n<p>The last step is to again call the <code>sp_configure<\/code> stored procedure without parameters to return a list of available configuration settings. This time, the <code>EXECUTE<\/code> statement returns all 77 settings, just like the <code>sys.configurations<\/code> view.<\/p>\n<p>In some cases, SQL Server doesn\u2019t allow you to use the <code>RECONFIGURE<\/code> statement to apply a value to a configuration setting, even if that value falls within the permitted minimum and maximum values. To see how this works, start by retrieving information about the <code>recovery<\/code> <code>interval<\/code> <code>(min)<\/code> setting, which determines the maximum recovery interval in minutes:<\/p>\n<pre class=\"lang:tsql theme:ssms2012-simple-talk\">EXEC sp_configure 'recovery interval (min)';<\/pre>\n<p>When you call <code>sp_configure<\/code> and specify only the setting name, it returns information about the setting without making any changes. In this case, the stored procedure returns <code>0<\/code> as both the configured and run values, <code>0<\/code> as the minimum allowed value, and <code>32767<\/code> as the maximum allowed value.<\/p>\n<p>Based on this information, it would seem that you should be able to set the option\u2019s value to 120 minutes, as in the following example:<\/p>\n<pre class=\"lang:tsql theme:ssms2012-simple-talk\">EXEC sp_configure 'recovery interval (min)', '120';\r\nGO\r\nRECONFIGURE;\r\nGO<\/pre>\n<p>However, when you run the statement, SQL Server returns the following message:<\/p>\n<pre class=\"lang:tsql theme:ssms2012-simple-talk \">Recovery intervals above 60 minutes not recommended. Use the \r\nRECONFIGURE WITH OVERRIDE statement to force this configuration.<\/pre>\n<p>For certain configuration settings, SQL Server determines what might be an acceptable range, even if the setting supports a greater range. In some cases, you can override this behaviour by using a <code>RECONFIGURE<\/code> <code>WITH<\/code> <code>OVERRIDE<\/code> statement, rather than just <code>RECONFIGURE<\/code>:<\/p>\n<pre class=\"lang:tsql theme:ssms2012-simple-talk\">EXEC sp_configure 'recovery interval (min)', '120';\r\nGO\r\nRECONFIGURE WITH OVERRIDE;\r\nGO<\/pre>\n<p>This time around, SQL Server returns a more favorable message:<\/p>\n<pre class=\"lang:tsql theme:ssms2012-simple-talk \">Configuration option 'recovery interval (min)' changed \r\nfrom 120 to 120. Run the RECONFIGURE statement to install.<\/pre>\n<p>The <code>RECONFIGURE<\/code> <code>WITH<\/code> <code>OVERRIDE<\/code> statement can be useful in cases when you need to bypass the usual safeguards, but be careful when using this option. Setting a value incorrectly can seriously impact SQL Server\u2019s configuration, so proceed with caution.<\/p>\n<p>In the meantime, if you want to reset the <code>recovery<\/code> <code>interval<\/code> <code>(min)<\/code> setting back to its original value, run the following statements:<\/p>\n<pre class=\"lang:tsql theme:ssms2012-simple-talk\">EXEC sp_configure 'recovery interval (min)', '0';\r\nGO\r\nRECONFIGURE;\r\nGO<\/pre>\n<p>The configuration setting should now have the same value it had when you first verified the setting\u2019s values.<\/p>\n<h2>SQL Vulnerability Assessment<\/h2>\n<p>SQL Vulnerability Assessment is a tool available in SSMS that lets you scan a database for potential vulnerabilities. The scan runs a number of security checks and then presents them in a report that shows which checks failed and which ones passed. For the failed checks, the tool also provides actionable steps for resolving the issue.<\/p>\n<p>The security checks are derived from a set of rules based on Microsoft best practices that are specific to permissions, configurations, and data protections. The rules focus on security issues that present the biggest data risks and that reflect many of the requirements necessary to meet compliance standards.<\/p>\n<p>To launch a SQL Vulnerability Assessment scan, right-click the database in Object Explorer, point to <em>Tasks,<\/em> point <em>Vulnerability Assessment,<\/em> and click <em>Scan for Vulnerabilities<\/em>. The assessment results appear in their own tab in the main SSMS window, categorised by those that passed and those that failed.<\/p>\n<p>Figure 7 shows the assessment results I received when I scanned the <code>WideWorldImporters<\/code> sample database on my system. The security checks shown in the figure are the ones that failed. The tool categorises failed checks as <em>High Risk, Medium Risk, <\/em>and<em> Low Risk<\/em>.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"1036\" height=\"537\" class=\"wp-image-84382\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2019\/05\/word-image-37.png\" \/><\/p>\n<p class=\"caption\">Figure 7. Viewing failed assessments in a vulnerability report<\/p>\n<p>The figure also indicates that the tool performed 54 security checks in all and that six of them failed. To view the security checks that passed, select the <em>Passed<\/em> tab, which is shown in Figure 8.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"1037\" height=\"589\" class=\"wp-image-84383\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2019\/05\/word-image-38.png\" \/><\/p>\n<p class=\"caption\">Figure 8. Viewing passed assessments in a vulnerability report<\/p>\n<p>You can drill into any of the security checks for more details. For example, the last failed security check shown in Figure 7 is <em>VA1282,<\/em> which is titled <em>Orphan roles should be removed<\/em>. If you expand the security check and scroll to the bottom, you\u2019ll find the recommended remediation and remediation script, as shown in Figure 9.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"636\" height=\"230\" class=\"wp-image-84384\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2019\/05\/word-image-39.png\" \/><\/p>\n<p class=\"caption\">Figure 9. Viewing the recommended remediation for a failed assessment<\/p>\n<p>The SQL Vulnerability Assessment tool also lets you adjust a security check\u2019s baselines. For example, you might decide that you do not want to drop the orphan roles shown in Figure 9 because you plan to use them in the near future. In this case, you can approve the security check as a baseline so it won\u2019t show as failed in subsequent scans.<\/p>\n<p>To approve a baseline, expand the security check as you did above but do not scroll down. At the top of the description, click the <em>Approve as Baseline<\/em> option, which is shown in Figure 10.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"967\" height=\"505\" class=\"wp-image-84385\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2019\/05\/word-image-40.png\" \/><\/p>\n<p class=\"caption\">Figure 10. Approving baselines for a failed assessment<\/p>\n<p>After you set the baseline, rerun the scan. The results should now indicate that only five checks failed. In addition, the <em>VA1282<\/em> security check should be listed on the <em>Passed<\/em> tab, as shown in Figure 11.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"1037\" height=\"385\" class=\"wp-image-84386\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2019\/05\/word-image-41.png\" \/><\/p>\n<p class=\"caption\">Figure 11. Rerunning a vulnerability assessment report<\/p>\n<p>The SQL Vulnerability Assessment tool provides you with a quick and easy way to track and remediate potential database vulnerabilities, helping you meet compliance and privacy standards while reducing potential security risks.<\/p>\n<h2>SQL Data Discovery &amp; Classification<\/h2>\n<p>Microsoft has also recently added the Data Discovery &amp; Classification tool to SSMS. The tool provides a mechanism for discovering and classifying potentially sensitive information in a database. From these classifications, you can run a report that can be used for compliance and auditing purposes.<\/p>\n<p>The process of classifying sensitive data starts by using the Data Discovery &amp; Classification feature to run a scan against the target database. To run a scan, right-click the database in Object Explorer, point to <em>Tasks,<\/em> and then click <em>Classify Data<\/em>. A tab will open in the main SSMS window, showing that the scan is in progress.<\/p>\n<p>When the scan is complete, the tab will display the number of columns with recommended classifications. Figure 12 shows the tab after I ran the scan against the <code>WideWorldImporters<\/code> database. In this case, the Data Discovery &amp; Classification tool has provided classification recommendations for 92 columns.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"1037\" height=\"420\" class=\"wp-image-84387\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2019\/05\/word-image-42.png\" \/><\/p>\n<p class=\"caption\">Figure 12. Running a SQL Data Discovery &amp; Classification report<\/p>\n<p>If you click the information message that shows the number of recommendations, the tab will display the list of columns, with recommendations for the information type and sensitivity label. Figure 13 shows a partial list of the column recommendations.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"1213\" height=\"539\" class=\"wp-image-84388\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2019\/05\/word-image-43.png\" \/><\/p>\n<p class=\"caption\">Figure 13. Viewing the recommended classifications in a report<\/p>\n<p>For each recommended column, you can accept the <em>Information Type<\/em> value and <em>Sensitivity Label<\/em> value or choose from the list of available values. In addition, you must select the check box associated with each column that you want to classify and then click <em>Apply selected recommendations<\/em>.<\/p>\n<p>On my system, I selected the checkbox associated with the first six columns shown in Figure 13 and kept the recommended values for the first two. For the other four, I changed the <em>Sensitivity Label<\/em> value to <em>Highly Confidential &#8211; GDPR<\/em> and then clicked <em>Accept selected recommendations<\/em>. This left me with six classified columns.<\/p>\n<p>The Data Discovery &amp; Classification tool also lets you manually classify columns. To add a manual classification, click <em>Add Classification<\/em> at the top of the tab. When the <em>Add Classification<\/em> form appears (to the right of the tab), set up your classification. For example, I added the classification shown in Figure 14.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"247\" height=\"424\" class=\"wp-image-84389\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2019\/05\/word-image-44.png\" \/><\/p>\n<p class=\"caption\">Figure 14. Adding a classification<\/p>\n<p>All classifications that you accept or add manually are listed in the tab, as shown in Figure 15. Here you can further modify them or delete them. Whether or not you make any changes, you must specifically save the classifications to retain them with the database. To do so, click <em>Save<\/em> at the top of the tab.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"1008\" height=\"429\" class=\"wp-image-84390\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2019\/05\/word-image-45.png\" \/><\/p>\n<p class=\"caption\">Figure 15. Viewing the approved classifications<\/p>\n<p>The Data Discovery &amp; Classification tool also lets you generate reports that show how the columns have been classified. To generate a report, click <em>View Report<\/em> at the top of the tab. Figure 16 shows the report I generated on my system after setting up the seven classifications.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"964\" height=\"566\" class=\"wp-image-84391\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2019\/05\/word-image-46.png\" \/><\/p>\n<p class=\"caption\">Figure 16. Generating a data classification report<\/p>\n<p>You can drill into details about the classifications in the grid at the bottom of the report. For example, the <code>Application<\/code> schema includes six classifications. If you expand the schema, you can view the individual columns and their classifications.<\/p>\n<h2>More SQL Server Security Tools<\/h2>\n<p>SQL Server provides plenty of other tools beyond what I\u2019ve discussed here or in the other articles in this series. For example, SQL Server offers <a href=\"https:\/\/www.red-gate.com\/simple-talk\/sql\/database-administration\/sql-server-security-audit-basics\/\">SQL Server Audit<\/a>, <a href=\"https:\/\/www.red-gate.com\/simple-talk\/blogs\/row-level-security-part-1-simple-read-operations\/\">row-level security<\/a>, and <a href=\"https:\/\/www.red-gate.com\/simple-talk\/sql\/database-administration\/checking-sql-server-policy-based-management\/\">policy-based management<\/a>, features that have been well-covered by Feodor Georgiev, Louis Davidson, and Dennes Torres, respectively.<\/p>\n<p>Encryption also plays an important role in SQL Server security, taking a variety of forms, including column-level encryption and transparent data encryption. I wrote a series about several encryption-related topics a while back:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.red-gate.com\/simple-talk\/sql\/sql-development\/encrypting-sql-server-using-encryption-hierarchy-protect-column-data\/\">Encrypting SQL Server: Using an Encryption Hierarchy to Protect Column Data<\/a><\/li>\n<li><a href=\"https:\/\/www.red-gate.com\/simple-talk\/sql\/sql-development\/encrypting-sql-server-transparent-data-encryption-tde\/\">Encrypting SQL Server: Transparent Data Encryption (TDE)<\/a><\/li>\n<li><a href=\"https:\/\/www.red-gate.com\/simple-talk\/sql\/database-administration\/sql-server-encryption-always-encrypted\/\">SQL Server Encryption: Always Encrypted<\/a><\/li>\n<li><a href=\"https:\/\/www.red-gate.com\/simple-talk\/sql\/sql-development\/encrypting-sql-server-dynamic-data-masking\/\">Encrypting SQL Server: Dynamic Data Masking<\/a><\/li>\n<\/ul>\n<p>The better you understand the tools available to you for securing your database environment, the more effectively you can protect privacy, meet compliance requirements, and safeguard your data at all levels. It might take a bit of time to get comfortable with some of these tools, but the investment you make now could well be worth the effort in the future.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>SQL Server has many tools used to make it secure. In this article, Robert Sheldon demonstrates several of these features including SQL Server Configuration Manager and the Vulnerability Assessment tool.&hellip;<\/p>\n","protected":false},"author":221841,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[143514,143527],"tags":[],"coauthors":[6779],"class_list":["post-84375","post","type-post","status-publish","format-standard","hentry","category-data-privacy-and-protection","category-database-administration-sql-server"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts\/84375","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/users\/221841"}],"replies":[{"embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/comments?post=84375"}],"version-history":[{"count":5,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts\/84375\/revisions"}],"predecessor-version":[{"id":84396,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts\/84375\/revisions\/84396"}],"wp:attachment":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/media?parent=84375"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/categories?post=84375"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/tags?post=84375"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/coauthors?post=84375"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}