此文翻译原文源于http://www.sqlservercentral.com/articles/Stairway+Series/109941/
SQL Server的安全1级楼梯:SQL Server安全概述
由Don Kiely,2014 / 06 / 04
该系列
这篇文章是楼梯系列的一部分:SQL Server的安全楼梯
SQL Server有你需要的一切来保护您的服务器和数据对今天的复杂攻击。但在你可以有效地使用这些安全功能,你需要了解你所面对的威胁和一些基本的安全概念。第一阶梯水平的基础,可以充分利用SQL Server中的安全功能不浪费时间的功能,做什么来防止你的数据提供了具体的威胁。
关系型数据库是用于与从广泛分布的网络客户连接一个惊人的各种令人眼花缭乱的应用,特别是互联网,使得数据向所有的人开放,任何地方。数据库可以容纳人类知识的一个重要组成部分,包括高度敏感的个人信息和关键数据,使国际商务工作。
这些特点使得数据库的人谁想要窃取数据或通过篡改它伤害它的主人的有吸引力的目标。确保您的数据安全是配置SQL Server开发和使用,存储数据的应用程序的一个关键部分。这楼梯对SQL Server 2012的安全基础知识,这样你可以保护你的数据和服务器资源,得到颗粒作为你需要保护的独特的安全威胁,会影响你的数据。大部分的信息适用于早期版本的SQL Server,回到SQL Server 2005,因为这是当微软大修安全产品。但我也会讨论,仅在SQL Server 2012及以后的特征。
SQL Server有你需要的一切来保护您的服务器和数据对今天的复杂攻击。但在你可以有效地使用这些安全功能,你需要了解你所面对的威胁和一些基本的安全概念。第一阶梯水平的基础,可以充分利用
威胁
识别威胁到一个特定的数据集和它的服务器是重要的第一步,了解如何配置和使用SQL Server来保护您的数据。数据库创建管理你的小学足球队的设备可能不需要大量的安全措施。你可能要提供至少最低限度的访问控制使团队成员不能随意改变记录谁有这盒足球。但它可能不是世界末日,如果有人在和抢断或食堂的数据。
另一方面,如果数据库中有关于团队的儿童的个人资料,如家庭住址和电话号码,你可能要加强安全保护(你可能是法律要求如此)。你可能保护被隔离访问,几乎任何人都可以访问数据库可以改变设备数据,但只有少数人可以访问个人数据的隐私。如果数据包括爸爸妈妈的信用卡号码,你需要全力以赴来保护数据。
有一些威胁你的数据可能是敏感的,和下面列出的是一些最为常见。很多资源都可以在网络上,可以帮助你分析你的具体情况的风险。这个清单的目的是帮助你开始思考的威胁和如何使用SQL Server的功能计数器或至少减少数据的接触到他们。
- <strong>盗窃数据</strong>:盗窃数据涵盖了各种类型的未经授权的访问到您的数据,无论是外人入侵你的网络或内部扫描污垢在著名的人。它可能涉及的快感阅读禁止的信息或是出于潜在的出售偷来的信用卡号码。
- <strong>数据破坏</strong>:黑客获得访问你的数据可以改变它,这会导致一系列的问题,从公共尴尬关闭整个操作(这可能发生在你所有的客户记录被删除)。
- <strong>数据腐败</strong>:最大的好处之一是数据存储在关系数据库中,数据库本身可以帮助保护数据的完整性。数据的完整性,包括要求每个订单都有一个关联的客户,一个日期存储在日期字段中真的是一个日历上的日期,这一百分比字段只包含值0和100之间。数据完整性可能不是你首先想到与安全,但它是保护你的数据的一个重要组成部分。
- <strong>非法储存</strong>:在过去,你的数据收集过程中的业务就是自己的生意。但现在无数的联邦法律的存在在美国,整个欧盟,而控制个人数据可以存储的其他国家,如何存储,以及如何保护它。对违法行为的处罚是很严重的货币处罚和对你的公司的公众形象受损。
这楼梯覆盖功能在SQL Server 2012中,有助于减轻这些威胁和许多其他。你必须了解你的数据的威胁,如何保护他们。不要在措施,不保护您的特定数据的具体威胁,浪费时间。你永远不可能覆盖所有假设的情况,并在最坏的情况,你会让你的数据库服务器的目标用户完全无法使用。安全始终是一个妥协的平衡风险与时间和金钱需要实施和维护保障。
安全的设计理念
2002比尔盖茨早期派出他的臭名昭著的可信计算备忘录,这是微软如何思考的一个转折点,在其产品中实现了安全。由此产生的可信赖计算的主动性,根据微软网站,“专注于创造和提供安全的,私人的,基于健全的商业惯例和可靠的计算体验。我们的目标是一个更安全、更可信的互联网。”
换句话说,一位在十多年前,微软开始对安全很严重。SQL Server后,这种变化是SQL Server 2005发布了第一个版本,其中微软全面整顿安全整个产品。此后,每个版本的SQL Server保留新的安全基础设施,逐步提高和增加新的功能,以提高安全性和解决新出现的威胁。
微软称其在SQL Server 2005天,可信赖计算影响SQL Server的开发通过定义产品的安全设计四大支柱:
- <strong>安全设计</strong>:微软进行了广泛的威胁分析和安全审计的设计和编码的识别和相互作用的点,攻击者可以进入到服务器和数据。结果是,微软设计的SQL Server来保护机密性,完整性,以及数据的可用性你有店。
- <strong>默认安全</strong>:开箱,SQL Server安装和激活的关键核心组件的默认数据库。这意味着,不到核心数据库功能的关键特征是没有安装或者安装但未激活。一个功能,没有安装不易受攻击。你有意识地安装或激活非核心功能。这可以防止你可能不知道的许多特征的攻击是因为你从来没有使用安装。
- <strong>部署安全</strong>:微软提供的工具和支持安装SQL Server的安全和保持它的安全。SQL Server配置工具可以帮助您配置服务器的安全。最好的是,SQL Server更新现在可用的在线微软更新服务的一部分,所以很容易获得安全更新和补丁。
- <strong>安全通信</strong>:微软已经建立了一个复杂的基础设施来收集信息关于在其产品中的漏洞。但所有的这些信息都是无用的如果还停留在微软。所以公司致力于传播新的漏洞补丁,积极保护他们,和船舶定期更新书籍在线帮助系统以反映新的安全信息。
这种哲学“是安全的”在整个产品的影响。虽然SQL Server是相当安全的开箱,当你创建数据库和安装服务,你必须作出明智的选择,以<em>保持</em>安全的SQL Server实例的安全。需要努力和警惕保持生产数据库服务器安全。
记住,有时是为了保护数据最好的方法就是不把它放在例如数据库,只存储信用卡号码,如果你坚持这样的信息绝对有效需求(和这样的人并不多)。如果你没有这样的需要,你应该处理信用卡交易和存储的结果,而不是信用卡本身的信息。你不能忍受你不在数据安全漏洞有!
安全性的两个阶段
SQL Server的安全模型,这样的窗口,是一个两阶段的过程,允许一个用户或登录访问服务器内的受保护的资源:
- <strong>认证</strong>:用户登录、验证,并获得对服务器的访问。验证答案的问题,“你是谁?“需要用户来证明这一点,通常是通过提供的密码与用户名,但是其他形式的证据正变得越来越流行。
- <strong>授权</strong>:一个用户能够互动,只有SQL Server对象,如数据库、表和存储过程,她有权限。授权回答问题,“是什么让你做什么?“
用户可以登录到SQL Server,但除非他们被允许做某事,如访问数据库,也没有多好。所以你不仅需要提供给用户的身份验证凭据,您还需要授权访问的数据定义为他们的帐户在每个数据库需要使用一次他们的认证。
当你想想看,在每个数据库需要用户帐户是很有道理的。否则,什么会阻止用户登录到SQL Server数据库并使用任何他们想要的吗?有这种观念,适应各种情况的变化,但这是基本的安全状态。
在这个楼梯以后的水平,包括认证和授权,您将学习如何执行SQL Server中的各种安全功能,以防止你确定你的数据的威胁。
SQL Server的安全术语
当你在SQL Server和其他产品的安全工作,你会遇到各种各样的专业术语。这里是一些比较常见的术语和它们的含义在数据库安全方面。
Authentication: As mentioned above, authentication is the process of positively identifying a person by requiring her to prove that she is the person associated with a login.It answers the question, Who are you?
<strong>授权</strong>:一旦系统对用户进行认证、授权(如上所述)决定的权限,用户在服务器或数据库。这个问题的答案,你能做什么你现在在这里吗?
<strong>组</strong>:在Windows中,一组是一个主要有登录与它相关联的。任何权限授予本集团授予相关的登录。
<strong>模仿</strong>:所有的Windows程序,包括各种SQL服务器程序,运行在一个特定的安全上下文,通常是主谁造成的过程开始。模拟发生在当一个进程暂时需要在不同的安全上下文。这是一个非常强大的和有能力的,但有潜在的滥用。
<strong>Login</strong>:一个登录是一个主,都有一定程度的对对象的访问在一个服务器实例。在日常使用中,用户登录经常交替使用。但一个SQL Server登录是一个用于访问外部的服务器帐户。登录有时包括访问服务器对象的广泛的权利,如配置信息,但通常不授予任何权利在数据库。
<strong>权限</strong>:权限是一个正确的访问受保护的资源,如读取数据从一个表或创建新的数据库在服务器级别。一个权限常常意味着其他权限,取决于被许可的范围。
<strong>校长</strong>:校长是任何用户或代码组件可以接收的权限来访问受保护资源的SQL服务器。
<strong>特权</strong>:特权是广泛的权限,主要有。这个词有时被允许互换使用,这往往意味着一个特定的、狭隘的权利。特权意味着一组广泛的权限。
<strong>作用</strong>:SQL Server的作用类似于Windows组,但仅限于限制SQL Server实例。像一组,你可以指定登录名和用户的角色,这传达给登录用户的所有权限的作用。
<strong>用户</strong>:用户是一个主体,都有一定程度的访问对象在一个特定的数据库。用户通常映射到登录。简单来说,一个登录访问一个SQL Server实例,以及用户对数据的访问。
你会看到这些术语在这楼梯。
管理和执行SQL Server的安全
与大多数管理SQL Server的任务,几乎总是有多种方法来管理和执行的安全功能,包括使用Management Studio的图形界面,编写和执行T-SQL代码,并使用SQL Server的集成在我们的命令行迷PowerShell。使用PowerShell在这楼梯的范围,但在整个楼梯,你会看到使用其他技术的例子不胜枚举。(了解PowerShell和SQL Server之间的紧密集成查看SQL PowerShell的楼梯。)
使用Management Studio中的安全功能,通常你右键点击一个合适的对象在对象资源管理器,选择属性,然后在对话框中使用合适的页面让你想要的改变。例如,设置权限的<em>adventureworkslt2012</em>示例数据库,请右键单击数据库名称在对象资源管理器中,选择“属性”,然后选择“权限”选项卡,如图1.1所示。
图1.1:权限网页修改的adventureworkslt2012数据库的安全。
在数据库服务器实例级别,对象资源管理器包括一个安全节点,让你管理和执行其他安全功能。图1.2显示了该节点的<em>adventureworkslt2012</em>数据库在服务器实例级别。一个突出的节点包含不同的子节点给你访问安全对象适当的选择范围。
图1.2:在服务器和数据库级的安全对象在对象资源管理器。
你会发现各种安全功能隐藏在管理工作室和它的各种窗口,值得做一些探索你遇到他们。
一个介绍SQL Server 2005的安全检修的变化是允许的权限被赋予更多的颗粒的方法。你将学习后的水平,你可以指定多种权限各种校长为了落实的重要保障本金<em>最少特权</em>的想法,每个主体所具有的权限去做他们需要做什么:没有。随着这些改变,微软加强了对包括T-SQL语言中强烈支持直接操纵对象。
清单1.1中的代码显示了一个简单的问题你可以使用它来创建安全对象的例子。代码首先创建一个服务器级别登录链接到现有的Windows登录。然后,在<em>adventureworks2012</em>数据库,代码创建了一个用户映射到登录,以及对用户分配一个默认架构。和代码的最后一位显示了你可以删除一个用户在数据库中创建一个用户映射到相同的登录。很做作,当然,但它表明你可以在代码。或在管理工作室的GUI工具,如果你喜欢。
-- Add a Windows login to SQL Server
CREATE LOGIN [Marathon\JoeStairway] FROM WINDOWS;
GO
USE AdventureWorks2012;
GO
-- Name the user the same name as login
CREATE USER [Marathon\JoeStairway] FOR LOGIN [Marathon\JoeStairway]
WITH DEFAULT_SCHEMA = Production;
GO
-- Or, rename the user in the database
DROP USER [Marathon\JoeStairway];
GO
CREATE USER Jane FOR LOGIN [Marathon\JoeStairway];
GO
-- Query metadata to show that user was created
SELECT * FROM sys.database_principals WHERE name = 'Marathon\JoeStairway';
SELECT * FROM sys.database_principals WHERE name = 'Jane';
示例1.1:示例代码创建一个服务器登录和数据库用户。
如果你想尝试运行此代码,有一些变化,你可能需要先。除非你在机命名为<em>马拉松</em>和拥有一个用户名<em>JoeStairway</em>,你需要更改这些名称代码。该代码创建数据库用户在<em>adventureworks2012</em>和使用其<em>生产</em>的模式,所以你需要有数据库安装或更改代码使用另一个数据库和现有架构中。但你可能要安装<em>AdventureWorks</em>示例数据库套件,因为这楼梯会经常使用他们。
概要
这第一级楼梯提供了在SQL Server 2012中安全的基本概念的概述。你已经了解到的一些数据更常见的威胁,并探讨在SQL Server的安全设计理念。你知道安全–认证和授权两阶段,学到了一些安全方面,你会看到整个楼梯,看到你可以管理和实施安全通过管理工作室的GUI工具以及在T-SQL代码。
在下一个水平,你会学到更多关于如何认证工作在SQL服务器和认证选项。