dcsimg

保护您的分布式Windows应用

在基于Windows的分布式应用程序环境中的身份验证和授权是运行严格协议的关键。这是您需要知道的。

几周前,我们看了 监控 您基于Windows的分布式应用程序和服务器。除了监视这些应用程序运行之后, 保护它们并保持它们的安全同样重要。因此,让我们看一下系统管理员应该做的事情 请注意何时配置和运行基于Windows的分布式应用程序。

认证方式
通常,您将使用以下两种方式之一来确保对部分或全部 应用。您将创建一个用户名和密码表,然后 将该表存储在SQL Server等数据库中,否则您将使用Windows Active Directory(AD)或本地SAM帐户进行身份验证。

IIS中的摘要式身份验证
(点击查看大图)
利用存储在数据库中的用户名和密码,应用程序请求 用户名和密码,并针对用户验证此信息 数据库中的表。浏览器将用户的凭据发送到Active 服务器页面(ASP)脚本对其进行处理。 ASP脚本询问SQL 服务器查找用户名和密码进行验证 用户。此方法通常用于Internet或Extranet 访问,客户来自您的组织外部还是可能 business partners.

使用基于Windows Active Directory的身份验证或使用本地安全性 Access Manager(SAM)身份验证(即:没有Windows域帐户), 用户访问包含试图访问SQL Server的ASP脚本的网页。 届时,SQL Server将使用以下命令重新验证用户的安全凭据: 域控制器(DC)或本地服务器的SAM。此方法通常是 当将要访问您的应用程序的客户端属于您的组织时使用。

如果MS SQL在域成员服务器上运行,则SQL Server将 首先检查DC以验证客户端。如果不是,SQL Server将检查本地 服务器的SAM。最好使用Active Directory,因为它可以 将用户帐户和组集中在一处, 服务器可以访问它们。另一个优点是用户不需要 第二个用户名和密码(如果该帐户具有 他们正在登录工作站的服务器或服务器上 domain.

其他身份验证方法
除了IIS中的Windows集成身份验证和基本身份验证外, 还有其他方法可以验证访问网站的用户。 您可以做的一件事是将客户端证书映射到本地Windows或域用户 帐户。当用户使用该证书进行连接时,IIS(仅5.0或更高版本)使用映射的帐户 登录用户,然后使用这些帐户凭据访问资源。

另一种选择(同样适用于Win2K或更高版本以及IIS 5.0或更高版本的商店 仅)是摘要身份验证。使用摘要身份验证时,浏览器 创建用户名和密码的哈希版本以及 其他信息。这些凭据很难解密,但DC可以匹配 散列信息以及存储在DC上的纯文本版本。这样,摘要式身份验证 允许浏览器和服务器对用户进行身份验证,而无需发送明文密码。为了使用 摘要身份验证,浏览器必须是IE 5.5或更高版本,并且IIS服务器必须是 Active Directory域。

授权书

授权可以简单地描述为授予资源许可。这可能意味着授予“读取”或 对您配置了身份验证的帐户或组的“读/写”权限。通常这些都适用 到应用程序中基于Web的部分所在的文件夹。这可能意味着配置模拟设置 in DCOM 要么 ASP.NET 组件,尤其是当您的用户或客户来自组织外部或内部和外部用户混合在一起时。 这也可能意味着在SQL Server中配置一些非常具体的设置,我们将在下面介绍。

SQL Server方面:角色和权限

标准SQL Server角色
(点击查看大图)
您可以将Windows用户或组设置为SQL Server登录名,然后以各种方式使用该登录名。一种方法是使SQL Server登录名(Windows用户或组)成为具有必要权限的SQL Server角色的一部分 到数据库。要将现有登录名添加到角色,请执行以下步骤:

  1. 打开企业管理器。
  2. 打开数据库文件夹。
  3. 打开要向其添加登录名的数据库。
  4. 选择数据库的“角色”文件夹。
  5. 右键单击要向其添加登录名的角色,然后选择 Properties.
  6. 单击添加,选择要添加的登录名,然后单击确定。
  7. 单击“确定”关闭角色属性并完成操作。
  8. 例如,如果您使用这些步骤将登录名添加到db_datawriter角色, SQL Server现在将能够验证该组中的用户并允许他们 从上面的步骤3中选择的数据库中读取数据或将数据写入其中。你可以打开 该SQL Server登录名的属性,请清除“数据库访问”页上的Northwind数据库条目, 并且该组中的用户仍可以访问该数据库,因为他们仍在 db_datareader和db_datawriter角色。但是,该组将没有插入,更新或删除 权限,因为您尚未授予这些权限。您可以创建另一个登录并将其分配给另一个 提供更多权限的角色(例如db_owner)。

    存储过程权限
    (点击查看大图)
    如果您需要的不仅仅是登录,还需要更多的安全性控制权 有权访问整个数据库,您可以编辑角色选择 在创建登录名或使用自定义添加自己的角色时创建 权限。您创建的角色可以限制或授予对特定角色的访问权限 表,甚至到特定的列。

    许多应用程序环境中的最佳实践是授予用户或角色 对在数据库上运行的存储过程的权限, 而不是直接授予他们访问实际数据的权限:

    1. 打开企业管理器。
    2. 打开数据库文件夹。
    3. 打开要向其添加权限的数据库。
    4. 选择数据库的“存储过程”文件夹,然后选择“属性”。
    5. 单击权限按钮。
    6. 在“用户/数据库角色”列下,选择要授予其权限的帐户。
    7. 单击适当的列(例如“ Exec”以允许帐户对该存储过程执行权限)
    8. 单击确定两次以关闭存储的过程属性并完成操作。

    因此,现在我们已经介绍了基于Windows的分布式应用程序环境中的身份验证和授权。在第二部分中,我们将介绍一些专门用于保护IIS和Microsoft SQL Server的最佳实践。回头见!

本文最初发表于2005年9月16日
通过网络更新新闻获取最新消息