翻译(13w)

 

窗体底端

SQL Server的阶梯安全级别1:SQL Server安全的概述

唐•吉利,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来保护您的数据。您创建一个数据库来管理你的小学足球队的设备库存可能不需要严密的安全措施。您可能需要至少提供最小的访问控制,这样团队成员不能随机变化的记录盒的足球。但它可能不是世界末日,如果有人在偷或混乱的数据。

另一方面,如果数据库对孩子团队中的个人资料,如家庭地址和电话号码,你可能想要加强安全保护(你可能是法律要求这样做)。你可能通过隔离保护隐私数据的访问,这样几乎任何访问数据库可以改变设备数据,但只有少数可以访问个人数据。如果数据包括妈妈和爸爸的信用卡号码,你需要极其小心地保护这些数据。

有很多数据可能容易受到的威胁,和下面的列表是一个更常见的很少。很多在网络上可用的资源,可以帮助您分析您的具体情况的风险。这个列表是旨在帮助您开始考虑威胁和如何使用SQL Server来对抗他们的特点或者至少减少数据的接触他们。

窃取数据:窃取数据涵盖了各种类型的未经授权的数据访问,不管是外人侵入你的网络,还是内幕人士浏览名人的丑闻。它可能包括阅读被禁止的信息的激动,或者是潜在的出售被盗信用卡号码的动机。

数据破坏:一个获取你的数据的黑客可以改变你的数据,它会引起一系列的问题,从公开的尴尬到关闭你的整个操作(当你所有的客户记录都被删除时可能发生)。

数据损坏:在关系数据库中存储数据的最大好处之一是数据库本身可以帮助保护数据的完整性。数据的完整性,包括要求每个订单都有一个关联的客户,一个日期存储在日期字段中真的是一个日历上的日期,这一百分比字段只包含值0和100之间。数据完整性可能不是您在安全性方面考虑的第一件事,但它是保护数据的重要部分。

非法存储:在过去,你在业务过程中收集的数据实际上是你自己的业务。但是现在,美国、整个欧盟和其他国家都有无数的联邦法律,它们控制着你可以储存的各种个人数据,你如何存储它,以及如何保护它。对违规行为的惩罚可能是严厉的,既有金钱上的惩罚,也有损于公司的公众形象。

此楼梯覆盖SQL Server 2012中的特性,有助于减轻此类威胁和其他许多威胁。您必须了解对数据的威胁,知道如何保护它们。不要把时间浪费在不保护特定数据的特定威胁上的措施上。您将永远无法覆盖所有假设的情况,而最坏的情况是,您的数据库服务器完全无法由预定的用户使用。安全始终是一种折衷,它平衡了执行和维护保障所需的时间和金钱的风险。

安全的设计理念

2002年初,比尔盖茨发布了他臭名昭著的可信计算备忘录,这被证明是微软考虑并实现其产品安全的转折点。微软网站称,由此产生的值得信赖的计算计划“着眼于创建和提供基于可靠业务实践的安全、私有和可靠的计算经验。我们的目标是建立一个更安全、更可信的互联网。”

换句话说,十多年前,微软变得非常重视安全。更改后发布的SQL Server的第一个版本是SQL Server 2005,其中微软彻底检查了整个产品的安全性。从那时起,SQL Server的每一个版本都保留了新的安全基础设施,同时不断地增加它并添加新的特性,既提高了安全性,又解决了新出现的威胁。

正如微软在SQL Server 2005时代所描述的那样,可信计算通过定义产品安全设计的四个支柱影响了SQLServer的开发:

安全的设计:微软进行了广泛的威胁分析和设计、编码和交互的安全审核确定的点,攻击者可以进入到服务器和数据。结果是微软设计了SQL Server来保护存储在那里的数据的机密性、完整性和可用性。

默认情况下安全:SQL Server默认安装和激活关键的核心数据库组件。这意味着对核心数据库函数不重要的特性没有安装或安装,但没有激活。未安装的特性不易受到攻击。你必须有意识、有意识地安装或激活非核心功能。这防止了许多你可能不知道的功能被安装,因为你从来没有使用过它们。

安全部署:微软提供了安全安装SQL Server的工具和支持,并保证其安全。SQLServer配置工具帮助您安全地配置服务器。最重要的是,SQL Server的更新现在可以作为在线微软更新服务的一部分,因此很容易获得安全更新和补丁程序。

通过通信安全:微软已经建立了一个详细的基础设施来收集关于其产品中的漏洞的信息。但是所有这些信息如果在微软中都是毫无价值的。因此,该公司致力于沟通新的漏洞,积极修补,以防止他们,并定期定期更新其图书联机帮助系统,以反映新的安全信息。

这种“安全”的理念在整个产品中都有意义。但是尽管SQL Server是非常安全的,但当您创建数据库和安装服务时,必须做出明智的安全选择,以保持SQLServer实例的安全性。制造和保持生产数据库服务器的安全需要工作和警惕。

记住,有时保护数据最好的办法就是不要把它放在数据库中,例如,只有存储有效的信用卡号码,你才可以保存这种信用卡号码(而且这些信息不多)。如果你没有这样的需要,你应该处理信用卡交易并存储结果,而不是信用卡信息本身。你不能在没有数据的情况下遭受安全跟踪!

 

安全的两个阶段

SQL Server的安全模型,类似于Windows,是一个两阶段的过程,允许用户或其他登录访问服务器中受保护的资源:

身份验证:用户登录,进行验证,并获得对服务器的访问权。认证回答了这个问题:“你是谁?”“并要求用户证明它,通常是通过提供用户名的密码,但其他形式的证明正变得越来越流行。

授权:用户只能与那些SQL服务器对象(如数据库、表和存储过程)进行交互。授权回答了这个问题:“你允许做什么?”“

用户可能会登录到SQL Server,但除非他们有权限做某些事情,比如访问数据库,否则不会对他们有多大好处。因此,您不仅需要向用户提供身份验证凭据,还需要授权它们访问数据,通过在它们经过身份验证后需要使用的每个数据库中为它们定义帐户。

当您考虑它时,要求每个数据库中的用户帐户是很有意义的。否则,是什么阻止用户登录到SQL服务器,然后使用他们想要的数据库?这个概念的变体可以适应各种场景,但这是安全的基本状态。

此楼梯中的后续级别包括认证和授权,您将了解如何在SQL Server中实现各种安全功能,以防止对您的数据进行识别的威胁。

SQL服务器安全术语

当您在SQL Server和其他产品中使用安全性时,您会遇到各种专门术语。下面是一些比较常见的术语,以及它们在数据库安全上下文中的含义。

身份验证:如上所述,身份验证是通过要求她证明自己是与登录相关联的人来积极识别一个人的过程。它回答了问题,你是谁?

授权:一旦系统对用户进行认证、授权(如上所述)决定了用户在服务器或数据库的权限。这回答了这个问题,既然你在这里,你能做什么?

组:在Windows中,一组是一个主要的具有与其关联的登录。任何权限授予本集团授予相关的登录。

模拟:所有Windows进程,包括各种SQL Server进程,都运行在特定的安全上下文中,通常是导致进程启动的主体。当进程临时接受不同的安全上下文时发生模拟。这是一个非常强大和必要的能力,但有潜在的滥用。

Login:登录是对服务器实例中的对象有某种程度的访问的主体。在通常的用法中,登录常常与用户互换使用。但是SQLServer登录是用于从外部访问服务器的帐户。登录有时包含访问服务器范围对象(如配置信息)的权限,但通常不授予数据库中的任何权限。

权限:权限是访问受保护资源的权限,例如从表读取数据或在服务器级别创建新数据库。权限通常意味着其他权限,这取决于主体权限的范围。

主体:主体是任何可以在SQLServer中访问受保护资源的权限的用户或代码组件。

特权:特权是主体拥有的一组广泛的权利或权限。这个词有时与许可互换使用,这通常意味着特定的、狭窄的权利。特权意味着一组更广泛的权限。

角色:SQLServer角色类似于Windows组,但仅限于SQLServer实例的范围。像一组,你可以指定登录名和用户的角色,这传达给登录用户的所有权限的作用。

用户:用户是对特定数据库中的对象具有一定访问权限的主体。用户通常映射到登录。简单地说,登录可以访问SQL Server实例,用户可以访问数据。

你会看到这个楼梯中用到的大部分术语。

 

管理和实现SQL Server安全

与大多数管理SQL Server的任务,几乎总是有多种方法来管理和执行的安全功能,包括使用Management Studio的图形界面,编写和执行T-SQL代码,并使用SQL Server的集成在我们的命令行迷PowerShell。使用PowerShell在这楼梯的范围,但在整个楼梯,你会看到使用其他技术的例子不胜枚举。(了解PowerShell和SQL Server之间的紧密集成查看SQL PowerShell。楼梯)

要使用安全性特性管理库,通常您只需右键单击对象资源管理器中的适当对象并选择属性,然后在对话框中使用相应的页面进行所需的更改。例如,放在adventureworkslt2012示例数据库的权限,请右键单击数据库名称在对象资源管理器中,选择“属性”,然后选择“权限”选项卡,如图1.1所示。

 

图1.1:权限网页修改的adventureworkslt2012数据库的安全。

在数据库和服务器实例级别,对象资源管理器包括一个安全节点,允许您管理和实现其他类型的安全特性。图1.2显示了该节点的adventureworkslt2012数据库在服务器实例级别。两个突出显示的节点中的每一个都包含不同的子节点,这些节点允许您访问适合于选择范围的安全对象。

 

图1.2:对象浏览器中服务器和数据库级别的安全对象。

你会发现各种安全功能藏在整个管理工作室和它的各种窗口,所以值得你做一些探索,当你遇到他们。

SQL Server 2005中的安全性检修引入的一个更改是允许以更细粒度的方式分配权限。正如您稍后将学到的,您可以将多种权限分配给各种主体,以便实现最小特权的重要安全原则,即每个主体都有权限完成他们所需要做的事情:不多也不少。随着这些改变,微软加强了对包括T-SQL语言中强烈支持直接操纵对象。

清单1.1中的代码显示了一个简单的问题你可以使用它来创建安全对象的例子。代码从创建与现有Windows登录链接的服务器级登录开始。然后,在adventureworks2012数据库,代码创建了一个用户映射到登录,以及向用户分配一个默认的模式。最后一段代码显示了如何将用户放到数据库中,并创建另一个映射到同一登录的用户。当然是很做作,但它显示了代码中可以做什么。或者在管理工作室的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:创建服务器登录和数据库用户的示例代码。

如果您想尝试运行此代码,您可能需要首先进行一些更改。除非你在机命名为马拉松和拥有一个用户名JoeStairway,你需要在代码中更改这些名称。该代码创建在adventureworks2012数据库用户和使用其生产的模式,所以你需要有数据库安装或更改代码中使用另一个数据库和现有架构。但你可能要安装示例数据库AdventureWorks套件,因为这会让他们频繁地使用楼梯。

总结

这个第一级的楼梯提供了SQL Server 2012中基本安全概念的概述。您已经了解了一些对数据更常见的威胁,并探讨了SQL Server安全背后的设计理念。你知道安全–认证和授权两阶段,学到了一些安全方面,你会看到整个楼梯,看到你可以管理和实施安全通过管理工作室的GUI工具以及在T-SQL代码。

在下一个层次,您将了解更多关于SQL Server中身份验证的工作原理以及可用的身份验证选项。

本文是SQL Server安全楼梯的一部分。

注册到我们的RSS提要并在我们发布一个新级别的楼梯时得到通知!

原文链接:

http://www.sqlservercentral.com/articles/Stairway+Series/109941/

posted on 2017-12-10 23:01  54Mosen  阅读(101)  评论(0)    收藏  举报

导航