1. 程式人生 > 實用技巧 >Security 13:SQL Server的特殊角色和使用者

Security 13:SQL Server的特殊角色和使用者

SQL Server在伺服器級別和資料庫級別都有預設的安全主體(Principal),通常有sa 登入,dbo 使用者,guest角色和public角色。

一,伺服器級別的特殊登入sa

伺服器級別的特殊安全主體是sa 登入和public 角色,public角色後面會介紹。

sa是伺服器級別的SQL_LOGIN,在預設情況下,在安裝SQL Server例項時,sa login就被建立了。從SQL Server 2005開始,sa login的預設資料庫是master,並且是sysadmin角色的成員,因此sa login擁有伺服器的所有許可權,並且不能被限制。sa login不能被刪除,但是可以禁用,一旦被sa禁用,任何人都無法再使用sa login來管理SQL Server例項。

二,資料庫級別的特殊使用者

1,dbo 使用者

dbo使用者存在於每一個數據庫中,是資料庫中許可權最大的使用者,sa login,sysadmin角色的所有成員和資料庫的所有者(Database Owner),都會以dbo身份登入到資料庫 。

dbo使用者擁有資料庫的所有許可權,許可權不能被限制,不能被刪除,也不能被禁用。

dbo是資料庫所有者(database owner)的簡寫,但是dbo 使用者並不完全等價於db_owner 角色,通常情況下,db_owner角色的成員就是資料庫的所有者(Database Owner)。

2,guest 使用者

每個資料庫都包含一個guest使用者,當一個login有許可權連線資料庫,但是沒有該資料庫的user 賬戶時,該login會繼承guest 使用者的許可權,以guest的身份來訪問資料庫。guest 使用者不會被刪除,但是可以通過回收 CONNECT 許可權來禁用。

REVOKE CONNECT FROM GUEST

三,public 角色

public是一個固定的伺服器級別的角色,同時也是一個固定的資料庫級別的角色。

對於伺服器級別的public角色,每一個login 都屬於public 角色,當一個login沒有被授予特定的許可權時,那麼該login會繼承public的許可權。

對於資料庫級別的public角色,每一個user都屬於public橘色,當一個user沒有被授予特定的許可權時,那麼該user會繼承public的許可權。

當一個login 或user沒有被授予特定安全物件上的許可權時,該login會user會繼承public角色的許可權。public 角色不能被刪除,但是可以對public角色的許可權進行授予(Grant)、拒絕(Deny)和回收(Revoke)。

預設情況下,有一些許可權會被授予到public角色上,當對public角色進行許可權管理時,一定要慎重,因為這會影響所有的login或user。通常情況下,不要把對public設定deny許可權,這是由於deny語句的優先順序最高,deny許可權會覆蓋所有的grant許可權。

參考文件:

Principals (Database Engine)