2017-06-21 45 views
1

今天,我能夠使用setspn命令創建完全隨機和無效的SPN,但我不明白爲什麼允許無效的SPN。例如:爲什麼可以使用setspn創建無效的服務主體名稱(SPN)

setspn -s RandomSvc/randomname.random.random valid_user已成功爲我的域中的valid_user運行(我在此替換實際用戶名,但用戶是域中的有效用戶)。

然後,如果我做setspn -l valid_user,它會列出這個無效的條目。

我想沒有人可以真正連接到這項服務,因爲它不存在。但是,如果我嘗試添加有效的SPN,但是輸入錯誤,直到我的應用程序給我一個錯誤,我纔會注意到它。那麼爲什麼setspn不會做任何驗證(除了檢查與-s重複)?

回答

1

setspn命令不會阻止你創建一個無效的SPN,並且有很好的理由,所以在這裏沒有實際的問題相信與否。由於我將要描述的原因,您將無法通過setspn強制執行有效SPN的定義 - 即在具有可通過TCP/IP訪問的DNS中的主機名的實際計算機上運行的實際服務的表示。根據KDC,雖然SPN 代表實際的服務運行在DNS中具有可通過TCP/IP訪問的主機名的實際機器上,但它實際上並不一定是真實的。這是爲什麼。你是否考慮過這種情況:服務,甚至是將要運行的機器,都將在以後安裝?在創建SPN時,服務甚至是它所運行的機器以及所述機器的DNS條目都不必在現在就位。 Setspn.exe是一個簡單的工具,它允許您創建符合RFC的Kerberos的SPN。它取決於你的建築設計,但它不會阻礙任何人蔘與這個過程。我爲一家大公司工作,並始終爲服務創建SPN,甚至爲尚不存在的機器創建SPN。這樣開發人員或系統管理員不需要聯繫我就可以在事後創建SPN。他們正在遵循項目計劃,精明的管理人員將擁有SPN,DNS實例,機器的IP地址,所有計劃出來的和提前創建的操作系統管理員都可以在實際運行的服務器上啓用此功能。因此,如果setspn阻止人們爲尚未啓動並正在運行的服務創建SPN,那麼會出現一些非常憤怒的系統管理員。這就是爲什麼它被允許創建「無效」的SPN,當你認爲它不應該。如果你想要做一些額外的驗證,而不是通用setspn.exe提供的驗證,在你的應用程序執行之前發現錯誤,那麼你將不得不自己創建一個這樣的事情。問問自己雖然,這是值得的東西如此具體的時間?我的意思是,你多久創建一次SPN?這對你現在應該都是有意義的。我定期運行一個setspn -X來捕捉我的域名重複的罪行。我從來沒有過這個時間,但我想我也可以列出域中所有當前的SPN,並檢查它們是否都是當前有效的,並且如果它們不是,則採取糾正措施。我相信可能有不止一些是不活躍的。我認爲這不是什麼大問題。

+1

這一切似乎對我來說都是正確的。不知道OP爲什麼沒有把它標記爲現在的答案... –

相關問題