簡體   English   中英

Sql 服務器:如何拒絕用戶訪問鏈接服務器

[英]Sql Server: How to Deny users access to linked servers

我想拒絕一組用戶訪問查詢鏈接服務器。 我已將它們置於一個角色中,並將某些權限分配給該組的 object 級別權限。 在搜索 BOL 和“如何拒絕訪問鏈接服務器”后,我不知所措。

編輯:

我決定打破分析器來驗證顯示鏈接服務器時 SSMS 正在調用的確切內容,並確保在該系統視圖/SP 上發出了 DENY。 結果它調用了 sys.servers,但 Sql 服務器不遵守此系統視圖上的 ACL——它適用於其他系統視圖(例如:sys.dm_db_index_physical_stats)。

這是我剛才想到的解決方法:

在鏈接服務器屬性對話框中,屬性選項卡; 補充一點,你不想訪問鏈接服務器的用戶。 然后,為它們分配一些將在目標服務器上拒絕的虛擬用戶/通行證組合。

引用鏈接服務器的Afaik不受訪問控制列表(ACL)控制。 換句話說,您無權使用鏈接服務器獲得GRANT / DENY / REVOKE權限。 您當然可以通過ALTER ANY LINKED SERVER權限控制更改鏈接服務器的權限。

這種明顯缺乏權限的原因是鏈接服務器將特定憑據轉發到遠程服務器,通過模擬或與鏈接服務器關聯的remote_logins設置進行控制。 實際訪問控制使用與鏈接服務器關聯的憑據在遠程服務器上進行。 因此,為了拒絕一組用戶訪問鏈接服務器,您需要拒絕該組訪問遠程服務器本身上的遠程服務器

AFACS,鏈接服務器缺少適當的訪問控制。 我想做以下事情:

  1. 創建用於連接到遠程服務器的憑據
  2. 創建一個新的鏈接服務器: 將服務器角色或AD組或安全性指定為本地用戶b。 將憑證指定為遠程用戶
  3. 將登錄添加到服務器角色或AD組以控制訪問。

身份驗證的類型很重要。 當您鏈接服務器時,他們必須使用Kerberos進行鏈接,然后您可以控制鏈接服務器上的訪問權限。 否則,您的組將始終使用鏈接中指定的憑據進行身份驗證。

獲取您的transact語句,將其放入SSIS包“執行SQL任務”

在鏈接服務器安全性屬性中,將要訪問鏈接服務器的用戶ID(在您的服務器上)添加到頂部部分以及鏈接服務器的uid和pw,然后單擊單選按鈕“不成為”

當您在sql server agent中安排作業時,選擇您的ssis包並在作業步驟中以run as行的形式使用您的代理(db / security / credentials)。

拒絕 SELECT ON [sys].[sysservers] on <..>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM