Security

將包含的 SQL Azure 使用者限制為只讀訪問

  • March 24, 2017

我正在嘗試為 SQL Azure 中的數據庫創建一個包含使用者,該使用者僅作為只讀訪問。我正在做的是:

  1. 使用我的管理員帳戶通過 SSMS 連接到數據庫。
  2. 右鍵點擊有問題的數據庫並選擇新查詢。

然後我輸入了以下內容:

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;

當我測試同一個使用者時,它只返回選擇訪問。 在此處輸入圖像描述

引用自:https://dba.stackexchange.com/questions/154713