SQL Server安全级别1:SQL Server安全性概述(13周翻译)

SQL Server安全级别1:SQL Server安全性概述

  •吉利,2014/06/04

 

这个系列

 

这篇文章是楼梯系列的一部分:通往SQL Server安全的阶梯

 

SQL Server拥有您需要的所有东西来保护您的服务器和数据以抵御今天的复杂攻击。但是在您能够有效地使用这些安全特性之前,您需要了解您所面临的威胁和一些基本的安全概念。第一个阶梯级提供了一个基础,这样您就可以充分利用SQL服务器的安全特性,而不必浪费时间来防止对数据的特定威胁。

 

关系数据库应用于各种各样的应用程序,这些应用程序与来自广泛分布的网络的令人眼花缭乱的客户端联系在一起,特别是Internet,它使得几乎任何人都可以访问到任何地方的数据。数据库可以持有相当一部分人的知识,包括高度敏感的个人信息和关键数据,使国际商务工作。

 

这些特性使数据库成为那些想要窃取数据或通过篡改数据损害其所有者的人的目标。确保您的数据是安全的,这是配置SQL Server和开发用于存储数据的应用程序的关键部分。这个楼梯探索了SQL Server 2012安全性的基础知识,这样您就可以保护您的数据和服务器资源,从而达到您所需要的粒度,以防止可能影响您数据的独特安全威胁。大部分信息将适用于早期版本的SQL Server,回到2005年的SQL Server,因为这是微软在产品中彻底检修安全性的时候。但我还将讨论仅在SQL Server 2012和以后的特性。

 

SQL Server拥有您需要的所有东西来保护您的服务器和数据以抵御今天的复杂攻击。但是在您能够有效地使用这些安全特性之前,您需要了解您所面临的威胁和一些基本的安全概念。第一个阶梯级提供了一个基础,这样您就可以充分利用SQL服务器的安全特性,而不必浪费时间来防止对数据的特定威胁。

 

威胁

识别特定数据集及其服务器的威胁,是理解如何配置和使用SQL server以保护数据的重要第一步。你创建的管理你的小学足球队设备清单的数据库可能不需要严格的安全措施。你可能会想要提供最少的访问控制,这样团队成员就不能随机改变谁有哪个球盒的记录。但是,如果有人进入并窃取或扰乱数据,这可能并不是世界末日。

 

另一方面,如果数据库有关于团队中孩子的个人数据,比如家庭地址和电话号码,那么您可能想要加强安全保护(并且您可能在法律上需要这样做)。您可以通过隔离访问来保护数据的隐私,这样几乎所有访问数据库的人都可以更改设备数据,但只有少数人能够访问个人数据。如果数据包括妈妈和爸爸的信用卡号码,你就需要尽力保护这些数据。

 

您的数据可能会受到许多威胁,下面的列表是比较常见的一些。网上有大量的资源可以帮助你分析你的具体情况的风险。这个列表旨在帮助您开始考虑威胁,以及如何使用SQL Server的特性来对抗它们,或者至少减少您的数据暴露给它们。

 

•窃取数据:窃取数据包括各种类型的未经授权的数据访问,无论是通过外部黑客入侵你的网络,还是对名人进行内幕扫描。它可能涉及阅读被禁止的信息的刺激,或者是潜在的被偷来的信用卡号码。

 

•数据破坏:黑客可以访问你的数据,可以改变它,这可能会导致一系列的问题,从公众的尴尬到关闭整个操作(当所有的客户记录被删除时,这可能发生)

 

•数据损坏:在关系数据库中存储数据最大的好处之一是数据库本身可以帮助保护数据的完整性。数据完整性包括强制要求

 

 

每个订单都有一个关联的客户,日期字段存储的日期实际上表示一个日历日期,而一个百分比字段只包含0到100之间的值。数据完整性可能不是您首先想到的与安全性有关的东西,但它是保护您的数据的重要部分。

非法存储:在过去,你在商业过程中收集的数据实际上是你自己的事情。但是现在美国有无数的联邦法律在整个欧盟和其他国家,你可以储存你可以储存的个人资料,你如何储存它,以及你如何保护它。对违规行为的处罚可以是对公司公众形象的罚款和损害。

这个楼梯覆盖了SQL Server 2012的功能,帮助减轻了这些威胁和其他威胁。你必须了解你的数据的威胁,知道如何保护它们。不要把时间浪费在那些不能防止特定数据受到特定威胁的措施上。您将永远无法覆盖所有假设的情况,最坏的情况下,您将使您的数据库服务器完全无法使用它的预期用户。安全始终是一种折衷办法,它平衡了对执行和维护保障措施所需要的时间和金钱的风险。

安全设计理念

早在2002年,比尔·盖茨就发布了他臭名昭著的可信赖的计算备忘录,这被证明是微软如何看待和实现产品安全的一个转折点。根据微软网站的说法,由此产生的可信赖计算倡议“专注于建立并交付基于健全商业实践的安全、私有和可靠的计算经验。我们的目标是更安全、更可信的互联网。

换句话说,十多年前,微软对安全问题变得非常认真。在此更改之后发布的第一个版本的SQL Server版本是SQL Server 2005,在此版本中,Microsoft完全彻底地检查了整个产品的安全性。从那时起,每个版本的SQL服务器都保留了新的安全基础设施,同时增加了新的安全基础设施,并增加了新的功能,以提高安全性,并解决新的和新兴的威胁。

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

•设计安全:微软对其设计和代码和交互进行了广泛的威胁分析和安全审计,以识别攻击者可以在服务器和数据中获得一个toehold的点。其结果是,微软设计了SQL Server来保护存储在那里的数据的机密性、完整性和可用性。

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

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

通过沟通获得安全:微软已经建立了一个精心设计的基础设施,以收集有关其产品漏洞的信息。但如果这些信息留在微软内部,所有这些信息都是毫无价值的。因此,该公司致力于沟通新的漏洞,积极修补以保护它们,并定期更新其在线帮助系统,以反映新的安全信息。

这种“it 's just secure”的理念在整个产品中都有影响。但是,尽管SQL Server是相当安全的,但是当您创建数据库和安装服务时,您必须做出明智的安全选择,以保证SQL Server的安全性。制作和保持生产数据库服务器的安全需要工作和警惕。

请记住,有时候保护数据的最好方法就是不要把数据放在数据库中,例如,如果你有一个绝对有效的需要,那么就只存储信用卡号(而且没有很多这样的信息)。如果您没有这样的需求,您应该处理信用卡事务并存储结果,而不是信用卡信息本身。你不能在你没有的数据上遭受安全的打击!

安全的两个阶段

SQL Server的安全模型与Windows一样,是一个两阶段的过程,允许用户或其他登录访问服务器中的受保护资源:
•身份验证:用户登录,验证并获得对服务器的访问权限。身份验证回答了“你是谁?”这个问题,并要求用户证明这一点,通常是通过提供用户名的密码来进行证明,而其他形式的证明则越来越受欢迎。
•授权:用户只能与其拥有权限的SQL Server对象(如数据库,表和存储过程)进行交互。授权回答这个问题:“你可以做什么?
    用户可能能够登录到SQL Server,但是除非他们有权执行某些操作(例如访问数据库),否则这些操作不会太好。因此,您不仅需要为用户提供身份验证凭据,还需要授权他们访问数据,方法是在每个数据库中为他们定义帐户,然后对其进行身份验证。
    当你考虑这个问题的时候,在每个数据库中都需要一个用户帐户,这很有意义。否则,会阻止用户登录到SQL Server,然后使用任何他们想要的数据库?这个概念有各种各样的适应各种情况,但这是安全的基本状态。
    在这个阶梯中的后续级别包括身份验证和授权,您将学习如何在SQL Server中实现各种安全功能,以防止已经识别到您的数据的威胁。
SQL Server安全术语
    当您在SQL Server和其他产品中使用安全性时,您将遇到各种专业术语。以下是一些更常见的术语以及它们在数据库安全性方面的含义。
    身份验证:如上所述,身份验证是通过要求她证明自己是与登录相关联的人来确定身份的过程。它回答了这个问题,你是谁?
    授权:一旦系统认证用户,授权(如上所述)确定用户在服务器或数据库中的权限。这回答了这个问题,你现在可以做什么,你在这里?
    :在Windows中,组是与其关联的登录的主体。授予该组的任何权限都将授予关联的登录名。
    模拟:所有Windows进程(包括各种SQL Server进程)都运行在特定的安全上下文中,通常是导致进程启动的主体。当进程临时采用不同的安全上下文时,就会发生模仿。这是一个非常强大和必要的能力,但具有滥用的可能性。
    登录:登录是对服务器实例中的对象具有一定级别访问权限的主体。在常见的用法中,登录常常与用户交换使用。但是,SQL Server登录是用于从外部访问服务器的帐户。登录有时包括访问服务器范围内的对象的权限,例如配置信息,但通常不赋予数据库的任何权限。
    权限:权限是访问受保护资源的权限,例如从表中读取数据或在服务器级创建新数据库。权限通常意味着其他权限,具体取决于主题权限的范围。
    委托人:委托人是可以接收访问SQL Server中的受保护资源的权限的任何用户或代码组件。
    特权:特权是委托人拥有的广泛的权利或许可。这个词有时可以与许可交换使用,更多的时候意味着一个特定的狭义的权利。特权意味着一组更广泛的权限。
    角色:SQL Server角色类似于Windows组,但仅限于SQL Server实例的范围。就像一个组一样,您可以将登录名和用户分配给一个角色,该角色向登录名和用户传递该角色拥有的所有权限。
    用户:用户是对特定数据库中的对象具有一定级别访问权限的主体。用户通常被映射到登录。简而言之,登录可以访问SQL Server实例,并且用户可以访问数据。
你会看到这个阶梯中使用的大部分术语。

你会看到大部分的术语都在这个阶梯上使用。

管理和实现SQL Server安全性

SQL Server中的大多数管理和管理任务一样,几乎总是有多种方法来管理和实现安全特性,包括使用管理Studio的图形化界面、编写和执行t - SQL代码,以及使用SQL ServerPowerShell的集成,以便在我们之间使用命令行junkies。使用PowerShell是在这个楼梯的范围之外,但在整个楼梯间,你会看到许多使用其他两种技术的例子。(要了解PowerShellSQL Server之间的紧密集成,请查看通往SQL PowerShell的阶梯)

为了使用安全特性的管理工作室,您通常会在对象资源管理器中右键单击一个适当的对象并选择Properties,然后在对话框中使用适当的页面来进行您想要的更改。例如,要在AdventureWorksLT2012样本数据库设置权限,在对象资源管理器中右键单击数据库名称,选择Properties,然后选择权限选项卡,如图1.1所示。

 

 

1.1:修改AdventureWorksLT2012数据库安全性的权限页面。

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

 

 

1.2:对象资源管理器中的服务器和数据库级别的安全对象。

 

你会发现在整个管理工作室和它的各种窗口中隐藏着各种各样的安全特性,所以当你遇到它们时,做一些探索是值得的。

 

SQL Server 2005中引入的安全检查的一个变化是允许以更细粒度的方式分配权限。正如您将在以后的级别中学习的,您可以为各种主体分配多种权限,以实现最重要的安全主体——至少是特权——即每个主体都有权限来做他们需要做的事情:不多也不少。随着这一变化,微软加强了t - sql,以包括对直接操作安全对象的语言的强大支持。

 

1.1中的代码展示了一个简单的t - sql示例,可以用来创建安全对象。代码首先创建一个与现有Windows登录连接的服务器级登录。然后,在AdventureWorks2012数据库中,代码创建一个映射到登录的用户,并为用户指定一个默认的模式。最后一点代码说明如何在数据库中删除用户,并创建映射到相同登录的另一个用户。当然,这很做作,但它显示了在代码中可以做什么。或者在管理工作室的GUI工具中,如果你喜欢的话。

-

 1.1:创建服务器登录和数据库用户的示例代码。

 如果您想尝试运行此代码,您可能需要先进行一些更改。除非你在一个叫马拉松的机器上,并且有一个现有的用户名JoeStairway,否则你需要在代码中更改这些名称。该代码在AdventureWorks2012中创建数据库用户,并使用它的生产模式,因此您可能需要安装数据库或更改代码以使用另一个数据库和其中的现有模式。但是,您可能希望安装AdventureWorks示例数据库套件,因为这个楼梯会经常使用它们。

 摘要

第一层楼梯提供了SQL Server 2012的基本安全概念的概述。您已经了解了一些更常见的数据威胁,并探索了SQL Server安全性背后的设计理念。您了解了安全性的两个阶段——认证和授权,学习了一些安全术语,您将在整个楼梯间看到,并看到您可以通过管理工作室的GUI工具以及t - sql代码来管理和实现安全性。

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

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

 

posted @ 2017-12-11 22:14  706小组  阅读(320)  评论(0编辑  收藏  举报