none
Sql Server 2005 权限设置问题 RRS feed

  • 问题

  • 情况是这样的:
      
           我建立了一个 服务器登陆名 : sql_login_test  ,服务器角色 : public , 用户映射数据库 : master 和 test

    请问:
           给 test库 建立一个 数据库用户 用sql_login_test登陆名 ,  给一般的网站用,给什么权限比较合适 ?

    db_owner 会不会太高,造成 安全隐患 ? 还是要单独指定 Select,update  之类的权限?


    //-------------------------------------------------------------------------------------------

    以前这一块都是交给 IDC 去管, 现在自己去管理 ,没接触过服务器管理 不太懂, 请大家指点!
    2009年3月16日 3:25

答案

全部回复

  • sqlserver有很灵活的授权机制。 在数据库层面,安全的授权方式是只授予用户需要的权限。
    如果仅仅是需要select ,update权限的话,直接授权就好了,没有必要将用户加入db_owner组。

    当然,如果你需要的安全层次很高,也可以将操作封装在存储过程中,只授予用户执行该存储过程的权限。这样用户只能通过存储过程操作数据库,无法直接操作底层数据,安全性会更好一些。

    有几篇文章你可以看看
    http://www.cnblogs.com/stswordman/archive/2008/07/29/1255322.html

    Basic SQL Server Security concepts - permissions and special principals: sa, dbo, guest

    SQL Server 2005 Security Overview for Database Administrators


    stswordman
    2009年3月16日 3:50
    版主
  • sql 数据库固定的角色有
    db_accessadmin
    db_backupoperator
    db_datareader
    db_datawriter
    db_ddladmin
    db_denydatareader
    db_denydatawriter
    db_owner
    db_securityadmin

    一般只需要给
    db_backupoperator   备份
    db_datareader 读取权限
    db_datawriter 写入权限
    这三个角色的权限就好了。(如果你使用过托管网站,他们提供的你的数据库用户只就是属于这三个角色的)
    默认public不变。
    • 已建议为答案 JACKY TANG 2009年3月16日 8:04
    • 已标记为答案 Daniel Chow 2009年3月16日 8:22
    2009年3月16日 6:44
  • db_owner權限太大

    A. 授予语句权限
    下面的示例给用户 Mary 和 John 以及 Windows NT 组 Corporate\BobJ 授予多个语句权限。

    GRANT CREATE DATABASE, CREATE TABLE
    TO Mary, John, [Corporate\BobJ]

    B. 在权限层次中授予对象权限
    下例显示权限的优先顺序。首先,给 public 角色授予 SELECT 权限。然后,将特定的权限授予用户 Mary、John 和 Tom。于是这些用户就有了对 authors 表的所有权限。

    USE pubs
    GO

    GRANT SELECT
    ON authors
    TO public
    GO

    GRANT INSERT, UPDATE, DELETE
    ON authors
    TO Mary, John, Tom
    GO

    C. 给 SQL Server 角色授予权限
    下面的示例将 CREATE TABLE 权限授予 Accounting 角色的所有成员。

    GRANT CREATE TABLE TO Accounting

    D. 用 AS 选项授予权限
    用户 Jean 拥有表 Plan_Data。Jean 将表 Plan_Data 的 SELECT 权限授予 Accounting 角色(指定 WITH GRANT OPTION 子句)。用户 Jill 是 Accounting 的成员,他要将表 Plan_Data 上的 SELECT 权限授予用户 Jack,Jack 不是 Accounting 的成员。

    因为对表 Plan_Data 用 GRANT 语句授予其他用户 SELECT 权限的权限是授予 Accounting 角色而不是显式地授予 Jill,不能因为已授予 Accounting 角色中成员该权限,而使 Jill 能够授予表的权限。Jill 必须用 AS 子句来获得 Accounting 角色的授予权限。

    /* User Jean */
    GRANT SELECT ON Plan_Data TO Accounting WITH GRANT OPTION

    /* User Jill */
    GRANT SELECT ON Plan_Data TO Jack AS Accounting


    更多的请参考联机帮助



    吳熹
    2009年3月16日 7:44
    版主
  • 感谢三位的回复!问题基本解决了!
    2009年3月16日 8:22