3 Minutes NetWorking Supplement
No.04

3Minutes NetWorking Supplement

補講第4回Kerberos(1) プリンシパルとレルム

■ AAA

おねーさん

おね~さんと、

ほげたん

ほげたんのっ!!

おねーさん

3 Minutes Networking、

ほげたん

Supplement !!

おねーさん

え~っと、今回だけど。
Kerberosを説明することにしたの。

ほげたん

けるべろす?

おねーさん

そう。

ほげたん

あぁ、首都警 特機隊

おねーさん

またマニアックな方を連想したわね。
そっちじゃなくて、その元ネタであるギリシャ・ローマ神話のケルベロス

ほげたん

冥界の門を守る3つ首の犬だっけ?

おねーさん

そう。冥界の門の番犬として「死者の魂を通し、生者は通さない」という確認をする賢いワンちゃん。
まぁ、冥界から逃げ出さないように見張ってもいるんだけどね。

ほげたん

確認?

おねーさん

そう、名前の由来はそこから来てるわけ。
Kerberosは認証プロトコルの1つなのよ。

ほげたん

認証。認証っていうと、アレだね。
例えば、共有ファイルにアクセスして、それを使う権利があるとかないとかそういう奴だよね。

おねーさん

わりと誤解されがちというか、まとめてごっちゃに考えてる人が多いというか。
ここはあれね、AAAモデルから説明を始めましょ。

ほげたん

えーえーえーもでる?

おねーさん

トリプルエー、ね。AuthenticationAuthorizationAccountingで、AAA。

ほげたん

認証[Authentication]、認可(承認)[Authorization]、課金[Accounting]?

おねーさん

確かにAccountingを調べると「課金」だけど、それはちょっとね。
監査が近いかなぁ。そのままアカウンティングでもいいと思うけどね。

  • 認証[Authentication] … ユーザの身元を照合する
  • 認可(承認)[Authorization] … 認証によって判明したユーザの身元から、与える/与えないサービスを決定する
  • アカウンティング[Accounting] … ユーザが利用したサービスの利用状況を記録する
おねーさん

ダイアルアップ時代では、アカウンティングにより接続時間を調べ、利用者からお金を取るから、「課金」って訳されてたわけだけど。今はそういう時代じゃないし、「監査」か「アカウンティング」でいいと思うわけ。

ほげたん

認証により「ユーザが誰か」を、認可により「ユーザが何をできるか」を、アカウンティングにより「ユーザが何を行ったか」を、それぞれ調べるってことかな?

おねーさん

うん、それで正解。だから、さっきのほげたんの「共有ファイルにアクセスして、それを使う権利があるとかない」は「認証」と「認可」がごっちゃになってるわけ。

ほげたん

どっちかというと、「認可」だったんだ。

おねーさん

で、今回から話すKerberosは「認証」プロトコル、つまり「自分が誰か」を証明するためのプロトコルなのよ。

ほげたん

へ~。

■ Kerberosの特徴

おねーさん

認証プロトコルといえば、RADIUSとか、PPPで使われているCHAPとかが有名ね。

ほげたん

うん、その2つは聞いたことがあるよ。

おねーさん

この2つの有名な認証プロトコルとの違い、Kerberosの特徴は次の点にあるのよ。

  • 安全な認証方式
  • シングルサインオン
  • 信頼できる第三者機関による集中化
  • 相互認証
おねーさん

特に、2つ目のSSOは非常に重要ね。Kerberosの導入は自動的にSSOを実現させるのよ。

ほげたん

しんぐるさいんおん? SSOの実現?

[FigureSP04-01:SSO]

ほげたん

一度だけ(シングル)の認証(サインオン)で済む?

おねーさん

そうね。便利でしょ?

ほげたん

うん、それは確かに便利。

おねーさん

もう1つあげるとするならば、相互認証。
通常、サーバへの認証ということは、「クライアント(のユーザ)が誰であるか」を照会するものなんだけど。

ほげたん

普通そうだよね。「僕はだれですよ~」で、自分の身元を証明して、で認可してもらうんだよね。

おねーさん

だけど、これはある意味危険なの。サーバが「本当に正しいサーバなのか」がわからないわけだから。

[FigureSP04-02:相互認証]

ほげたん

なるほど、サーバも正しいとわかってないと、危ないわけだね。

おねーさん

そうね。HTTPSなどではこちらを重視してるわね。フィッシングなどを防ぐために。
まぁ、HTTPSはサーバ認証もクライアント認証も両方できるけどね。

ほげたん

へ~。
Kerberosはこれもできるってことだね?

おねーさん

相互認証「も」できるというより、仕組みとして相互認証「が」入ってるんだけどね。
やりかた自体は上の図と違うけれど、相互認証される点は間違いないわ。

ほげたん

なんか色々すごいね、Kerberos。

■ Kerberosの基本用語

おねーさん

さてさて。Kerberosの説明をしようと思うんだけど。まず、その前にKeberosで使われる基本用語を覚えてもらわないと。
さらに、その前にKerberosのバージョンの話をしとくわね。Kerberosにはバージョン4とバージョン5があるの。

ほげたん

バージョン1~3は?

おねーさん

バージョン1~3は、開発元(MIT)でのテスト用だから、実装されてないわ。
外部に初めて公開されたのがバージョン4(Kerberos4)。でそれの改良版がバージョン5(Kreberos5)。

ほげたん

Kreberos4とKerberos5、どう違うの?

おねーさん

ん~。それを長々と説明したくないんだけど?

ほげたん

手抜きだ。

おねーさん

ほ~げ~た~~~ん~~~~!!

ほげたん

はわわ~!! いや、うん、いいと思いますよ。
ししし、資源の無駄遣いですしね、えぇ、長い説明は。

おねーさん

わかってもらえてうれしいわ。
まぁ、改良版であるKerberos5の方がやはり優れてるし、これからはKreberos5の方が使われていくだろうし。

ほげたん

うんうんうんうん。そうそう。

おねーさん

実際、WindowsドメインではKeberos5だし、ってことで今回の説明はKerberos5の説明を中心にさせてもらいます。

ほげたん

なんの異論もございません。

おねーさん

まず、今回は2つの言葉を覚えてね。

  • レルム[realm]
  • プリンシパル[principals]
ほげたん

レルムプリンシパル

おねーさん

うん。まずレルム。
レルムはkerberosで管理される範囲を示すの。

ほげたん

管理される範囲? なんというか、抽象的すぎて微妙にわかりづらいよ。

おねーさん

そうねぇ、Windowsドメインだと、ドメインのことなんだけどね。

ほげたん

いや、おね~さんは、ActiveDirectoryな人だからいいけど、そうでない人にはその例えわかりづらいよ。

おねーさん

う~ん、そうねぇ。Kerberosで管理されるべき人/モノのある組織ってのはどう?

ほげたん

それならわかる。

おねーさん

それがレルム。その名前がレルム名。一般的にはその組織のドメイン名を使うことが多いわ。
ただしドメイン名と違い、大文字と小文字は区別されるので気をつけること。普通は大文字で書くことが多いの。

  • レルム … 3MIN.JP
ほげたん

DNSで使われるドメイン名を、大文字で、だね。

おねーさん

もう1つがプリンシパル。これは人/モノ/サービスを示すの。
レルムで管理されるユーザ、ホスト、サービスのことね。

ほげたん

ユーザだけじゃないの? 認証って普通ユーザのことだと思うんだけど。

おねーさん

さっきも言ったとおり、Kerberosは相互認証を実現してるから、ユーザだけじゃないわ。レルム内のホストや、それが実行しているサービスも全部含んだものがレルムの管理対象になるの。プリンシパルにはこの3つがある、ってこと。

  • ユーザプリンシパル
  • ホストプリンシパル
  • サービスプリンシパル
  • (Kerberosチケット交付サービスプリンシパル)
おねーさん

4つ目は特別なプリンシパル。これについてはまた説明するわ。
で、Kerberos5のプリンシパルは次のように記述されるの。

  • コンポーネント[/ コンポーネント] [/ コンポーネント] […] @ レルム
ほげたん

コンポーネントって何?

おねーさん

ユーザやホストやサービスだと考えておけばいいわ。スラッシュで区切りされるわけね。
例えば、次のようなのがプリンシパルになるわけ。

  • ユーザプリンシパル
    • emi@3MIN.JP … 3MIN.JPレルムのユーザ「emi」
    • inter/admin@3MIN.JP … 3MIN.JPレルムの管理ユーザ(admin)であるユーザ「inter」
  • ホストプリンシパル
    • host/winsvr.3min.jp@3MIN.JP … 3MIN.JPレルムのホスト「winsvr.3min.jp」
  • サービスプリンシパル
    • ldap/dicsrv.3min.jp@3MIN.JP … 3MIN.JPレルムの(dicsrv.3min.jpが提供している)LDAPサービス
おねーさん

ホストプリンシパルや、サービスプリンシパルのスラッシュの後に入るのは必ずFQDNね。

ほげたん

ユーザ名(/状態)@レルム、host/ホスト名のFQDN@レルム、サービス名/サービスのホストのFQDN@レルム……こんな感じ?

おねーさん

うん、そう。
まず、「Kerberosの管理領域」レルム、「レルム内で管理される対象」プリンシパル、ということを覚えてね。

ほげたん

うんうん、了解。

おねーさん

次回の、3Min Net SupplementもKerberosを説明するわ。

ほげたん

へぇ、続き物なんだ。

おねーさん

さすがに1回じゃKerberosは説明しきれないよ。
ということで、おね~さんと、

ほげたん

ほげたんのっ!!

おねーさん

3分間ネットワーク、

ほげたん

サプリメントでした~~~っ!!
まった次回~~~~!!

ケルベロス
ローマ神話だと[Cerberus]。ギリシャ神話だと[Kerberos]。
RADIUS
[Remote Authentication Dial In User Service]
リモートアクセス用のユーザ認証プロトコル。
現在でもPPPoEやVPNや検疫ネットワークで活躍中。
読みは「らでぃうす」。
CHAP
[Challenge-Handshake Authentication Protocol]
PPP対応のユーザ認証プロトコル。
読みは「ちゃっぷ」。
SSO
[Single-Sign-On]
シングルサインオン。
HTTPS
[HyperText Transfer Protocol Secure]
SSLを使って暗号化・認証・署名などを実装したHTTP。
フィッシング
[phishing]
偽装したWebページなどを作成し、個人情報を入力させ入手する手口。
レルム
[realm]
範囲、部門、王国の意味。
プリンシパル
[principal]
本人などの意味。
FQDN
[Fully Qualified Domain Name]
完全修飾ドメイン名。詳細は3Min Net No.62などを参照のこと。
ほげたんほげたんの今日のポイント
  • 認証により「ユーザが誰か」を、認可により「ユーザが何をできるか」を、アカウンティングにより「ユーザが何を行ったか確認する
  • Kerberosは認証プロトコル
    • SSOや相互認証を実現する
  • Kerberosが管理する範囲をレルムと呼ぶ
  • レルムでの管理対象をプリンシパルと呼ぶ

3 Minutes NetWorking Supplement No.04

管理人:aji-ssz(at)selene.is.dream.jp