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