Security1 登入和使用者

2022-02-18 09:08:57 字數 4184 閱讀 3346

授予許可權的思路,可以用一句話來概括,那就是:授予 principal 操作 securable 的 permission,在多數文件中,把 principal 翻譯為安全主體,securable翻譯為安全物件,permission翻譯為許可權,授予許可權的子句細分為三部分:permission,securable 和 principal。最讓人疑惑的是principal和securable,這兩個概念有時候會相互轉換。

grants permissions on a securable to a principal

principal是被授予許可權的實體,包括login、user、role等,securable是principal操作的物件,可以是table、view、sp、函式等,也可以是login、user、role等物件;有時principal會作為securable,被principal操縱,也就是說,principal 是抽象意義上的安全主體,可以向安全主體授予許可權,principal分為server level和database level,最重要的兩個principal是login和user,他們的區別是:

login和user最基本的區別是login用於控制使用者是否有許可權登陸sql server例項,user用於使用者控制是否有許可權訪問資料庫:

根據驗證型別,login分為sql server登入和windows域登入,在建立登入時,可以設定預設資料庫(default database),指定login登入的預設資料庫,預設值是master資料庫。

1,建立sql server 登入

create

login login_name

with

password

= ,default_database = database

2,建立windows域登入

如果建立windows域登入,對映到乙個windows域賬戶,登入名必須使用windows域格式: [\].

create login [\]

from windows

with default_database =

database

在sql server中,通常情況下,user的建立都是基於master 資料庫中的login,該login的**有三種:基於windows 域使用者,windows 域使用者組,或sql server 驗證。

1,建立user

create

user

user_name

forlogin login_name

with default_schema = schema_name

引數解釋:

在建立新的使用者時,沒有指定使用者預設的架構,有三種處理方式:

2,建立使用者名稱,基於sql server登入

create

login wanidabenshoof

with password =

'8fdkjl3$nlnv3049jskk';

useadventureworks2012;

gocreate

user

wanida

forlogin wanidabenshoof

with default_schema = marketing;

3,建立使用者名稱,基於windows 域登入

create

user

[domain1\windowsuserbarry

]for

login [domain1\windowsuserbarry];

usedatabase_name

gocreate

user

[domain1\windowsgroupmanagers

]for login [

domain1\windowsgroupmanagers

];

在sql server的安全模型中,模擬(impersonate )許可權的安全物件是user或login,被授予者(grantee )有許可權模擬特定使用者的安全上下文執行特定的操作。

例如,user1授予模擬user2的許可權,當user2的安全上下文有足夠的許可權,而user1沒有時,通過許可權模擬,user1能夠在user2的許可權上下文中執行查詢請求:

grant

impersonate

onuser

:: user2

to user1;

通過執行execute as 命令模擬使用者的許可權,使用者user1就執行在user2的安全上下文中,例如,user1在登陸資料庫之後,模擬user2的許可權:

execute

asuser='

user2

';

通過執行 revert 命令退出許可權模擬,返回到使用者原始的安全上下文中:

revert;

sql server 可以建立乙個windows group作為登陸和使用者(user),所有屬於該組的成員,都具有相同的許可權。

1,列出組的所有成員

在當資料庫中,檢視某乙個security group的所有成員:

exec

master..xp_logininfo

@acctname='

domain\group',

@option='

members

'

2,檢查組的成員

當前資料庫中,檢查當前的使用者是否屬於特定的security group:

select

is_member('

domain\group

')

函式is_member的返回值是:

注意,資料庫是當前的資料庫,如果用於資源管理(resource governor)中的分類函式(classifier function),那麼,要注意分類函式所在的資料庫,如果分類函式建立於master資料庫,那麼is_member函式的當前資料庫就是master,檢查的結果是當前使用者是否屬於當前資料庫的組或角色。

sql server在每個資料庫中都內建兩個特殊的使用者:dboguest,在每個資料庫中都有這兩個使用者(user):

1,dbo使用者

sysadmin 伺服器角色的成員自動對映為dbo使用者,dbo不同於db_owner 資料庫角色,db_owner角色的成員資格不授予dbo使用者特權。

2,guest使用者

當乙個login登陸到sql server之後,如果沒有在資料庫中對映相應的使用者,那麼該login可以使用guest使用者登陸資料庫。guest使用者預設存在每個資料庫中,預設情況下,guest使用者是禁用的,可以通過命令啟用guest使用者。

grant connect to guest

一旦啟用guest使用者,所有可以登陸到sql server的login,都可以使用guest身份來訪問資料庫,並擁有guest使用者的許可權。可以通過命令禁用guest使用者:

revoke connect from guest;

注意:只能在 master 和 tempdb 以外的資料庫中執行禁用guest帳號的操作,這是因為許多使用者都需要以guest身份訪問master 和 tempdb系統資料庫,guest使用者在master 和 tempdb資料庫的許可權被嚴格限制。

另外兩個特殊的使用者:information_schemasys,每個資料庫都包含這兩個使用者,這兩個用於是資料庫引擎內部使用,不能被修改和刪除。

principals (database engine)

execute as clause (transact-sql)

sql server使用者guest的簡要介紹

Security1 登入和使用者

授予許可權的思路,可以用一句話來概括,那就是 授予 principal 操作 securable 的 permission,在多數文件中,把 principal 翻譯為安全主體,securable翻譯為安全物件,permission翻譯為許可權,授予許可權的子句細分為三部分 permission,s...

python綜合練習1 使用者登入

一 程式介紹 1.1 檔案分布 login user.jpg 流程圖資訊 readme.txt login main v1.1.py 主程式 user config.conf 配置檔案 by cw login main v1.1.py 2016 06 04 程式執行說明 1.執行程式login ma...

ubuntu mysql 安裝和使用者登入

要安裝 mysql,可以在終端提示符後執行下列命令 sudo apt get install mysql server mysql client 中途會讓你輸入一次root使用者密碼sudo apt get install php5 mysql 安裝php5 mysql 是將php和mysql連線起...