SPN 【Service Principal Name】 サービスプリンシパル名
概要
SPN(Service Principal Name)とは、Active DirectoryでKerberos認証を利用する際、クライアントがサーバ上のサービスを一意に識別するため登録名。偽のサーバがなりすましてサービスを乗っ取ることを防ぐ。サービス名(あるいはプロトコル名)、サービスが実行されているコンピュータ名(ホスト名/FQDN)、外部への窓口となるポート番号、サービスを実行するアカウント名を対応付けてドメインコントローラに登録する。このとき、SPNは「サービス名/ホスト名@ドメイン名」(ドメイン名は正確にはKerberosのレルム)という形式になる。
SPNを登録したサービスへのアクセスはドメインコントローラが仲介するため、利用者がサービス側のアカウントを保有していなくても利用を申請することができる。また、サーバが偽物にすり替えられるとSPNで登録したものとサービスアカウントが一致しなくなるため、クライアントが知らずにアクセスしてしまうことを防ぐことができる。
Active DirectoryにおけるSPNの登録はsetspnコマンドで行うことができ、「setspn -s サービス名/コンピュータ名:ポート番号 アカウント名」のように指定する。サービス名は「http」「dns」「cifs」「dhcp」などWindowsが標準であらかじめ用意しているものもあり、その場合ポート番号は省略できる。SPNは一意の識別子であるため重複して登録することはできず、実行するアカウントを変更する場合は一旦削除してから登録し直す必要がある。
(2021.8.1更新)