我已经使用SQL Server很多年了,回到Sybase SQL Server的日子,总是有登录和用户的困惑。尽管它们通常使用相同的名称,但它们是独立的对象。SQL Server的新用户似乎总是混淆这两者。让我们看看……
我发现把SQL服务器想象成一个堡垒很有用。毕竟,它是在保护您宝贵的数据,因此这个类比并不坏。如果您的数据被泄露,这可能是一个“简历生成事件”,所以如果没有其他问题,请注意安全!要进入我们堡垒的正门,每个人都需要登录。登录是身份验证的对象,证明您是谁。SQL Server支持Windows身份验证(也称为“可信”)和SQL Server身份验证(“不可信”——听起来不是很好吧?因此,我们也称之为“标准”)。Windows身份验证的好处是,SQL Server信任Windows令牌,并且在提供SSO(单点登录)解决方案时,不需要重新输入密码。但是,如果不能保证客户端上有Windows,就需要使用标准登录。
到Windows登录另一个优点是Kerberos身份验证协议提供相互验证额外的安全支持。这意味着服务器进行身份验证,以及客户端。这可以防止除了流氓无赖的客户端服务器。Windows身份验证也将背负实际上关闭Windows密码策略既可以通过Active Directory或本地安全策略。这将强制更改密码预先定义的时间之后,执行复杂性要求和登录被锁定之前建立的密码尝试的最大阈值。现在,由于SQL Server 2005中,标准登录将任意跟随在服务器上的效果Windows的密码策略。以前我们有我们的应用程序中开发我们自己的密码策略的代码。
当创建Windows登录时,我们可以将其映射到特定的Windows用户帐户(不要与SQL Server数据库用户帐户混淆;但通常我们使用的是Windows组。这意味着组的成员必须由您的Windows网络管理员(希望不是您!)维护,因此无论何时有人离开或加入一个部门,作为一个SQL Server DBA,您都坐得很舒服。假设在一个名为Accounting的组中有1000个Windows用户。要使这1000个Windows用户能够访问SQL服务器,需要基于会计组进行一次Windows登录。但是,如果你不相信会计组里一个叫Eddie的Windows用户?简单:只需为埃迪创建一个Windows登录,并指定拒绝访问。埃迪将有授权访问从会计登录和拒绝从他自己的登录;因为否认总是胜过批准,所以他将被拒绝。
好吧,仅仅因为你可以通过我们的城堡的前门并不意味着你可以在任何房间里做任何事。我们的SQL服务器要塞的房间称为数据库,你将需要一个数据库用户帐户每个数据库,你需要访问。数据库用户帐户映射到单个登录,通常调用相同的名称,因此很容易与相同的对象混淆。从技术上讲,登录被映射到一个或多个数据库用户帐户。正是数据库用户帐户允许我们将权限应用到诸如此类的“安全”模式、表和视图。我们可以将具有类似安全需求的多个数据库用户帐户分组到数据库角色中。我们轻率地将数据库用户帐户称为“用户”,但这造成了极大的混淆,因为Windows用户帐户也称为用户,但完全不同。
我们使用数据库角色的原因与使用Windows组的原因相同:为了简化安全管理。向每个数据库用户帐户应用权限要比向具有有意义名称的数据库角色应用权限困难得多。我们还可以访问服务器角色,在其中可以将登录分组,以便在服务器范围内访问。
这一切的混淆术语,那岂不是很好,如果SQL Server团队共进午餐的,而Active Directory的乡亲一次?我知道微软校园现在已经有超过100幢建筑物,但仍...
干杯
布莱恩
最近的帖子: