clrh55_lt_kamebuchi_public
DESCRIPTION
第55回 CLR/H 勉強会 ライトニングトーク - 5分でわかった気になるかもしれないKerberos認証TRANSCRIPT
5分で分かった気になる かもしれない Kerberos認証
2011.02.05 第55回CLR/H勉強会
@kamebuchi
自己紹介
O Twitter: @kamebuchi
O Blog: http://buchizo.wordpress.com/
O クラウド上にActive Directory構築したりする普通なWindows Azure使いで、本州から来ました。Windows 2000 Server発売時から関わり続けてきたKerberos認証を、自分が作ったアンドロイドを育てたような気分で紹介したり、洗浄したり、VerUpしたいと思います!(にゃ!
2 (c) Copyright 2011, Keiji Kamebuchi, All right reserved
その前に
3 (c) Copyright 2011, Keiji Kamebuchi, All right reserved
Kerberosとは何か
O 安全で
O ネットワーク上にパスワードを流したりしない
O 暗号化されてる
O シングルサインオンができて
O 一度ログオンすれば透過的にアクセスできる
O 信頼できる第三者機関で
O 全ての認証を集中化できる
O 相互認証ができるしくみ
O サーバー/クライアントどちらも相互に正当かどうか確認できる
4 (c) Copyright 2011, Keiji Kamebuchi, All right reserved
構成要素:3つのA
Authentication 認証
Authorization 認可
Auditing 監査
身元確認 ID/Password 生体認証
許可/拒否 ACL
認証ログ アクセスログ 反応型
5 (c) Copyright 2011, Keiji Kamebuchi, All right reserved
構成要素:用語とパズル
O KDC=Key Distribution Center:鍵配布センター O 暗号化鍵・プリンシパルのデータベース
O 認証サーバー
O 暗号化されたチケット交付チケット(TGT)を発行
O チケット交付サーバー
O 要求元にチケットを発行
O プリンシパル(Principal:主) O ユーザー・サービス・ホストの一意な情報
O レルム(Realm:領域) O プリンシパルが属する領域
O 例:ユーザープリンシパル名(UPN)
6
レルム ユーザー名
(c) Copyright 2011, Keiji Kamebuchi, All right reserved
構成要素:用語とパズル
O チケット O 暗号化されたセッション毎の一意なデータ構造
O KDCが発行する
O 最終的な身元の確認と通信用の暗号化鍵の確立(短期)
O 以下の情報をまとめたもの
O 要求元プリンシパル名
O 対象のサービスプリンシパル名
O チケットの開始・終了時期
O チケットを使用するIPアドレス
O 通信用の共通鍵(セッション鍵:秘密暗号化鍵)
O チケットフラグ
O だいたい10~24時間だけ有効
O キャッシュも使える
7 (c) Copyright 2011, Keiji Kamebuchi, All right reserved
構成要素:用語とパズル
O DNS
O レルムを管理したりKDCを検索したりいろいろ
O 時刻同期
O 前後5分ずれるとNG!!(大事!)
O ネットワーク
O UDP/88 TCP/88 TCP/749 UDP/4444 UDP/444
O NATは面倒くさい(IPアドレスみてるので)
O 要件があえば外部公開も可能
8 (c) Copyright 2011, Keiji Kamebuchi, All right reserved
9
ざっくりまとめると
KDC
DNS
クライアント
サーバー サーバー
チケット
監査
認証 TCP/88
認可
委任
サービスの発見 レルムの管理
時刻同期
(c) Copyright 2011, Keiji Kamebuchi, All right reserved
余談:PKIとは違うの?
O PKI(公開鍵基盤)とは別物
O PKIは、「身分を証明するための証明書を扱うための基盤」
O 身分の証明書=公開鍵
O 認証/認可/監査は別の仕組み
O 身分証明がはっきりしたほうがいい場合に利用
O S/MIME
O SSL
O PGP
O 鍵=証明書をどうやって公開/配布するかがポイント
10 (c) Copyright 2011, Keiji Kamebuchi, All right reserved
Microsoftでの実装
O Windows 2000 以降で標準対応(Kerberos v5) O KDC = Active Directory ドメインコントローラー O 意識しなくてもActive Directoryドメイン配下は
Kerberos認証つかってます O 暗号化方式はRC4-HMAC (既定)/AES/3DES
O DESはWindows 7/Windows Server 2008は既定で無効
O Kerberos認証に対応した、その他Microsoft製品 O Internet Explorer O SQL Server O IIS O Exchange O SharePoint など O ほとんどのMicrosoft製品じゃね?
11 (c) Copyright 2011, Keiji Kamebuchi, All right reserved
相互運用
O Microsoft以外でももちろんKerberos認証可能
O WebLogic Serverとか
O Firefoxとか(SPNEGO使えるはず)
O KDCもあるよ
O Macintoshも
O 相互運用はちと手間
O PAMの出来が..
O やっぱり多少の問題ある
O 規格はオープンなんだから実装がんばってね
O WS-Securityのバイナリトークンとか
12 (c) Copyright 2011, Keiji Kamebuchi, All right reserved
活用例
OKerberosが威力を発揮するのは
O委任によるシングルサインオン
O認証情報の引き継ぎ
O WindowsでNTLMだと何がダメ?
O よくあるのがダブルホップ問題
13 (c) Copyright 2011, Keiji Kamebuchi, All right reserved
ダブルホップとKerberos O NTLMの場合
14
Webサーバー
DBサーバー
WCF Data Services
Web 画面
クライアント(UserA)
UserA の認証情報
(1) Webへアクセス Windows統合認証(NTLM)によって UserAが認証される
UserA の認証情報
(2) WCF Data Servicesへアクセス Windows統合認証(NTLM)によって UserAが認証される
認証情報なし(Anonymous:匿名)
(3) DBへアクセス Windows統合認証(NTLM)はダブルホップ(認証情報の受け渡し/偽装)ができないため 認証情報無し=匿名ユーザーとしてアクセス ↓ DBへアクセスできない
(c) Copyright 2011, Keiji Kamebuchi, All right reserved
ダブルホップとKerberos
15
Web サーバー
DBサーバー
WCF Data Services
Web 画面
クライアント(UserA)
UserA の認証情報
(1)Web へアクセス Windows統合認証(Kerberos)によって UserAが認証される
UserA の認証情報
(2) WCF Data Services へアクセス Windows統合認証(Kerberos)によって UserAが認証される (3) DBへアクセス
Windows統合認証(Kerberos)によってUserAが認証される ↓ DBへアクセス可 UserA の認証情報
O Kerberosの場合
(c) Copyright 2011, Keiji Kamebuchi, All right reserved
やってみた O ただやるだけだと面白くない
O せっかくだからWindows Azure Connect で OnPremise と連携
16
Webサーバー(IIS)
Active Directory ドメインコントローラー (KDC他)
ファイルサーバー (画像置き場)
クライアント (IE)
Active Directory ドメイン
Windows Azure WebRole
Intranet
Windows Azure Windows Azure Connect
(c) Copyright 2011, Keiji Kamebuchi, All right reserved
やってみた
17 (c) Copyright 2011, Keiji Kamebuchi, All right reserved
やってみた
18 (c) Copyright 2011, Keiji Kamebuchi, All right reserved
やってみた
19 (c) Copyright 2011, Keiji Kamebuchi, All right reserved
やってみた
20 (c) Copyright 2011, Keiji Kamebuchi, All right reserved
やってみた
21
サービスアカウントがもっているSPN(サービスプリンシパル名)
委任できるように設定
(c) Copyright 2011, Keiji Kamebuchi, All right reserved
やってみた
22 (c) Copyright 2011, Keiji Kamebuchi, All right reserved
やってみた
23
発行されたチケット
(c) Copyright 2011, Keiji Kamebuchi, All right reserved
やってみた
24
ドメインコントローラーとWebRoleと しか通信してないクライアント
(c) Copyright 2011, Keiji Kamebuchi, All right reserved
やってみた
25
LogonTypeが3は Kerberos認証
(c) Copyright 2011, Keiji Kamebuchi, All right reserved
まとめ
O Kerberosはいろいろ大きめの認証基盤
O 理解は難しいが、ある程度知っていれば得られるものは大きい
O クラウド時代でも、まぁ使えないことはない
O Active Directoryをもっと活用しよう
Microsoft製品でやるなら、 Active DirectoryとKerberosで
はっぴはっぴはっぴ~
26 (c) Copyright 2011, Keiji Kamebuchi, All right reserved
Appendix
O Kerberos ネットワーク認証サービス v5 (RFC1510) O http://www.ipa.go.jp/security/rfc/RFC1510-00JA.html
O Kerberos Authentication Technical Reference O http://technet.microsoft.com/ja-jp/library/cc739058(WS.10).aspx
O Kerberos V5 認証 O http://technet.microsoft.com/ja-jp/library/cc783708(WS.10).aspx
O Kerbtray.exe O http://www.microsoft.com/downloads/en/details.aspx?FamilyID=4e3a
58be-29f6-49f6-85be-e866af8e7a88&displaylang=en
27 (c) Copyright 2011, Keiji Kamebuchi, All right reserved