本文是楼梯系列的一部分:通向SQLServer安全的阶梯SQLServer拥有保护服务器和数据免受当今复杂攻击所需的一切。但是,在有效使用这些安全特性之前,您需要了解所面临的威胁和一些基本的安全概念。第一个阶梯级别提供了一个基础,这样您就可以充分利用SQLServer中的安全特性,而不必浪费时间在无法防止数据受到特定威胁的功能上。

通常,通过向主体分配对象的权限,可以在SQLServer中实现用户和对象安全性。但是,什么是SQLServer主体?它能得到什么许可?在这个阶梯级别上,您将了解可以通过权限在SQLServer实例中执行操作和访问安全对象的各种主体。SQLServer中的一组重要主体是角色,您将了解角色如何使安全管理比作为唯一类型主体的单个用户更容易管理。您还将了解SQLServer中的安全对象,从而为了解下一级别的权限奠定基础。

授权

身份验证,在第2级中,只是访问数据库服务器中所有优点的一部分。身份认证有点像拥有一本证明你是谁但没有签证的护照-你需要签证才能进入并在全国各地流动。在这个级别上,您将了解授权以及它作为访问数据库对象的VISA的作用。

主体是可以访问SQLServer或其数据库中的一个或多个安全对象的用户或进程。安全对象(或仅仅是安全对象)是受保护的资源,只有特定的人或进程才能查看或更改,例如表中的数据。权限使主体能够获得对安全对象的特定类型访问。

为了继续进行护照类比,主体是护照持有人,即护照上的人。安全的国家是校长想要访问的国家,获准的是通过国家边界享受访问的签证。

负责人

在安全上下文中,主体是任何用户(人工类)、用户组(在SQLServer中称为角色),或在进程中运行的代码,这些进程可以请求对安全对象的访问并授予或拒绝对其的访问。所有Windows和SQLServer登录都是主体,以及它们映射到数据库中的用户。下面的列表显示了SQLServer中大多数更重要主体的层次结构,从具有跨SQLServer实例权限的服务器范围内的主体到数据库级主体:

窗口级主体
Windows域登录
Windows组
Windows本地登录
SQLServer级主体
SQLServer登录
映射到证书的SQLServer登录
映射到Windows登录的SQLServer登录
映射到非对称密钥的SQLServer登录
数据库级主体
应用角色
数据库角色
数据库用户
映射到证书的数据库用户
映射到Windows登录的数据库用户
映射到非对称密钥的数据库用户
公共角色

理解这个层次结构非常重要,因为主体的作用域部分决定了授予它的权限的范围。例如,数据库用户只能在该数据库的上下文中获得授予的权限。SQLServer级主体可以具有整个服务器的权限,Windows级别的主体可以具有超出SQLServer范围、扩展到Windows的本地实例和跨网络的权限。

请注意,在前面的列表中,主体可以是登录(或用户)以及角色。SQLServer中的角色类似于Windows组。具有角色成员资格的用户继承分配给角色的权限。角色使安全管理更加容易,因为您不需要管理单个用户的复杂权限集。SQLServer支持以下类型的角色:

固定服务器角色:用于执行服务器级 任务的SQL Server内置角色。

用户定义的服务器角色:您 创建的自定义服务器角色,分配服务器级权限,并分配登录,以便它们继承服务器对象上的权限。

固定数据库角色:用于执行数据库任务和分配基本权限的内置角色。

用户定义的数据库角色:创建自定义数据库角色,分配权限,然后添加用户,以便用户继承数据库对象的权限。

可以将用户分配给多个角色。角色也可以嵌套,但是不要太过轻率,如果嵌套方案太复杂,你会遭受性能损失,并且它可以维护和排除问题。

固定服务器角色

固定服务器角色是SQL Server中的内置角色,您不能以任何方式更改它们,只能向它们添加登录。它们只存在于服务器级,用于执行管理任务。这里列出了SQL Server中的固定服务器角色,括号中的实际角色名称如下: 系统管理员(系统管理程序):在SQL Server实例中执行任何活动。一旦用户是系统管理员的成员,这个角色就包含了所有其他角色,它们不需要任何其他角色。系统管理员的成员可以做任何他们喜欢的事情,所以把会员资格限制在那些需要它的人身上是一个好主意,并且可以信任他们拥有无限的访问权限。 大容量插入管理员(批量管理):执行批量插入语句以快速将数据获取到数据库中。

数据库创建者数据库创建程序):创建和更改数据库。

磁盘管理员磁盘驱动器):管理存储数据库的各种磁盘文件。

进程管理员进程管理员):管理在SQL Server中运行的进程。

服务器管理员服务器管理员):配置服务器范围的设置。尽管名称与系统管理员相似,服务器管理员却是一个非常不同和更有限的角色。

安装管理员设置程序):安装复制并管理扩展过程。

安全管理员安全管理员):管理服务器的登录。

固定服务器角色通过允许将服务器任务划分为部分来提供灵活性和安全性。换句话说,如果他们只需要创建数据库,就不必让某人成为系统管理员。相反,让它们成为表格创造的成员,它们拥有它们需要的所有权限。

您可以通过使用Management Studio或Transact-SQL将登录名分配给固定服务器角色。使用Management Studio,执行以下步骤:

提示:

这个楼梯2级的代码创建了Top AZ登录。如果您没有创建该登录,请 自由运行该代码来创建它,或者使用第2级中讨论的技术创建自己的登录。如果执行后者,则根据需要调整步骤以使用该登录。

1、在Management Studio中展开对象资源管理器的安全部分,以显示登录列表。 2、右键单击Top AZ登录并从弹出菜单中选择属性。

3、在“登录属性”对话框中,选择“服务器角色”页。这列出了所有可用的服务器角色,并使用复选框将登录添加到每个服务器角色。请注意,像所有登录一样,Top AZ已经成为公众角色的一员。

4、将登录名分配给表格创造和磁盘驱动器角色。图3.1显示了登录Top AZ的对话框。

3.1。

将登录黄玉分配给数据库创建程序和磁盘驱动器固定服务器角色。 1、单击OK保存更改。

或者,可以使用对象资源管理器中的安全节点下的服务器角色节点向角色添加登录。向安全管理服务器角色添加topaz:

1、在对象资源管理器的安全节点下展开服务器角色节点。

2、右键单击对象资源管理器中的安全管理员服务器角色并选择属性。这将打开“服务器角色属性”对话框。

3、单击对话框右下角的“添加”按钮,打开“选择登录”对话框。您可以键入topaz并单击“检查名称”,或者单击“浏览”按钮获得登录列表。一旦进入topaz,

一旦进入topaz,对话框看起来像图3.2。

3.2。

选择topaz以添加到服务器角色。

1、单击OK向服务器角色添加topaz。“服务器角色属性”对话框如图3.3所示。

3.3。将topaz添加到安全管理员服务器角色。

1、单击OK保存更改。

2、另一种向服务器角色添加登录的方法是使用Transact-SQL,使用SPD系统系统存储过程。下面的代码将现有登录topaz添加到系统管理员角色:

3、EXECsp_addsrvrolemember 'Topaz','sysadmin';

3.7。服务器级权限的部分列表。

您可以创建用户定义的服务器角色, 以便向用户和组授予他们完成其工作所需的一组特定权限, 而不再使用它们。这比早期版本的 sql server 灵活得多, sql server 2012 中使安全管理变得更加容易, 而更易于管理则不可避免地意味着更安全的服务器。

固定数据库角色

固定数据库角色存在于数据库级别, 而不是服务器级别, 仅限于该数据库中的控制授权。每个数据库都有自己的固定数据库角色集合, 因此您可以单独配置每个数据库中的角色。固定数据库角色与固定服务器角色类似, 因为它们不能被删除、修改或更改, 但您可以将数据库用户和用户定义的角色添加为成员。固定数据库角色是:

· db_accessadmin:可以在数据库中添加或删除 Windows 登录和组以及 SQL server 登录.

· db_backupoperator:可以备份数据库.

· db_datareader:可以查看数据库中所有用户表中的任何数据.

· db_datawriter:可以在数据库中的所有用户表中添加、更改或删除数据.

· db_ddladmin:可以在数据库中添加、修改或删除对象。(DDL 代表数据定义语言, 这是对数据库进行结构更改的 transact-sql 命令集.

· db_denydatareader:无法查看数据库中的任何数据.

· db_denydatawriter:无法更改数据库中的任何数据.

· db_owner:可以执行所有数据库角色的活动以及维护和配置活动。此角色包括所有其他角色, 因此它实质上是此数据库的管理员.

· db_securityadmin:可以管理数据库中的角色成员资格和语句和对象权限.

固定数据库角色可以简化在数据库中分配权限的任务。例如, 假设您希望允许用户仅访问特定数据库才能备份它。您不希望用户能够读取数据-只需备份它。通过使用户成为db_backupoperatordb_denydatareader角色的成员, 您可以轻松地完成此操作。使用sp_helprole sp_helprolemember 系统存储过程查看有关数据库角色的信息。

公共角色和来宾用户

有几个特别的校长需要提及。您不太可能以任何有意义的方式使用这些主体, 但它们确实会影响安全性, 因此您需要知道它们是什么。

公共角色是无法删除的特殊服务器角色。每个数据库用户都属于此公共角色, 因此您不需要为其分配用户、组或角色。每个 SQL server 数据库都包含公共角色, 包括master msdb tempdb模型。但是, 您可以授予或限制公共角色的权限, 这是您的安全需求所决定的。对公共角色要牢记的重要一点是, 向公共授予的权限适用于所有数据库用户。

提示:

通常, 您需要限制授予公共角色的权限, 因为向每个人授予权限很少会导致安全数据库。

来宾用户存在于每个数据库中, 包括mastermodel这样的系统数据库。作为用户, 它继承公钥角色的权限。当服务器登录未映射到特定数据库中的用户时, 就会出现这种情况。默认情况下, 来宾用户没有权限, 但您可以授予访问数据库对象和在数据库中执行操作的权限。正如您所预料的那样, 这是非常危险的事情, 在一个设计良好的数据库服务器安全方案中很少需要这样做, 您应该避免为该用户分配权限。虽然不能删除此用户, 但应通过使用清单3.8 中的代码吊销其连接权限, 在用户数据库中禁用它。

USENorthwind;

GO

REVOKECONNECT FROMguest;

GO

清单 3.8: 通过取消用户数据库中的来宾用户的连接权限, 来禁用它的代码。

提示:

不要在系统数据库中禁用来宾用户, 这会导致您不想处理的问题!这些数据库要求来宾用户提供各种功能。

dbo 用户和架构

dbo是映射到sysadmin固定服务器角色的每个数据库内的特殊用户帐户。这意味着, 如果您是sysadmin角色的成员, 并且在任何数据库中创建了一个对象, 则该对象的 ownerwill dbo, 而不是您。您不能删除dbo用户, 而且它只映射到sysadmin, 而不是数据库所有者 (db_owner)。这可能会引起混淆, 因为dbo用户确实与db_owner角色无关。

每个数据库还具有dbo用户拥有的dbo架构, 并且是dbo用户的默认架构。因此, 当您以sysadmin的形式访问数据库并在不指定架构的情况下创建对象时, 其两部分名称将为dbo. objectname。如果没有指定架构名称, dbo架构也是访问数据时任何其他用户的辅助默认架构。如果用户joe尝试访问一个名为销售的表, SQL server 将首先检查是否在用户joe的默认架构中有销售, 如果没有, 它将检查是否有销售表在dbo架构。只有在任一架构中不存在销售额, 才会生成无法找到该对象的错误。最佳做法是始终为访问的每个对象指定架构名称。

用户定义的数据库角色

数据库角色不限于预定义的角色-您可以创建自己的角色。用户可以定义两种类型的数据库角色:

· 标准角色:使用此角色可以简化对用户组的分配权限。您可以嵌套固定的数据库角色或其他用户定义的角色, 并将用户分配给角色, 在这种情况下, 它们从角色继承权限.

· 应用程序角色:应用程序使用此角色允许应用程序或连接登录到数据库, 并通过提供角色名称和密码来激活应用程序角色。不能将用户添加到应用程序角色中, 方法是对其他角色执行的方式, 并且一旦激活, 应用程序角色的权限将应用于连接的持续时间。用户可能已暂停的任何个人权限, 并且只检查应用程序角色的权限.

提示:

可以将用户定义角色添加到固定数据库角色, 方法与将用户添加到固定数据库角色的方式相同: 通过固定数据库角色的 "属性" 对话框。

安全对象

安全对象是可控制访问权限的受保护资源。通常它是物理上的东西, 或者至少是像数字物体一样的物理东西!但是, 安全对象也可以是一个操作, 它能够对数据库或 SQL server 实例进行某种更改。例如, 管理员可以授予主体拥有对象所有权的能力。授予此权限不会立即更改对象的所有权;它只是给了校长的能力, 在未来的时间。

3.8 显示了 SQL server 实例中的大多数安全对象。服务器级安全对象的范围最广, 包含所有 SQL server, 包括影响主体对所有数据库进行更改的能力的权限。数据库作用域包含特定数据库中的所有对象, 如用于管理用户和创建加密密钥的数据。架构范围包括架构内的所有对象, 实质上是数据库的数据结构, 包括表及其数据。数据库可以包含许多架构, 每个模式都可以包含完整的数据库对象集的子集。使架构强大的是您可以分配和拒绝对架构的权限, 这些权限适用于架构包含的所有对象。

3.8SQL server 中的安全对象。箭头显示一个作用域如何在对象层次结构中包含较小的作用域。

必须了解, 在服务器级别授予权限通常意味着在较小的范围内的权限。例如, 授予数据库级权限可能意味着主体对数据库的一个或所有架构中的对象具有隐含的权限。

总结

在此级别的sql server 安全的楼梯, 您了解了授权的第一部分、SQL server 实例及其数据库中可用的主体和安全对象。在下一个级别中, 您将了解权限, 当授予某个安全对象上的主体时, 它会提供或夺走主体对对象执行某项功能的能力。有了这种理解, 您就能够有效地利用 SQL server 中的身份验证和授权的粒状性质, 以严格控制数据库资产, 同时允许授权用户和进程完成其工作。

资源:

3-校长和安全对象之间修订. sql

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

原文

In this level of the Stairway to SQL Server Security, you learned about the first part of authorization, the principals and securable objects available in an instance of SQL Server and its databases.

通向SQLServer安全级别3的楼梯:主体和安全性

本文是楼梯系列的一部分:通向SQLServer安全的阶梯SQLServer拥有保护服务器和数据免受当今复杂攻击所需的一切。但是,在有效使用这些安全特性之前,您需要了解所面临的威胁和一些基本的安全概念。第一个阶梯级别提供了一个基础,这样您就可以充分利用SQLServer中的安全特性,而不必浪费时间在无法防止数据受到特定威胁的功能上。

通常,通过向主体分配对象的权限,可以在SQLServer中实现用户和对象安全性。但是,什么是SQLServer主体?它能得到什么许可?在这个阶梯级别上,您将了解可以通过权限在SQLServer实例中执行操作和访问安全对象的各种主体。SQLServer中的一组重要主体是角色,您将了解角色如何使安全管理比作为唯一类型主体的单个用户更容易管理。您还将了解SQLServer中的安全对象,从而为了解下一级别的权限奠定基础。

授权

身份验证,在第2级中,只是访问数据库服务器中所有优点的一部分。身份认证有点像拥有一本证明你是谁但没有签证的护照-你需要签证才能进入并在全国各地流动。在这个级别上,您将了解授权以及它作为访问数据库对象的VISA的作用。

主体是可以访问SQLServer或其数据库中的一个或多个安全对象的用户或进程。安全对象(或仅仅是安全对象)是受保护的资源,只有特定的人或进程才能查看或更改,例如表中的数据。权限使主体能够获得对安全对象的特定类型访问。

为了继续进行护照类比,主体是护照持有人,即护照上的人。安全的国家是校长想要访问的国家,获准的是通过国家边界享受访问的签证。

负责人

在安全上下文中,主体是任何用户(人工类)、用户组(在SQLServer中称为角色),或在进程中运行的代码,这些进程可以请求对安全对象的访问并授予或拒绝对其的访问。所有Windows和SQLServer登录都是主体,以及它们映射到数据库中的用户。下面的列表显示了SQLServer中大多数更重要主体的层次结构,从具有跨SQLServer实例权限的服务器范围内的主体到数据库级主体:

窗口级主体
Windows域登录
Windows组
Windows本地登录
SQLServer级主体
SQLServer登录
映射到证书的SQLServer登录
映射到Windows登录的SQLServer登录
映射到非对称密钥的SQLServer登录
数据库级主体
应用角色
数据库角色
数据库用户
映射到证书的数据库用户
映射到Windows登录的数据库用户
映射到非对称密钥的数据库用户
公共角色

理解这个层次结构非常重要,因为主体的作用域部分决定了授予它的权限的范围。例如,数据库用户只能在该数据库的上下文中获得授予的权限。SQLServer级主体可以具有整个服务器的权限,Windows级别的主体可以具有超出SQLServer范围、扩展到Windows的本地实例和跨网络的权限。

请注意,在前面的列表中,主体可以是登录(或用户)以及角色。SQLServer中的角色类似于Windows组。具有角色成员资格的用户继承分配给角色的权限。角色使安全管理更加容易,因为您不需要管理单个用户的复杂权限集。SQLServer支持以下类型的角色:

固定服务器角色:用于执行服务器级 任务的SQL Server内置角色。

用户定义的服务器角色:您 创建的自定义服务器角色,分配服务器级权限,并分配登录,以便它们继承服务器对象上的权限。

固定数据库角色:用于执行数据库任务和分配基本权限的内置角色。

用户定义的数据库角色:创建自定义数据库角色,分配权限,然后添加用户,以便用户继承数据库对象的权限。

可以将用户分配给多个角色。角色也可以嵌套,但是不要太过轻率,如果嵌套方案太复杂,你会遭受性能损失,并且它可以维护和排除问题。

固定服务器角色

固定服务器角色是SQL Server中的内置角色,您不能以任何方式更改它们,只能向它们添加登录。它们只存在于服务器级,用于执行管理任务。这里列出了SQL Server中的固定服务器角色,括号中的实际角色名称如下: 系统管理员(系统管理程序):在SQL Server实例中执行任何活动。一旦用户是系统管理员的成员,这个角色就包含了所有其他角色,它们不需要任何其他角色。系统管理员的成员可以做任何他们喜欢的事情,所以把会员资格限制在那些需要它的人身上是一个好主意,并且可以信任他们拥有无限的访问权限。 大容量插入管理员(批量管理):执行批量插入语句以快速将数据获取到数据库中。

数据库创建者数据库创建程序):创建和更改数据库。

磁盘管理员磁盘驱动器):管理存储数据库的各种磁盘文件。

进程管理员进程管理员):管理在SQL Server中运行的进程。

服务器管理员服务器管理员):配置服务器范围的设置。尽管名称与系统管理员相似,服务器管理员却是一个非常不同和更有限的角色。

安装管理员设置程序):安装复制并管理扩展过程。

安全管理员安全管理员):管理服务器的登录。

固定服务器角色通过允许将服务器任务划分为部分来提供灵活性和安全性。换句话说,如果他们只需要创建数据库,就不必让某人成为系统管理员。相反,让它们成为表格创造的成员,它们拥有它们需要的所有权限。

您可以通过使用Management Studio或Transact-SQL将登录名分配给固定服务器角色。使用Management Studio,执行以下步骤:

提示:

这个楼梯2级的代码创建了Top AZ登录。如果您没有创建该登录,请 自由运行该代码来创建它,或者使用第2级中讨论的技术创建自己的登录。如果执行后者,则根据需要调整步骤以使用该登录。

1、在Management Studio中展开对象资源管理器的安全部分,以显示登录列表。 2、右键单击Top AZ登录并从弹出菜单中选择属性。

3、在“登录属性”对话框中,选择“服务器角色”页。这列出了所有可用的服务器角色,并使用复选框将登录添加到每个服务器角色。请注意,像所有登录一样,Top AZ已经成为公众角色的一员。

4、将登录名分配给表格创造和磁盘驱动器角色。图3.1显示了登录Top AZ的对话框。

3.1。

将登录黄玉分配给数据库创建程序和磁盘驱动器固定服务器角色。 1、单击OK保存更改。

或者,可以使用对象资源管理器中的安全节点下的服务器角色节点向角色添加登录。向安全管理服务器角色添加topaz:

1、在对象资源管理器的安全节点下展开服务器角色节点。

2、右键单击对象资源管理器中的安全管理员服务器角色并选择属性。这将打开“服务器角色属性”对话框。

3、单击对话框右下角的“添加”按钮,打开“选择登录”对话框。您可以键入topaz并单击“检查名称”,或者单击“浏览”按钮获得登录列表。一旦进入topaz,

一旦进入topaz,对话框看起来像图3.2。

3.2。

选择topaz以添加到服务器角色。

1、单击OK向服务器角色添加topaz。“服务器角色属性”对话框如图3.3所示。

3.3。将topaz添加到安全管理员服务器角色。

1、单击OK保存更改。

2、另一种向服务器角色添加登录的方法是使用Transact-SQL,使用SPD系统系统存储过程。下面的代码将现有登录topaz添加到系统管理员角色:

3、EXECsp_addsrvrolemember 'Topaz','sysadmin';

3.7。服务器级权限的部分列表。

您可以创建用户定义的服务器角色, 以便向用户和组授予他们完成其工作所需的一组特定权限, 而不再使用它们。这比早期版本的 sql server 灵活得多, sql server 2012 中使安全管理变得更加容易, 而更易于管理则不可避免地意味着更安全的服务器。

固定数据库角色

固定数据库角色存在于数据库级别, 而不是服务器级别, 仅限于该数据库中的控制授权。每个数据库都有自己的固定数据库角色集合, 因此您可以单独配置每个数据库中的角色。固定数据库角色与固定服务器角色类似, 因为它们不能被删除、修改或更改, 但您可以将数据库用户和用户定义的角色添加为成员。固定数据库角色是:

· db_accessadmin:可以在数据库中添加或删除 Windows 登录和组以及 SQL server 登录.

· db_backupoperator:可以备份数据库.

· db_datareader:可以查看数据库中所有用户表中的任何数据.

· db_datawriter:可以在数据库中的所有用户表中添加、更改或删除数据.

· db_ddladmin:可以在数据库中添加、修改或删除对象。(DDL 代表数据定义语言, 这是对数据库进行结构更改的 transact-sql 命令集.

· db_denydatareader:无法查看数据库中的任何数据.

· db_denydatawriter:无法更改数据库中的任何数据.

· db_owner:可以执行所有数据库角色的活动以及维护和配置活动。此角色包括所有其他角色, 因此它实质上是此数据库的管理员.

· db_securityadmin:可以管理数据库中的角色成员资格和语句和对象权限.

固定数据库角色可以简化在数据库中分配权限的任务。例如, 假设您希望允许用户仅访问特定数据库才能备份它。您不希望用户能够读取数据-只需备份它。通过使用户成为db_backupoperatordb_denydatareader角色的成员, 您可以轻松地完成此操作。使用sp_helprole sp_helprolemember 系统存储过程查看有关数据库角色的信息。

公共角色和来宾用户

有几个特别的校长需要提及。您不太可能以任何有意义的方式使用这些主体, 但它们确实会影响安全性, 因此您需要知道它们是什么。

公共角色是无法删除的特殊服务器角色。每个数据库用户都属于此公共角色, 因此您不需要为其分配用户、组或角色。每个 SQL server 数据库都包含公共角色, 包括master msdb tempdb模型。但是, 您可以授予或限制公共角色的权限, 这是您的安全需求所决定的。对公共角色要牢记的重要一点是, 向公共授予的权限适用于所有数据库用户。

提示:

通常, 您需要限制授予公共角色的权限, 因为向每个人授予权限很少会导致安全数据库。

来宾用户存在于每个数据库中, 包括mastermodel这样的系统数据库。作为用户, 它继承公钥角色的权限。当服务器登录未映射到特定数据库中的用户时, 就会出现这种情况。默认情况下, 来宾用户没有权限, 但您可以授予访问数据库对象和在数据库中执行操作的权限。正如您所预料的那样, 这是非常危险的事情, 在一个设计良好的数据库服务器安全方案中很少需要这样做, 您应该避免为该用户分配权限。虽然不能删除此用户, 但应通过使用清单3.8 中的代码吊销其连接权限, 在用户数据库中禁用它。

USENorthwind;

GO

REVOKECONNECT FROMguest;

GO

清单 3.8: 通过取消用户数据库中的来宾用户的连接权限, 来禁用它的代码。

提示:

不要在系统数据库中禁用来宾用户, 这会导致您不想处理的问题!这些数据库要求来宾用户提供各种功能。

dbo 用户和架构

dbo是映射到sysadmin固定服务器角色的每个数据库内的特殊用户帐户。这意味着, 如果您是sysadmin角色的成员, 并且在任何数据库中创建了一个对象, 则该对象的 ownerwill dbo, 而不是您。您不能删除dbo用户, 而且它只映射到sysadmin, 而不是数据库所有者 (db_owner)。这可能会引起混淆, 因为dbo用户确实与db_owner角色无关。

每个数据库还具有dbo用户拥有的dbo架构, 并且是dbo用户的默认架构。因此, 当您以sysadmin的形式访问数据库并在不指定架构的情况下创建对象时, 其两部分名称将为dbo. objectname。如果没有指定架构名称, dbo架构也是访问数据时任何其他用户的辅助默认架构。如果用户joe尝试访问一个名为销售的表, SQL server 将首先检查是否在用户joe的默认架构中有销售, 如果没有, 它将检查是否有销售表在dbo架构。只有在任一架构中不存在销售额, 才会生成无法找到该对象的错误。最佳做法是始终为访问的每个对象指定架构名称。

用户定义的数据库角色

数据库角色不限于预定义的角色-您可以创建自己的角色。用户可以定义两种类型的数据库角色:

· 标准角色:使用此角色可以简化对用户组的分配权限。您可以嵌套固定的数据库角色或其他用户定义的角色, 并将用户分配给角色, 在这种情况下, 它们从角色继承权限.

· 应用程序角色:应用程序使用此角色允许应用程序或连接登录到数据库, 并通过提供角色名称和密码来激活应用程序角色。不能将用户添加到应用程序角色中, 方法是对其他角色执行的方式, 并且一旦激活, 应用程序角色的权限将应用于连接的持续时间。用户可能已暂停的任何个人权限, 并且只检查应用程序角色的权限.

提示:

可以将用户定义角色添加到固定数据库角色, 方法与将用户添加到固定数据库角色的方式相同: 通过固定数据库角色的 "属性" 对话框。

安全对象

安全对象是可控制访问权限的受保护资源。通常它是物理上的东西, 或者至少是像数字物体一样的物理东西!但是, 安全对象也可以是一个操作, 它能够对数据库或 SQL server 实例进行某种更改。例如, 管理员可以授予主体拥有对象所有权的能力。授予此权限不会立即更改对象的所有权;它只是给了校长的能力, 在未来的时间。

3.8 显示了 SQL server 实例中的大多数安全对象。服务器级安全对象的范围最广, 包含所有 SQL server, 包括影响主体对所有数据库进行更改的能力的权限。数据库作用域包含特定数据库中的所有对象, 如用于管理用户和创建加密密钥的数据。架构范围包括架构内的所有对象, 实质上是数据库的数据结构, 包括表及其数据。数据库可以包含许多架构, 每个模式都可以包含完整的数据库对象集的子集。使架构强大的是您可以分配和拒绝对架构的权限, 这些权限适用于架构包含的所有对象。

3.8SQL server 中的安全对象。箭头显示一个作用域如何在对象层次结构中包含较小的作用域。

必须了解, 在服务器级别授予权限通常意味着在较小的范围内的权限。例如, 授予数据库级权限可能意味着主体对数据库的一个或所有架构中的对象具有隐含的权限。

总结

在此级别的sql server 安全的楼梯, 您了解了授权的第一部分、SQL server 实例及其数据库中可用的主体和安全对象。在下一个级别中, 您将了解权限, 当授予某个安全对象上的主体时, 它会提供或夺走主体对对象执行某项功能的能力。有了这种理解, 您就能够有效地利用 SQL server 中的身份验证和授权的粒状性质, 以严格控制数据库资产, 同时允许授权用户和进程完成其工作。

资源:

3-校长和安全对象之间修订. sql

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

原文

In this level of the Stairway to SQL Server Security, you learned about the first part of authorization, the principals and securable objects available in an instance of SQL Server and its databases.


更多相关文章

  1. SQL Sever数据库卡事务
  2. 数据库操作类实现(C#,SqlClient)
  3. 利用纯真IP库建立mysql ip数据库
  4. 急!如何得到sql数据库更新的日志?
  5. NoSQL_Cassandra_导出数据库结构/数据库结构还原
  6. 约束数据库表,以便只有一行可以在列中具有特定值
  7. 数据库截取字符串SUBSTR函数的使用
  8. 如何在不改SQL的情况下优化数据库
  9. 如何在SQL Server数据库模式中找到所有填充了100%空值的列?

随机推荐

  1. Android开发工具类合集
  2. Android 手机与Android Studio wifi联调
  3. Android常用控件-DatePicker以及对话框的
  4. android获得mac和ip
  5. android dialog屏蔽back返回键的解决方法
  6. android API——EditText
  7. Android之短信发送器
  8. Android 调用系统浏览器 出现activitynot
  9. 1、ListView自定义控件下拉刷新(一)
  10. android 测试简介