知られざるActive Directory技術の「舞台裏」

第2回 誰も教えてくれないActive DirectoryとLDAPの「本当の関係」[後編]

この記事を読むのに必要な時間:およそ 5 分

LDAPの認証とセキュリティとは

LDAPはデータベースの一種ですので,LDAP個別の認証システムがあります。最も単純なものは,シンプル認証という平文パスワードによる認証となります。しかし,平文による認証は実システムでは問題が多いため,他の強力な認証が使えるよう,Simple Authentication and Security Layer(SASL)という認証フレームワークが,LDAPv3より実装されています。

実際には,SASLというフレームワーク上に,Generic Security Service API(GSSAPI)と呼ばれる汎用的なセキュリティサービスを提供するアプリケーションインターフェースに準拠した,さまざまな認証プロトコルが実装されています。たとえば,SASL/GSSAPI準拠のKerberos認証やダイジェスト認証などがその代表で,必要に応じて利用する認証プロトコルを指定することができます。

Active Directoryでは,GSSAPIのマイクロソフト版であるSecurity Service Provider Interface(SSPI)に準拠した,MD5ダイジェスト認証,Kerberos認証,NTLM認証が実装されています。なお,Kerberos認証とNTLM認証については,(Windowsログオン上重要な認証プロトコルとして)必要に応じてネゴシエーションを取る必要性から,Secure Protocol Negotiation(SPNEGO)パッケージに同梱されています。詳細についてはマイクロソフトのWebサイトをご覧ください。

シンプル認証

平文パスワードによる単純な認証となります。簡単に利用できる反面,パスワードが平文で流れてしまう問題点があります。Transport Layer Security(TLS)を使った暗号化セッションを行なうことで,盗聴を防止する方法があります。

MD5ダイジェスト認証

パスワードから,元の文字を推測できない(ハッシュで変換)"チャレンジ"と呼ばれるワンタイムレベルの文字列を送り,それに応答する"レスポンス"を使って行なわれる認証です。暗号化されないデータがやりとりされる部分はシンプル認証と同じですが,実際のパスワードは盗聴されないメリットがあります。

Kerberos認証

Kerberos v5に準拠した,Active Directory標準の認証プロトコルです。KDCと呼ばれる認証機関から認証チケットを得ることで,チケットが有効な間,認証されたサービスにアクセスできるようになります。まず,認証を受ける資格チケット(TGT)を取得してから,TGTを使って,目的のサーバサービスの認証チケット(サービスチケット)をサーバとクライアント双方で取得します。高度なセキュリティを確保でき,業界標準のため汎用性も高い,というメリットがあります。

NTLM認証

NT Lanman Manager(NTLM)という認証プロトコルによる,一種のチャレンジ=レスポンス方式で認証を行う,Windowsで従来から使われている認証となります。MS-RPCプロトコルが通信に使われるため,イントラネットでの利用が前提の認証です。Active Direcotryではダウンレベル(代替の)認証として利用されます。

匿名認証

LDAPでは認証を必要としない匿名による認証を設定することもでき,Active Directoryでも可能です。匿名による認証を可能にすると,クライアントは特に認証を必要とすることなく,LDAPの各エントリにアクセスできるようになります。

LDAPでは,389/tcpまたは389/udp(非接続状態)を使って通信がなわれますが,この通信は暗号化されないため,シンプル認証時のパスワードや認証完了後のデータは特に保護されません。LDAPにはLDAP over SSLおよびLDAP over TLSという,SSL証明書を使ったサーバ認証や暗号化プロトコルがあります。

LDAP over SSLはセキュアLDAP(LDAPS)とも呼ばれ,SSLセッションによりLDAPの通信を暗号化するもので,SSLのためのサーバ証明書とクライアントにCAルート証明書を利用します。636/tcpポートが使われます。

LDAP over TLSは,Transport Layer Securityと呼ばれる,汎用的な暗号化セッションを構成するセキュリティ機能(RFC2246等で勧告されています)を使って,LDAPの通信を暗号化するものです。TLSはSSL3.0を改良したものであるので,SSLのためのサーバ証明書とCAルート証明書を利用します。LDAP over SSLとの違いとして,ポートは通常のLDAPのもの(389/tcp)を使うこと,クライアント側からの要求で必要時に暗号化を開始できる,などがあります。

LDAPを使って外部とネットワーク通信を行なう場合や,LDAPだけを使ってActive Directoryでのユーザアカウントのパスワード(unicodePwd属性)を設定したい場合,これらの暗号化技術が必要となります。

また,LDAPにおけるセキュリティ設定(オブジェクトや属性へのアクセス許可)ですが,データベースそのものへのアクセスや,各オブジェクトや属性それぞれに対してアクセス許可を個別に実装することができます。ちなみにLDAPに関するアクセス許可の実装について,現時点で正式なRFC勧告というものはないため,LDAPサーバ製品の実装に依存していることに,注意してください。

Active Directoryでは,NT Security Descriptorと呼ばれる,Windowsで利用される権限に基づくDACL(随意アクセス許可)が実装されていて,このアクセス許可はひとつひとつのオブジェクトごとに設定が可能になっています。これは,オブジェクト自体の読み取りや書き替えのほか,オブジェクトが保持する各属性や特殊なメソッド(パスワードの変更など)についても,個別に指定することができます。

図6 ユーザアカウントの「セキュリティ」プロパティ

図6 ユーザアカウントの「セキュリティ」プロパティ

上図は,特定のドメインユーザが参加可能なコンピュータアカウントについて,アクセス許可を設定する[セキュリティ]プロパティ画面をみたものですが,参加させたユーザのオブジェクトへのアクセス許可として,[DNSホスト名への検証された書き込み][サービスプリンシパル名への検証された書き込み][パスワードのリセット][パスワードの変更]等,コンピュータのドメイン参加に必要なアクセス許可が追加設定されていることがわかります。

この画面は[Active Directoryユーザーとコンピュータ]を開いてオブジェクトを右クリックし,[表示]→[拡張機能]を有効にすると,プロパティタブとして表示されるようになります。

たとえば,特定OUの管理を別のユーザに委任させたい場合に行なう「オブジェクト制御の委任ウィザード」では,このアクセス許可設定が,内部で実行されています。

図7 オブジェクト制御の委任ウィザード

図7 オブジェクト制御の委任ウィザード

Active Directoryに関する技術情報:

Microsoft TechNet Active Directory TechCenter
URLhttp://technet.microsoft.com/ja-jp/activedirectory/default.aspx
Microsoft Active Directory 機能概要ページ
URLhttp://www.microsoft.com/japan/ad/

著者プロフィール

小鮒通成(こぶなみちなり)

Active DirectoryおよびWindows Serverに関するコンサルタント。あわせて各種コミュニティ活動や執筆活動を行っており,Microsoft Most Valuable Professional (Windows Server System - Directory Services) 表彰を5年連続で受けている。現在はNTTデータ先端技術株式会社に勤務。