簡體   English   中英

Team Foundation Server - 應用程序層到數據層:身份驗證,模擬和授權

[英]Team Foundation Server - Application Tier to Data Tier: Authentication, Impersonation and Authorisation

根據Team Foundation Server Architecture文檔 ,在“ 組和權限”部分中:

Team Foundation Server具有自己的一組默認組和權限,您可以在項目,集合或服務器級別設置這些組和權限。 您可以在組和各個級別創建自定義組和自定義權限。 但是,添加到Team Foundation Server的用戶或組不會自動添加到Team Foundation Server可依賴的兩個組件:SharePoint產品和Reporting Services 如果部署使用這些程序,則必須向其添加用戶和組,並在這些用戶或組在Team Foundation Server中的所有操作中正常運行之前授予相應的權限。

身份驗證和假冒:

請通過分析器跟蹤,配置片段或Microsoft文章的授權說明(個人,我找不到任何內容)來證明您的答案。

  1. 是否從應用程序層到底層Sql Server啟用了集成安全性?
  2. 如果啟用了集成安全性,是否啟用模擬(假設標准配置)來模擬應用程序層中用戶的身份?
  3. 如果啟用了模擬,應用程序層是否負責管理基礎數據庫的安全性?
  4. 如果在應用程序層中未啟用模擬,那么是否所有與數據層的交互都由TFSService標識完成?

授權:

  1. 根據可用知識,是在數據層或應用程序層中評估的授權(即Project.HasWorkItemReadRightsRecursive的值)?

為什么:

我已經編寫了一個解決方案,我將客戶端進程中的集成安全性通過WCF Web服務傳遞到使用模擬的Sql Server,從中我可以使用Transact-Sql評估對象授權和角色成員資格。 我們正在討論這種優缺點作為一種適當的模式,並決定研究TFS如何處理這種情況。

如果您對數據庫驅動的應用程序中的對象級別授權有任何更廣泛的意見,請隨時分享它們。

狂犬病

您正在尋找的大部分內容可以在TFS Web服務的web.config中找到,也可以查看TFS數據庫的安全性。

1.從應用程序層到底層Sql Server是否啟用了集成安全性?

是。 web.config位於應用程序層服務器上:C:\\ Program Files \\ Microsoft Team Foundation Server 2010 \\ Application Tier \\ Web Services

在那里,您可以找到Tfs_Configuration數據庫的連接字符串。 這非常明確地表明它使用集成安全性。

<add key="applicationDatabase" value="Data Source=YOURSQLSERVER\YOURSQLINSTANCE;Initial Catalog=Tfs_Configuration;Integrated Security=True;" />

2.如果啟用了集成安全性,是否啟用模擬(假設使用標准配置)來模擬應用程序層中用戶的身份?

當TFS連接到數據庫時,它使用Microsoft Team Foundation Server應用程序池中的憑據,而不是調用最終用戶的憑據。 再次從TFS服務web.config ...

    <!-- Disable Identity Impersonation -->
    <identity impersonate="false"/>

事實上,TFS的最終用戶對底層Tfs_Configuration數據庫沒有任何訪問級別,這進一步證明了這一點。 (或項目集合數據庫,就此而言)

如果在SQL Management Studio中打開Tfs_Configuration數據庫並查看Security文件夾,則只會在TFS管理控制台中看到列出的已添加為“管理控制台用戶”的用戶。

3.如果啟用了模擬,應用程序層是否負責管理基礎數據庫的安全性?

由於對問題#2的回答,不適用。 但是,答案是肯定的。 當您最初配置TFS時(假設您使用的是Microsoft安裝指南,您應該使用它: http//www.microsoft.com/download/en/details.aspx ?displaylang = en&id = 24337),您將設置“TFSSERVICE” “在SQL Server上使用sysadmin或* db_creator *安全角色的帳戶。 這允許TFS應用程序層管理其自己的數據庫的安全性。 添加新的“管理控制台用戶”時,它將授予該用戶對TFS數據庫的權限。 在將用戶添加到管理控制台之前和之后,您可以通過查看Tfs_Configuration數據庫的Security文件夾來自行查看。

此外,如果您以無權訪問底層數據庫的用戶身份打開TFS管理控制台,則控制台將加載一堆友好的“用戶無權訪問數據庫”錯誤消息,而不是填充您希望看到的數據在管理控制台中。

4.如果應用程序層中未啟用模擬,那么TFSService標識是否完成了與數據層的所有交互?

是。 我認為上面所說的一切都清楚地證明了這一點 甚至TFS Web Access的應用程序池也在TFSSERVICE標識下運行。 (這是開箱即用的,當然......你總是可以明確地授予對TFS數據庫的訪問權限,並開始用它來自行解決...你這樣做會使你的MS支持合同無效:d)

授權問題:根據可用知識,在數據層或應用程序層中評估授權(即Project.HasWorkItemReadRightsRecursive的值)

此授權(Project.HasWorkItemReadRightsRecursive)在Application Tier中進行評估。 所有工作項和版本控制項都是如此。 為什么? 因為這是TFS內部安全模型的一部分。 TFS為其版本控制和工作項對象維護了一組廣泛的權限,這些權限與底層數據層完全分離。 在版本控制下訪問對特定工作項或文件的讀/寫並不意味着您可以訪問包含這些版本控制或工作項對象的數據的SQL表。

這或多或少都在這里拼寫出來。 http://msdn.microsoft.com/en-us/library/ms252587(v=vs.100).aspx有服務器級權限,集合級權限,團隊項目級權限,構建級權限,工作項權限和版本控制權限。 整個權限系統在TFS應用程序層中編排,而不了解底層數據庫架構或數據庫安全性。

回應你打開問題的觀點

但是,添加到Team Foundation Server的用戶或組不會自動添加到Team Foundation Server可依賴的兩個組件:SharePoint產品和Reporting Services。

為什么是這樣? 由於SharePoint和Reporting Services都使用類似的模式,其中存在廣泛的安全系統,該系統在應用程序層進行管理,但只有一個(或幾個)帳戶可以實際訪問SQL數據庫。 即您可以在SSRS中設置Content Viewer,Content Manager等權限,並且可以在SharePoint中設置Contributor,Site Collection Admin,Farm Admin等權限。 您的SSRS服務帳戶或SharePoint場管理員帳戶將是唯一具有SQL數據庫訪問權限的帳戶。

綜上所述

如果您正在開發的應用程序正在獲取實際客戶端用戶的憑據並將它們一直傳遞到數據庫,那么您可能會遇到嚴重的安全問題。 由於這些用戶的帳戶將具有直接的SQL訪問權限,因此無法阻止他們打開SQL Management Studio,連接到數據庫以及執行他們有權訪問的任何內容。 也許你的用戶不夠精明,但為什么要冒這個機會?

暫無
暫無

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

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