セキュリティ識別子(SID)は、アクセス権限のスクリーニングと追跡のために作成された、固有のコードを持つ特別なパスと考えてください。ここで、企業では主要な入口すべてでこの特別なパスを使用していると想像してみてください。
通常、その仕組みは次のようになります。訪問者パスはゲストを一般エリアに制限し、従業員パスはスタッフが職務に関連する作業エリアにアクセスできるようにし、管理者パスは経営幹部やその他の上級スタッフがより制限の厳しい高リスクエリアにアクセスできるようにします。これはまさに、ITシステムにおけるSIDの機能であり、重要なシステム、企業秘密、機密データを不正アクセスから保護します。
それでは、セキュリティ識別子(SID)の概念を掘り下げ、SIDとは何か、なぜ重要なのか、どのように機能するのか、そして一般的なSIDの問題を解決するためのベストプラクティスを探っていきましょう。
セキュリティ識別子(SID)とは?
セキュリティ識別子(SID) は、Windowsサーバー、OS、Active DirectoryなどのWindows環境において、セキュリティ主体を識別し、アクセスを制御し、セキュリティインシデントのトラブルシューティングを行うために使用される一意で不変の値です。
SID は、コンピューターアカウント、ユーザー、プロセス、セキュリティグループなどのセキュリティ主体に、他のすべてと区別する一意の識別子を提供し、アクセスガバナンスを容易にします。通常、長い文字列(例:S-1-5-21-3632462615-3141105534-30830830-1115のような長い文字列で構成されますが、SIDは決して再利用されず、ユーザーIDが変更されても不変です。
SID内の長い文字列が意味する内容は以下の通りです。
| 構成要素 | 意味 |
|---|---|
| s | 文字列がSIDであることを示す |
| 1 | SID構造のバージョンを示し、SIDのリビジョンレベルと呼ばれる |
| 5 | SID を発行した機関(識別子発行機関)を指定します。SID識別機関の値は0~5の範囲です。ここで5はNT Authorityを指します。 |
| 21 | この値はサブ権限値を反映し、ドメインのサイズを示します。この場合、SIDには3つのサブ権限があります。 |
| 3632462615-3141105534-30830830 | SIDの起源となるドメインまたはローカルコンピュータを識別します。サブオーソリティ値と組み合わせることで、John Reed が 2 つのドメインにアクセスできる場合、それぞれに異なる SID が割り当てられ、一方の SID が他方の有効なセキュリティ識別子にならないことが保証されます。 |
| 1115 | 相対識別子(RID)と呼ばれ、セキュリティプリンシパルを特定します。これにより、同一組織内に2人のJohn Reedが存在する場合でも、互いの機密リソースにアクセスできないことが保証されます。 |
サイバーセキュリティにおけるセキュリティ識別子の目的とは
サイバーセキュリティにおけるSIDの主な目的は、Windows環境におけるID管理とアクセス管理の適切な基盤を提供することです。SIDは以下の重要な役割を果たします。
- オブジェクト識別: SIDはセキュリティ主体を特定のIDに関連付け、エンティティを容易に識別可能にし、機密ファイル周辺の活動を監査しやすくします。
- アクセス制御: Windows は、アクセス制御リスト (ACL) に対して SID を照合し、特定のセキュリティプリンシパルに関連付けられた権限レベルを決定します。これにより、ユーザーにはアクセス制御リストで指定された権限(読み取り、書き込み、削除など)が過不足なく付与されます。
- 監視と監査: SIDはWindowsログで、ログイン試行やファイル変更などのアクセスイベントを追跡するために使用されます。これによりセキュリティチームはユーザー活動を監視し、侵害されたアカウントを特定し、ログイン失敗や不正なファイル削除などのセキュリティインシデントをトラブルシューティングできます。
- セキュリティ: 複雑なハッシュ機構で生成されアクセストークンに埋め込まれるため、SIDはユーザー名/パスワードペアとは異なり、窃取・解読・複製が困難であり、侵害リスクを低減します。またSIDはクロスドメインアクセス機能を提供し、企業ネットワーク内の複数ドメインにわたる一貫したアクセス制御を実現します。
セキュリティ識別子はどこで使用されますか?
Windowsは、以下の要素においてファイルアクセス、グループ権限、システムレベル機能を管理するためにSIDを使用します:
- セキュリティ記述子:オブジェクトの所有権を指定するため。例:ファイルの所有者となる主体。
- アクセス制御エントリ: アクセスを許可または拒否される受託者、および監査対象となるアクセスイベントを示す。
- アクセストークン: ユーザーの身元、所属グループ、および保有する権限の種類を証明するために使用されます。
セキュリティ識別子検索:セキュリティ識別子番号の取得方法
セキュリティ識別子とその目的を理解したところで、ユーザーの SID を取得する方法を説明します:
Windows レジストリ エディターを開き、Windows Management Instrumentation コマンド (WMIC) を起動します。これは管理タスクを実行するためのコマンドライン インターフェイスです。起動後、次のコマンドを実行します:
wmic useraccount get domain,name,sid
セキュリティ識別子とユーザー名
セキュリティ識別子(SID)はユーザーアクセスを制御する機械可読の文字列であるのに対し、ユーザー名はユーザーを識別する人間可読の文字列です。下表に主な相違点をまとめます。
| SIDs | ユーザー名 |
|---|---|
| 一意で重複不可能、追加のセキュリティ層を提供 | 環境間で重複することが多いため、盗まれたユーザー名/パスワードの組み合わせは、ブルートフォース攻撃や関連攻撃における主要な攻撃ベクトルとなる |
| 不変性 — ドメイン内のユーザーの SID は、アカウントが削除される場合を除き、決して変化しない。 | 大部分が変更可能 |
| SIDはハッシュ化によって生成されるため、改ざんがより困難です。 | ユーザー名は平文で生成されるため、改ざんされやすい。 |
セキュリティ識別子とユーザー名は異なる概念ですが、Windows環境においてIDとネットワークリソースを保護するために調和して機能します。
セキュリティ識別子の種類
Windowsでは様々な種類のSIDが提供されており、それぞれが異なる目的を果たします。
主要なセキュリティ識別子の種類を以下に分類します:
- 既知のSID: これらは一般的に、汎用的なユーザーやグループを識別する定数識別子です。Windowsは特定の意味を持つこれらのSIDを事前定義しています。例えば、
Everyone – S-1-1-0は全ユーザーを含み、Local Administrators – S-1-5-32-544はローカル管理者グループを表します。 - グローバル一意識別子 (GUID) SID: GUID は Active Directory のオブジェクト識別子です。これらは、新しいドメインやアカウントが作成される際に、既知の SID と共に新しいオブジェクトに割り当てられます。
- 相対識別子 (RID) SID: RID は SID の末尾にある一意の文字列です。これらは、ドメインまたはグループ内の特定のプリンシパルを識別します。
- ドメイン固有の SID: これらの SID は、Windows または Active Directory ドメインおよびドメイン内のエンティティを表します。ドメイン SID に続き、ドメイン内の各オブジェクトに固有の RID が付与されます。
- セキュリティアカウントマネージャー (SAM) SID: Windows では、SAM データベースが機密資産へのアクセスを管理するユーザーおよびアカウントの認証情報を保持します。SAM SID は、SAM データベース内またはアクセス権を持つ主体を識別する値です。
- 仮想アカウント SID: アプリケーション、サービス、プロセスに付与された権限レベルを検証および強制するための SID です。
セキュリティ識別子(SID)の仕組み
SIDは、WindowsにおけるIAM(IDとアクセス管理)の要塞を構築する基盤と考えられます。以下にSIDの仕組みを説明します。
- SIDの割り当て: Windowsでアカウントが作成されると、関連するSIDが即座に生成され、割り当てられ、セキュリティデータベースに保存されます。&
- SIDとACLの関連付け: SIDが生成されると、アクセス制御リスト(ACL)に定義された権限や特権と関連付けられます。
- ユーザー認証:セキュリティプリンシパルがログオンするたびに、Windowsはまずログイン情報が有効かどうかを検証します。有効であれば、データベースからそのプリンシパルのSIDを取得し、トークンに格納します。
- SIDベースのアクセス制御:Windows は、セキュリティ設定(アクセストークンにも含まれる)と SID を照合し、プリンシパルがアクセスできるファイルやリソースを決定します。
セキュリティ識別子 (SID) の設定
SID は、通常、エンティティが作成されると Windows システムでデフォルトで有効になります。ただし、一部のサービス(カーネル ドライバーや、SQL サーバーを監視する System Center Operations Manager (SCOM) HealthService など)には、サービス SID が自動的に付与されません。
このようなサービスで SID を設定するには、サービス SID を使用できるようにサービスを構成します。次に、SID 認証をトリガーするログインプロセスを作成します。たとえば、SCOM HealthService の SID を設定するには、次の手順を実行します。
- Windows SDK の CLI である SC.exe(Windows SDKのCLI)を使用してSIDを作成します。
- SQLデータベースレベルのセキュリティ設定と権限をクエリし、SCOM HealthService SIDが作成されたことを確認します。
- クエリまたはSQL Server Management Studio(SSMS)を使用して、SQL Server内にWindowsログインを作成します。&
- SIDにロールとアクセス許可を割り当てます。デフォルトのSIDを持つエンティティに対して行う方法と同じです。
セキュリティ識別子(SID)の一般的な問題と解決方法
セキュリティ強化を目的としたあらゆる仕組みと同様に、SIDにも問題点とリスクが存在します。ここでは、SIDに関する主な問題点とその解決方法の概要を説明します。
1. SID履歴注入の脆弱性
SID履歴注入の脆弱性とは、ハッカーが特権昇格や機密リソースへのリモートアクセスを可能にするSID値を注入することでSID履歴を悪用する脆弱性です。
SID履歴注入の暴露を防ぐには、孤立アカウントを削除し、ID検知・対応ツールを活用してください。これらのツールはセキュリティプリンシパルの管理やアイデンティティ脅威のリアルタイム検知を支援します。また、SIEMツールを使用して、SIDに関連するアクセスパターンやアクティビティをログ記録および監査することもできます。
2.重複するSID
一意のSIDを発行する2つのドメインコントローラーが同一の相対IDプールを取得すると、SIDが重複します。これにより、重複ドメイン内の対象者向けに設定された権限を意図しないエンティティが取得可能となり、内部脅威や横方向移動の深刻なリスクが生じます。
この問題を修正するには、Ntdsutilを使用して重複するSIDを検索し再構成します。また、ドメインコントローラーを追跡する 同じRIDプールが二度割り当てられないようにすることも可能です。
3. 孤立したSID
ユーザーが企業を離れる、または職務を変更する際に孤立したアカウントが残るのと同様に、セキュリティプリンシパルが削除されたり別のドメインに移動されたりすると、ACL内に孤立したSIDが残存します。長期間発見されないまま放置されると、孤立したSIDは高度な持続的脅威(APT)の実行に悪用される可能性があります。
孤立した SID を特定し、関連するすべてのアクセス許可を削除するために、PowerShell スクリプトを定期的に実行してください。
4. 未解決の SID
未解決の SID とは、システム内のフレンドリ名と一致しない SID のことです。これが機能識別子(Capability DID)の場合は問題にならない可能性があります。機能識別子は他のSIDのように解決されないためです。しかし、未解決のSIDが機能識別子でない場合、重複したSID、削除されたアカウントのSID、または信頼関係が壊れたSIDである可能性があります。
根本原因を特定して修正するには、デバッグ ログを有効にするか、Ntdsutil を使用して重複する SID を修正します。
セキュリティ識別子管理のベスト プラクティス
Windows ネットワークのセキュリティを確保するには、SID を適切に管理することが重要です。以下にSID管理のヒントを示します。
- 可能な場合は、手動で作成するSIDよりもシステム生成のSIDを常に選択してください。手動作成のSIDは人為的ミスが発生しやすいです。
- 最小権限の原則(POLP)を適用し、ユーザーがタスクを効果的に完了するために必要な最小限の権限のみを付与してください。最小権限の原則(POLP) を適用し、ユーザーが業務を効果的に遂行するために必要な最小限の権限のみを付与してください。
- ロールベースのアクセス権限は、個々のユーザーではなくグループに対して許可または拒否してください。これにより、ユーザーが職務や職務役割を変更した際に、以前の役割から権限が引き継がれる、孤立した SID のリスクを制限します。
- 孤立した SID を定期的に検索して削除し、それらに関連付けられている権限を更新して、過剰または古い権限を排除し、アクセス拡散を最小限に抑えます。
- SID を秘密情報として扱います。共有したり、安全でない場所に保管したりしないでください。常に次の犠牲者を狙う攻撃者が存在します。
- SIEM ツールを使用して、ユーザーのアクティビティ、アクセスパターン、SID の変更をログに記録します。これにより、侵害が発生する前に、SID に関連する不審なインシデントを検出するための監視データが提供されます。
- セキュリティインシデントや災害発生時にシームレスな復旧を可能にするため、ACL、SID、および関連する権限をバックアップしてください。
- システムとソフトウェアを定期的にパッチ適用してください。ハッカーがシステムの脆弱性を悪用してSIDを操作し、機密資産にアクセスすることを防ぐためです。
Windows環境におけるセキュリティ識別子の管理方法
WindowsでSIDを効果的に管理するには、以下の対応が必要です:
- SIDとACLのバックアップ、重複SIDの検出、孤立SIDの削除といったSID管理タスクの自動化。
- POOP、what-is-role-based-access-control-rbac/" target="_blank" rel="noopener">RBACやジャストインタイムアクセス(JIT)などの基本概念を考慮する。
- 必要に応じて、集中型アイデンティティおよびアクセス管理(IAM)ソリューション、監視プラットフォーム、事前構築プログラムを活用する。IAMツールはアイデンティティガバナンスを効率化し、過剰な権限付与やその他のアイデンティティリスクを防止する。監視プラットフォーム攻撃者がシステムに侵入する前にアイデンティティ脅威を検知するのに役立ちます。PowerShellなどの組み込みプログラムは、SIDの解決、SID構成の変更、孤立したSIDの削除に有用です。
- SIDおよびアクセス構成への不正アクセスを防止します。
結論
セキュリティ識別子(SID)は、Windows環境において機密ファイル、フォルダー、資産への安全なアクセスを管理する上で極めて重要です。SIDはエンティティとその権限を一意に識別し、ログインしたユーザーがアクセス制御リスト(ACL)で指定されたリソースのみにアクセスできるように保証します。
不正アクセスを防止するだけでなく、ドメイン管理者がミッションクリティカルな資産とやり取りするエンティティを追跡し、侵害を防ぐことを可能にします。
ただし、SIDは関連するリスクに対処し、SIDのベストプラクティスを実施し、適切なSID管理と監視を徹底した場合にのみ効果を発揮します。
FAQs
SIDとは、Windows環境においてトラスティを識別するための一意の英数字文字列です。
ユーザー名と対応するSID値の変換には、Windowsのローカルセキュリティ機関(LSA)を使用します。
SID を検索するには、Windows コマンド プロンプトで次のコマンドを実行します:
wmic useraccount get domain,name,sid
Windows は、セキュリティ主体を効果的に識別する方法として SID を使用します。たとえば、組織内で 2 人の人物が同じ名前(例: Rob Smith)を持つ場合、Rob Smith 1 のアクセス許可と Rob Smith 2 のアクセス許可を区別するには SID が重要になります。またWindowsは、アクセス制御の簡素化やインシデントのトラブルシューティングを容易にするためにもSIDを利用します。
一般的なSIDの例としては、Word SID(S-1-1-0)、Null SID(S-1-0-0)、ローカルアカウントSID(S-1-5-113)などが挙げられます。
SID は通常、文字 S で始まる長い数字列の形式です。例:S-1-5-21-3632462615-3141105534-30830830-1115.
SIDは自動生成されるため、通常は手動で変更する必要はありません。ただし、変更が必要な場合は以下の手順を実行できます:
- アカウントを削除し、ドメインに再追加することで、新たに自動生成された SID をトリガーします。
- Windows コマンド プロンプトで Sysprep を使用します。ただし、これには管理者権限が必要であり、過度な使用はアカウントのロックアウトを引き起こす可能性があります。

