中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何進行數據庫權限分配的探討

發布時間:2021-11-29 10:27:03 來源:億速云 閱讀:275 作者:柒染 欄目:數據庫

本篇文章為大家展示了如何進行數據庫權限分配的探討,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

首先我們先了解下數據庫的權限相關的內容

主體

“主體” 是可以請求 SQL Server資源的實體。 與 SQLServer授權模型的其他組件一樣,主體也可以按層次結構排列。  主體的影響范圍取決于主體定義的范圍(Windows、服務器或數據庫)以及主體是否不可分或是一個集合。  例如,Windows登錄名就是一個不可分主體,而Windows組則是一個集合主體。 每個主體都具有一個安全標識符(SID)。

Windows級別的主體

Windows域登錄名


如何進行數據庫權限分配的探討

Windows 本地登錄名

SQL Server-級的主體

SQL Server登錄名

如何進行數據庫權限分配的探討

服務器角色

數據庫級的主體

數據庫用戶

如何進行數據庫權限分配的探討

數據庫角色

應用程序角色

SQLServer sa登錄名

SQL Server sa登錄名是服務器級的主體。 默認情況下,該登錄名是在安裝實例時創建的。

public數據庫角色

每個數據庫用戶都屬于 public數據庫角色。  當尚未對某個用戶授予或拒絕對安全對象的特定權限時,則該用戶將繼承授予該安全對象的public角色的權限。

INFORMATION_SCHEMA和 sys

每個數據庫都包含兩個實體:

INFORMATION_SCHEMA和 sys,它們都作為用戶出現在目錄視圖中。這兩個實體是 SQL Server 所必需的。  它們不是主體,不能修改或刪除它們。

基于證書的 SQL Server登錄名

名稱由雙井號 (##)括起來的服務器主體僅供內部系統使用。 下列主體是在安裝 SQL Server時從證書創建的,不應刪除。

##MS_SQLResourceSigningCertificate##

如何進行數據庫權限分配的探討

##MS_SQLReplicationSigningCertificate##

##MS_SQLAuthenticatorCertificate##

##MS_AgentSigningCertificate##

##MS_PolicyEventProcessingLogin##

##MS_PolicySigningCertificate##

##MS_PolicyTsqlExecutionLogin##

guest用戶

每個數據庫包括一個guest。  授予guest用戶的權限由對數據庫具有訪問權限,但在數據庫中沒有用戶帳戶的用戶繼承。不能刪除guest用戶,但可通過撤消該用戶的CONNECT權限將其禁用。  可以通過在master或 tempdb以外的任何數據庫中執行 REVOKE CONNECTFROM GUEST來撤消 CONNECT權限。

客戶端和數據庫服務器

根據定義,客戶端和數據庫服務器是安全主體,可以得到保護。 在建立安全的網絡連接前,這些實體之間可以互相進行身份驗證。 SQLServer支持  Kerberos身份驗證協議,該協議定義客戶端與網絡身份驗證服務交互的方式。

創建數據庫用戶

SQL2016中支持11種用戶類型:

用戶基于登錄名在 master這是最常見的用戶類型。

基于登錄名基于的Windows Active Directory帳戶的用戶

如何進行數據庫權限分配的探討

CREATE USER [Contoso\Fritz];

基于Windows組的登錄名的用戶。 CREATE USER [Contoso\Sales];

基于使用 SQLServer身份驗證的登錄名的用戶。 CREATE USER Mary;

在數據庫進行身份驗證的用戶建議以幫助使你的數據庫可移植性。

始終允許在 SQL Database。 中包含的數據庫中只允許存在 SQL Server。

基于無登錄名的 Windows用戶的用戶

如何進行數據庫權限分配的探討

CREATEUSER [Contoso\Fritz];

基于無登錄名的Windows組的用戶。 CREATE USER [Contoso\Sales];

中的用戶 SQLDatabase或 SQL數據倉庫 基于 Azure Active Directory的用戶。 CREATE USER  [Contoso\Fritz] FROMEXTERNAL PROVIDER;

擁有密碼的包含數據庫用戶。 (在中不可用 SQL數據倉庫。)CREATE USER Mary WITHPASSWORD = '********';

基于 Windows主體通過 Windows組登錄名進行連接的用戶

基于無登錄名但可通過Windows組中的成員身份連接到數據庫引擎的Windows用戶的用戶

如何進行數據庫權限分配的探討

CREATE USER [Contoso\Fritz];

基于無登錄名但可通過其他Windows組中的成員身份連接到數據庫引擎的Windows組的用戶。 CREATE USER  [Contoso\Fritz];

無法進行身份驗證的用戶 這些用戶無法登錄到 SQL Server或 SQL Database。

沒有登錄名的用戶。 不能登錄,但可以被授予權限

如何進行數據庫權限分配的探討

CREATE USER CustomAppWITHOUT LOGIN;

基于證書的用戶。 不能登錄,但可以被授予權限,也可以對模塊進行簽名。 CREATE USERTestProcess FOR CERTIFICATE  CarnationProduction50;

基于非對稱密鑰的用戶。 不能登錄,但可以被授予權限,也可以對模塊進行簽名。 CREATE User TestProcessFROM ASYMMETRIC  KEY PacificSales09;

下面的圖片顯示了創建數據庫用戶需要的選項的含義:

如何進行數據庫權限分配的探討

創建用戶可以使用界面完成:

如何進行數據庫權限分配的探討

也可以使用T-SQL來進行創建

-- 創建登錄名:Test 密碼是: '123456'.

CREATELOGIN Test

WITH PASSWORD = '123456';

GO

上面說完了用戶,下面說下數據庫的角色和權限

服務器級別的權限

SQL Server 提供服務器級角色以幫助你管理服務器上的權限。 這些角色是可組合其他主體的安全主體。服務器級角色的權限作用域為服務器范圍。  (“角色”類似于 Windows 操作系統中的“組”。)

SQL Server 提供了九種固定服務器角色。 無法更改授予固定服務器角色的權限。 從 SQL Server 2012  開始,您可以創建用戶定義的服務器角色,并將服務器級權限添加到用戶定義的服務器角色。

你可以將服務器級主體(SQL Server 登錄名、Windows帳戶和 Windows 組)添加到服務器級角色。  固定服務器角色的每個成員都可以將其他登錄名添加到該同一角色。用戶定義的服務器角色的成員則無法將其他服務器主體添加到角色。

下表顯示了服務器級的固定角色及其權限

如何進行數據庫權限分配的探討

下表顯示了固定數據庫角色及其能夠執行的操作。 所有數據庫中都有這些角色。無法更改分配給固定數據庫角色的權限

如何進行數據庫權限分配的探討

無法更改分配給固定數據庫角色的權限。 下圖顯示了分配給固定數據庫角色的權限:

如何進行數據庫權限分配的探討

SQL 2016有一些數據庫的特殊權限

msdb角色

如何進行數據庫權限分配的探討

msdb數據庫中包含下表顯示的特殊用途的角色。

如何進行數據庫權限分配的探討

使用R Services

SQL Server(從 SQL Server vNext開始)

安裝 R Services時,其他數據庫角色可用于管理包

如何進行數據庫權限分配的探討

下面講如何實現文章前面說的需求:

給某個用戶查詢所有數據庫的權限

給某個用戶只有備份數據庫的權限

給一個用戶只有指定數據庫的權限

給一個用戶只有某個表的權限

給某個用戶查詢所有數據庫的權限

創建一個用戶

USE [master] GO CREATE LOGIN [Test1]WITH PASSWORD=N'password@123'

使用Test1連接數據庫實例

如何進行數據庫權限分配的探討

可以看到數據庫列表, 但是無法訪問數據庫,

如何進行數據庫權限分配的探討

賦予test1對FinaceDemo的讀取權限

USE [FinaceDemo] GO CREATE USER [Test1] FOR LOGIN [Test1] ALTER ROLE  [db_datareader] ADD MEMBER [Test1] GO

這樣就可以給test1用戶對finacedemo的讀取權限

如何進行數據庫權限分配的探討

但是test1 沒有寫入權限

如何進行數據庫權限分配的探討

這樣就可以單獨對test1賦予數據庫的讀取權限進行查看操作。

給某個用戶只有備份數據庫的權限

Test1 對于finacedemo無備份權限

如何進行數據庫權限分配的探討

賦予備份權限

ALTER ROLE [db_backupoperator] ADD MEMBER [Test1]

如何進行數據庫權限分配的探討

給一個用戶只有指定數據庫的權限

我們需要Test1只能看到 FinanceDemo,其他所有數據庫都不能看到

執行下面腳本

USE [master] Deny VIEW any DATABASE TO Test1; go

運行后的效果

如何進行數據庫權限分配的探討

Test1 連接后看不到任何數據庫

執行:

ALTER AUTHORIZATIONON DATABASE::FinanceDemo TO test1

完成后結果:

如何進行數據庫權限分配的探討

Test1能查看到賦予權限的數據庫

給一個用戶只有某個表的權限

創建測試用戶test3

USE [master] GO CREATE LOGIN [Test3] WITH PASSWORD=N'password@123'  -----賦予test2可以登錄testDB USE [testdb] GO CREATE USER [Test3] FOR LOGIN [Test3]  GO

賦予test3對于t2表的update和select權限 grant update on dbo.t2to test3 grant select on  dbo.t2to test3 use testDB 查看test3用戶獲得的權限 exec sp_helprotect  @username='test3'

如何進行數據庫權限分配的探討

可以看到用戶test3擁有了t2的select和update權限

執行select * from t2

如何進行數據庫權限分配的探討

執行插入操作失敗。

如何進行數據庫權限分配的探討

權限管理非常復雜,以上只是做了簡單的介紹。需要更加詳細的內容,需要自己去研究。在technet上可以找到更加詳細的信息。

上述內容就是如何進行數據庫權限分配的探討,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

辛集市| 安顺市| 行唐县| 宜城市| 巴青县| 仙桃市| 兖州市| 万州区| 威海市| 陇川县| 宁都县| 洛浦县| 泰和县| 奎屯市| 会昌县| 潮安县| 玉树县| 岱山县| 峡江县| 定安县| 九龙城区| 普兰店市| 黄梅县| 隆子县| 盐亭县| 工布江达县| 内江市| 荣成市| 图们市| 饶阳县| 中西区| 山丹县| 上杭县| 深水埗区| 河源市| 郧西县| 玉环县| 民和| 永胜县| 仪征市| 荔波县|