■ AAA
おね〜さんと、
ほげたんのっ!!
3 Minutes Networking、
Supplement !!
え〜っと、今回だけど。
Kerberosを説明することにしたの。
けるべろす?
そう。
あぁ、首都警 特機隊?
またマニアックな方を連想したわね。
そっちじゃなくて、その元ネタであるギリシャ・ローマ神話のケルベロス。
冥界の門を守る3つ首の犬だっけ?
そう。冥界の門の番犬として「死者の魂を通し、生者は通さない」という確認をする賢いワンちゃん。
まぁ、冥界から逃げ出さないように見張ってもいるんだけどね。
確認?
そう、名前の由来はそこから来てるわけ。
Kerberosは認証プロトコルの1つなのよ。
認証。認証っていうと、アレだね。
例えば、共有ファイルにアクセスして、それを使う権利があるとかないとかそういう奴だよね。
わりと誤解されがちというか、まとめてごっちゃに考えてる人が多いというか。
ここはあれね、AAAモデルから説明を始めましょ。
えーえーえーもでる?
トリプルエー、ね。Authentication、Authorization、Accountingで、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が管理する範囲をレルムと呼ぶ
- レルムでの管理対象をプリンシパルと呼ぶ