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

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的特性来对抗它们,或者至少减少您的数据暴露给它们。

窃取数据:窃取数据包括各种未经授权的对你的数据的访问,无论是外部入侵你的网络,还是对名人的内部扫描。它可能包括阅读被禁止的信息的兴奋,或者被潜在的信用卡号码的销售所激发。

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

数据损坏:在关系数据库中存储数据的最大好处之一是,数据库本身可以帮助保护数据的完整性。数据完整性包括要求每个订单都有一个相关的客户,在日期字段中存储的日期实际上表示一个日历日期,而百分比字段只包含0100之间的值。数据完整性可能不是与安全性有关的第一件事,但它是保护数据的重要部分。

非法存储:在过去,您在业务过程中收集的数据完全属于您自己的业务。但是现在美国有无数的联邦法律。在整个欧盟,以及其他国家,这些国家控制着你可以储存的个人数据,你如何存储,以及你如何保护它。对违规行为的处罚可能会对你的公司的公众形象造成严重的罚款和损害。

这段楼梯涵盖了SQL Server 2012中的一些特性,这些特性帮助减轻了这些威胁和其他许多问题。你必须了解你的数据的威胁,知道如何保护你的数据。不要把时间浪费在那些不能保护你的特定数据的具体威胁的措施上。您将永远无法覆盖所有假设的情况,最坏的情况下,您将使数据库服务器完全无法使用其预期的用户。安全始终是一种妥协,它平衡了实施和维护保障措施所需要的时间和资金的风险。

安全设计理念

早在2002年,比尔盖茨就发布了他那声名狼藉的“值得信赖的计算备忘录”,这一备忘录被证明是微软如何看待和实现其产品安全的一个转折点。根据微软网站的说法,由此产生的可信赖计算计划专注于创建并交付基于可靠业务实践的安全、私有和可靠的计算体验。我们的目标是更安全、更可信的互联网。

换句话说,十多年前,微软对安全问题的态度变得非常严肃。在这一变化之后,SQL Server的第一个版本是SQL Server 2005,在这个版本中,微软对整个产品的安全性进行了彻底的改进。从那以后,每一个版本的SQL Server都保留了新的安全基础设施,同时增加了新的安全性,并增加了新的特性,以提高安全性和应对新出现的威胁。

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

安全设计:微软对其设计、代码和交互进行了广泛的威胁分析和安全审计,以确定攻击者可以在服务器和数据中获得立足之地。其结果是,Microsoft设计了SQL Server,以保护您存储在那里的数据的机密性、完整性和可用性。

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

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

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

这种“安全”的理念在整个产品中都有意义。虽然SQL Server是相当安全的开箱,当你创建数据库和安装服务,你必须作出明智的选择安全 保持 SQL Server实例的安全。制造和保持生产数据库服务器的安全需要工作和警惕。

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

 

安全的两个阶段

 

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

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

·授权: 用户能够只有SQL Server对象,如数据库、表和存储过程的相互作用,使她有权限。授权回答了这个问题:“你允许做什么?”“

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

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

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

 

SQL服务器安全术语

 

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

认证: 如上所述,认证标识一个人要求她证明她是一个登录相关的人的过程。它回答了问题,你是谁?

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

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

模仿: 所有Windows程序,包括各种SQL服务器程序,运行在一个特定的安全上下文,通常是谁造成的过程开始的主。当进程临时接受不同的安全上下文时发生模拟。这是一个非常强大和必要的能力,但有潜在的滥用。

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

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

校长: 主要是任何用户或代码,可以接收访问受保护资源的权限的SQL Server组件。

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

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

用户: 用户是主要的,在一个特定的数据库对象的访问级别。用户通常映射到登录。简单地说,登录可以访问SQL Server实例,用户可以访问数据。

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

 

管理和实现SQL Server安全

 

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

要使用安全性特性管理库,通常您只需右键单击对象资源管理器中的适当对象并选择属性,然后在对话框中使用相应的页面进行所需的更改。例如,放在 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提要并在我们发布一个新级别的楼梯时得到通知!

 

 

posted @ 2017-12-01 23:13  啦啦啦啦啦啦小情歌  阅读(273)  评论(0)    收藏  举报