具有集成安全性的 IIS8 應用程序池標識到非受信任域中的 SQL Server?
這是我們正在經歷的場景以及我們嘗試解決此問題的原因:
我們是一家諮詢公司,為許多客戶支持特定的第三方軟體應用程序。該應用程序是用 ASP.NET 編寫的,並在 IIS 和 SQL Server 上執行。在此範例中,組織“ABC”將應用程序託管在其域中的伺服器上。此應用程序具有高度可擴展性和可定制性,因此我們的每個客戶通常都有一個定制儲存庫,並且他們可能有一個或多個支持這些定制的供應商。
如果組織要求我們或其他供應商修改現有的定制,通常需要在我們的機器上設置應用程序的本地實例,以提高開發效率(尤其是調試)。不過,我們通常會盡量避免託管他們數據庫的本地副本,而是從本地機器連接到組織的 VPN,以便我們的本地 IIS 實例可以連接到他們網路上的開發 SQL 伺服器,然後我們設置一組 SQL連接字元串的憑據,而不是使用典型的集成安全性。
問題是一些組織對用於身份驗證的 SQL 憑據不滿意,即使在開發 SQL 伺服器上也是如此。我意識到如果需要支持這種情況,有充分的理由允許在開發 SQL 伺服器上使用 SQL 憑據,但我試圖找出是否有任何其他選項。該組織自己的工程師能夠配置其本地 IIS 應用程序池身份,以使用域憑據訪問使用集成安全性的 SQL 伺服器。但是,外部供應商(如我們)沒有加入他們的域並且域不受信任,因此我不能使用組織 ABC 提供的域憑據作為我的應用程序池身份。
是否有人知道在域“XYZ”的電腦上執行 IIS 應用程序的可能方法,它使用集成安全性對在域“ABC”中執行的 SQL 伺服器進行身份驗證,而無需信任域或設置 Kerberos 委派?
我曾考慮嘗試使用各種內置帳戶作為應用程序池標識並嘗試授予它們訪問 SQL 伺服器的權限,但我們不希望為 DOMAIN\MachineName$ 的每個可能組合授予 SQL 伺服器上的訪問權限這可能會從所有不同的供應商那裡連接到它。也許如果在應用程序池名稱上遵循命名約定並且我們使用了 ApplicationPoolIdentity,那麼我們可能只能將 SQL 伺服器上的訪問權限授予一個“虛擬”帳戶?(我還沒有嘗試過,併計劃在時間允許的情況下這樣做)。
如果不成為其域的成員或至少擁有信任,這是不可能的。
您的伺服器不了解其他域是什麼,並且沒有任何憑據可讓您對(或發現)其域進行身份驗證。Windows 通常不會讓您從它不信任的權限(域)中以使用者身份執行程序,因此您無法設置應用程序池標識,因為工作程序將嘗試以該使用者身份執行。