2016-11-04 101 views
0

我想了解Kerberos基本概念。我看了一下校長over here,通常是這樣的:瞭解Kerberos主體

primary/[email protected] 

我想問到底什麼是主,實例和領域。當然在上面的網頁和互聯網上的其他幾個地方都有定義,但是有人可以舉個例子嗎?

我的理解是這樣的: 主要是消費者(用戶或服務)。 實例是用於訪問控制的東西。主要可以是多個實例的一部分。 領域是實例的集合嗎? 如果我錯了,請糾正我。

如果我有一臺服務器:foo.bar.com
在此我可以我有2個領域:REALM1,REALM2。這些可以這樣命名嗎?或者我可以在這裏只有1個領域:FOO.BAR.COM
現在我說3個服務:s1,s2,s3彼此交談。由於kerberos已啓用,它們中的每一個都必須具有帶有自己的密鑰表文件的主體?或者由於每個服務都在與每個其他服務交談,每個keytab文件是否需要爲每個其他服務提供主體?

回答

5

在這個例子中你給:主/實例@ REALM

  1. 初級=服務名(例如,HTTP的目標服務器上運行的)

  2. 實例= FQDN(典型地),其需要是在DNS中 - 它將是 「主」(服務)運行的服務器的FQDN

  3. REALM =通常以大寫(儘管不是強制性的) - 這個(儘管不是總是)與DNS域匹配其中的環境名稱Kerberos身份驗證將發生。它是一組共享通用名稱空間和Kerberos數據庫的計算機。

SPN的示例:HTTP/[email protected]。在這個例子中,假設DNS在機器環境中正確設置,它可以縮短爲HTTP/server1.acme.com。

對於您的示例,foo.bar.com,領域可能是FOO.BAR.COM。它不一定是。您肯定可以擁有另一個名稱的Kerberos域中存在的foo.bar.com的DNS FQDN,但該域名必須是完全限定的,您不能將其作爲「REALM1」。 Kerberos嚴重依賴於DNS。我想在技術上可能有一個非完全合格的Kerberos領域名稱,儘管我從來沒有在實踐中看到它。你只會要求重大的麻煩。對於您的3個服務互相交談,是的,他們每個人都必須擁有自己的SPN,他們必須在Kerberos數據庫中單獨描述,否則客戶如何找到它們?在這種情況下,三種不同的服務都需要各自的密鑰表文件。但是每個keytab都不會有其他服務的主體。不要使用「principal」這個詞,就像你自己那樣。委託人是可能擁有SPN的安全對象,也可能不是。這取決於。有不同類型的安全主體,例如用戶,它們具有UPN。服務是SPN。計算機是第三種類型。建議您在這裏閱讀更多內容,如果您在Microsoft Active Directory環境中,這是當今最流行的Kerberos版本。http://social.technet.microsoft.com/wiki/contents/articles/4209.kerberos-survival-guide.aspx

+0

感謝您的解釋,讓它現在好多了!因此,如果對於我的服務s1(它以自己的用戶身份運行 - 說** s1user **),我想讓它訪問服務s2,我該怎麼做?說這兩個都在同一個實例上。我不會爲** s1user/instance @ realm **創建一個新的主體,然後將其添加到s2的keytab文件中? – rgamber

+0

這不是原始問題的一部分,是一個更先進的話題,也是我不熟悉的實現。我做了一次Google搜索,爲你找到了這個:http://docs.openstack.org/developer/keystoneauth/_sources/authentication-plugins.txt –