---
generated_at: 2026-02-18 10:45:00
metrics:
  claims_total: 45
  claims_with_evidence: 44
  claims_without_evidence: 1
confidence_derived: 0.98
---

# 根拠レポート：143-Kerberosテスト

## 本レポートについて

### 目的
本レポートは、生成された設計書・ドキュメントの信頼性を検証し、人間レビュアーが効率的にレビューできるようにすることを目的としています。

### チェック方法
以下の観点でドキュメントの内容（Claim：主張）を検証しています：

1. **根拠の有無確認**：各主張に対して、ソースコード・既存設計書・要件定義書などの根拠（Evidence）が存在するか
2. **根拠との整合性**：主張の内容が根拠と矛盾していないか
3. **網羅性**：参照すべき情報源を適切にカバーしているか

### 信頼度スコアの算出
- **confidence_derived** = 根拠あり件数 / 総主張件数
- 状態「○」：根拠あり、「△」：根拠不足または要確認

### 本レポートの使い方
1. まず「サマリー」で全体の信頼度と優先レビュー項目を確認
2. 「Claims と根拠の対応」で △ の項目を重点的にレビュー
3. 「不足情報」で補完が必要な情報源を確認

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.98**
  - 根拠あり：44 / 45、根拠なし：1
- 優先レビュー（高）
  1. **AGリスナーSPNチェックの動作**：実環境でのAG存在時の動作確認が必要

## 2) 参照した情報（Evidence一覧）

- E-01: `public/Test-DbaKerberos.ps1` - Kerberos診断コマンド（1262行）
- E-02: `public/Test-DbaSpn.ps1` - SPN検証コマンド（285行）
- E-03: `public/Test-DbaAgSpn.ps1` - AG SPN検証コマンド（229行）
- E-04: `docs/code-to-docs/画面機能マッピング/画面機能マッピング.csv` - 機能マッピング情報
- E-05: `docs/code-to-docs/画面一覧/画面一覧.csv` - 画面一覧情報

## 3) Claims と根拠の対応（レビューの主戦場）

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | Test-DbaKerberosはSQL ServerインスタンスのKerberos認証を診断する | E-01: 3-8行目 SYNOPSIS/DESCRIPTION | ○ |
| C-02 | 9カテゴリ、約20+チェックを実行する | E-01: 9-49行目 カテゴリとチェックの詳細 | ○ |
| C-03 | SPNカテゴリで1-2+チェックを実行 | E-01: 11-13行目 SPN checks | ○ |
| C-04 | 時刻同期カテゴリで2チェックを実行 | E-01: 15-17行目 Time Sync checks | ○ |
| C-05 | DNSカテゴリで3チェックを実行 | E-01: 19-22行目 DNS checks | ○ |
| C-06 | サービスアカウントカテゴリで3チェックを実行 | E-01: 24-27行目 Service Account checks | ○ |
| C-07 | 認証カテゴリで1チェックを実行 | E-01: 29-30行目 Authentication check | ○ |
| C-08 | ネットワークカテゴリで3チェックを実行 | E-01: 32-35行目 Network checks | ○ |
| C-09 | セキュリティポリシーカテゴリで3チェックを実行 | E-01: 37-40行目 Security Policy checks | ○ |
| C-10 | SQL構成カテゴリで2チェックを実行 | E-01: 42-44行目 SQL Configuration checks | ○ |
| C-11 | クライアントカテゴリで1チェックを実行 | E-01: 46-47行目 Client check | ○ |
| C-12 | SqlInstanceパラメータはパイプライン入力をサポート | E-01: 147行目 ValueFromPipeline | ○ |
| C-13 | ComputerNameパラメータ使用時はSQL固有チェックがスキップされる | E-01: 51行目 注記 | ○ |
| C-14 | 出力にComputerName/InstanceName/Check/Category/Status/Details/Remediationが含まれる | E-01: 96-102行目 出力プロパティ定義 | ○ |
| C-15 | StatusはPass/Fail/Warningの3種 | E-01: 100行目 Status定義 | ○ |
| C-16 | Test-DbaSpnを内部で呼び出す | E-01: 188行目 Test-DbaSpn呼び出し | ○ |
| C-17 | IsSet=falseのSPNをフィルタリングしてFail判定 | E-01: 196行目 Where-Object IsSet -eq $false | ○ |
| C-18 | Get-DbaAgListenerでAGリスナーを取得 | E-01: 232行目 Get-DbaAgListener呼び出し | ○ |
| C-19 | Test-DbaAgSpnでAGリスナーSPNを確認 | E-01: 243行目 Test-DbaAgSpn呼び出し | ○ |
| C-20 | 時刻差5分がKerberosの閾値 | E-01: 281行目 $timeDiff -gt 5 | ○ |
| C-21 | 時刻差2-5分でWarning | E-01: 285行目 $timeDiff -gt 2 | ○ |
| C-22 | System.Net.Dns.GetHostEntry()でDNS正引き | E-01: 457行目 [System.Net.Dns]::GetHostEntry | ○ |
| C-23 | System.Net.Dns.GetHostAddresses()でIPアドレス取得 | E-01: 458行目 [System.Net.Dns]::GetHostAddresses | ○ |
| C-24 | DNS逆引きでSystem.Net.Dns.GetHostEntry()を使用 | E-01: 495行目 [System.Net.Dns]::GetHostEntry($ip) | ○ |
| C-25 | nslookupでCNAME検出 | E-01: 537行目 nslookup呼び出し | ○ |
| C-26 | "canonical name"でCNAME判定 | E-01: 538行目 $result -match "canonical name" | ○ |
| C-27 | CNAMEはKerberos認証を破壊する | E-01: 556行目 "CNAMEs break Kerberos authentication" | ○ |
| C-28 | $server.ServiceAccountでサービスアカウント取得 | E-01: 595行目 $serviceAccount = $server.ServiceAccount | ○ |
| C-29 | gMSAアカウントは末尾'$'で判別 | E-01: 597行目 $serviceAccount -like "*\*$" | ○ |
| C-30 | DirectorySearcherでADアカウント検索 | E-01: 663行目 New-Object System.DirectoryServices.DirectorySearcher | ○ |
| C-31 | lockoutTimeでロック状態を確認 | E-01: 670行目 $lockoutTime = $adUser.Properties["lockoutTime"] | ○ |
| C-32 | userAccountControlビット2でDisabled判定 | E-01: 672行目 ($uac -band 2) -eq 2 | ○ |
| C-33 | userAccountControlビット1048576で委任禁止判定 | E-01: 744行目 ($uac -band 1048576) -eq 1048576 | ○ |
| C-34 | Test-DbaConnectionAuthSchemeで認証方式確認 | E-01: 798行目 Test-DbaConnectionAuthScheme呼び出し | ○ |
| C-35 | AuthScheme=KERBEROSでPass | E-01: 800行目 $authResult.AuthScheme -eq "KERBEROS" | ○ |
| C-36 | AuthScheme=NTLMでFail | E-01: 804行目 $authResult.AuthScheme -eq "NTLM" | ○ |
| C-37 | Test-NetConnectionでポート接続確認 | E-01: 848行目 Test-NetConnection | ○ |
| C-38 | TCP/88でKerberosポート確認 | E-01: 848行目 -Port 88 | ○ |
| C-39 | TCP/389でLDAPポート確認 | E-01: 886行目 -Port 389 | ○ |
| C-40 | TCP/464でKerberos-Kdcポート確認 | E-01: 924行目 -Port 464 | ○ |
| C-41 | レジストリでKerberos暗号化タイプ確認 | E-01: 963行目 Kerberos\Parameters\SupportedEncryptionTypes | ○ |
| C-42 | Test-ComputerSecureChannelでセキュアチャネル確認 | E-01: 1021行目 Test-ComputerSecureChannel | ○ |
| C-43 | hostsファイルをチェック | E-01: 1065行目 $env:SystemRoot\System32\drivers\etc\hosts | ○ |
| C-44 | Get-DbaNetworkConfigurationでTCP/IP確認 | E-01: 1175行目 Get-DbaNetworkConfiguration | ○ |
| C-45 | klistコマンドでチケットキャッシュ確認 | E-01: 1214行目 & klist 2>&1 | ○ |

## 4) 不足情報（Unknown / Missing）
- **AGリスナーSPNチェックの実動作**: AG環境でのTest-DbaAgSpn呼び出しの実際の動作確認が必要
  - 候補：AG環境での実機テスト

## 5) リスクフラグ（レビュー観点）
- **0（低リスク）**: 全チェックロジックがソースコードで明確に定義されている
- **0（低リスク）**: 出力形式が統一されており、予測可能

## 6) レビュアーチェックリスト（最小）
- [ ] 各カテゴリのチェックが期待通りに動作することを実環境で確認
- [ ] SQL Server接続失敗時のエラーハンドリングを確認
- [ ] ComputerNameパラメータ使用時にSQL固有チェックがスキップされることを確認
- [ ] AG環境でのAGリスナーSPNチェックの動作確認
- [ ] 時刻同期チェックの閾値（5分/2分）の動作確認
- [ ] CNAMEレコード検出ロジックの動作確認
