Security
將包含的 SQL Azure 使用者限制為只讀訪問
我正在嘗試為 SQL Azure 中的數據庫創建一個包含使用者,該使用者僅作為只讀訪問。我正在做的是:
- 使用我的管理員帳戶通過 SSMS 連接到數據庫。
- 右鍵點擊有問題的數據庫並選擇新查詢。
然後我輸入了以下內容:
CREATE USER DEMO_dbreader WITH PASSWORD = 'pass@word1' EXEC sp_addrolemember N'db_datareader', N'DEMO_dbreader'`
之後,我在 SSMS 中斷開與數據庫的連接,並使用剛剛創建的新 SQL 帳戶重新連接。然後我輸入以下內容作為測試:
CREATE table testing123 (id int)
令我驚訝的是,我可以創建表(!?!)我還可以截斷它們並刪除它們(?!?)不知道這裡到底發生了什麼。我錯過了什麼嗎?
我需要使用者包含在這個數據庫中,而不是存在於它之外。
這不應該發生。db_datareader 將僅授予對數據庫的選擇訪問權限。
我在 Azure 數據庫中使用了您的查詢,但無法創建表,使用者只能選擇訪問數據庫。
使用者獲得了提升的訪問權限,或者您可能使用管理員帳戶登錄。在不同的使用者數據庫中進行相同的測試(只是為了確保尚未創建使用者),然後使用使用者名連接並執行下面的查詢。
SELECT DatabaseName=DB_NAME(), UserName=USER_NAME(), x.DoesUserHasAccess, a.entity_name, a.permission_name FROM sys.fn_my_permissions(NULL, 'DATABASE') a CROSS APPLY ( SELECT DoesUserHasAccess = HAS_PERMS_BY_NAME( DB_NAME(), a.entity_name, a.permission_name ) ) x WHERE x.DoesUserHasAccess = 1;