Windowsのセキュリティ機能

SIDとGUID

Windowsの全てのユーザアカウント、コンピュータアカウント、グループアカウントのように認証やアクセス制御の対象となる主体の事をセキュリティプリンシパルといい、WindowsのセキュリティプリンシパルにはSID(Security Identifier、セキュリティ識別子)、GUID（Globally Unique Identifier、グローバル一意識別子）という2つの固有識別子が割り振られている。
SID、GUIDはいずれもユーザアカウントを識別するためのものだが、以下のような特徴と違いがある。まずSIDはActive Directoryドメイン（後述）で一意な識別子でアクセス制御などに使われる。SIDはユーザ名やコンピュータ名を変更してもSIDは変更されない。また異なる2つのマシンで同一のユーザ名のアカウントを登録した場合、それら2つのマシンのアカウントのSIDは互いに異なる。
しかしユーザの所属するドメインが変更になった場合はSIDも変更になる。そこでドメインが変更になってもアカウントを一意に識別できるように作られたのがGUIDである。

アクセストークンとUID

各ユーザアカウントには、ユーザアカウントのSID、ユーザが属しているグループ（達）のSID、アクセス制御情報等を記述したアクセストークンが割り振られている。
ネットワーク経由でアクセスしてくるユーザーに対しては、アクセス トークンの代わりにUID (User IDentifier、ユーザー識別子)が用いられる。アクセストークンの全情報をネットワークに流すのはセキュリティ上危険なので、アクセストークンから必要情報のみを抜き出したUIDを用いるのである。

マシンをまたがるアカウント管理・ファイル共有

小規模なネットワークではワークグループの機能を使う事により、マシンをまたがるアカウント管理・ファイル共有を行う事ができる。大規模なネットワークであればディレクトリサービスActive Directoryで一括管理する必要がある。

ワークグループ

ユーザ名を用いてアカウント管理を行う仕組みである。すなわち、あるマシンから別のマシンのリソースにアクセスする（例：エクスプローラーにパス名を打ち込んでファイルやフォルダにアクセスする）場合、アクセス元のマシンとアクセス先のマシンで同一のユーザ名が登録されており、しかもアクセス先に登録されているパスワードを打ち込めばアクセスが許可される。
クライアントWindowsではワークグループはユーザ数が20以下（Windows 7）ないし10以下（それ以前）の場合しか利用できない。WindowsサーバやNASを使えばこの制限はない。
ワークグループはTCP/IPベースのNetBIOSにより通信を行っている。古いバージョンのWindowsではNetBEUIベースのNetBIOSでも通信できた。

利用方法

Windows 10の場合、ワークグループの機能を使うには、「システムのプロパティ」でワークグループ名を事前に設定しておく必要がある。複数のマシンを同一のワークグループに置くには各マシンで同一のワークグループ名を登録する必要がある。同一のワークグループに属している場合のみファイル共有が可能である。なお同一のワークグループ内にあるマシンのコンピューター名は互いに異なっている必要がある。
さらに「ネットワークと共有センター」の「共有オプション」で「ネットワーク探索を有効にする」をチェックし、必要に応じ「ファイルとプリンターの共有を有効にする」もチェックする。

ゲストアカウント

リソース公開側のマシンがゲストアカウントを許可していれば、ユーザ名がなくともパスワードだけ知っていればアクセスできる。特にパスワードを殻に設定すれば誰でもアクセスできるようになるが、セキュリティ上危険である。

参考：ホームグループネットワーク

Windows 7で導入された新しい形態のワークグループネットワークであるが、Windows 10 (Version 1803) 以降では削除されている。

参考：Windows NTドメインネットワーク

NTドメインという単位でマシンやアカウントなどを管理する仕組み。ユーザアカウント、グループアカウント、システムポリシーが利用可能。「ドメインコントローラー（DC）」と呼ばれるサーバーでユーザアカウントやグループアカウントを一括管理しており、DCに（ユーザないしグループ）アカウントがNTドメイン内でどのような権限（書き込み権限、読み込み権限など）を持つかを一度登録すればNTドメイン内の全てのマシンでこの登録情報が共有される。このためワークグループと違い、個々のマシンにユーザ登録する必要はない。
ただし、NTドメインやアカウント管理に階層構造がない事やアカウント数に上限があるといった欠点がある。
Active Directoryが登場したこともあり、Windows 2000以降は新規にNTドメインが利用される事はほとんどなくなった。

レプリケーション

1つのドメインに複数のドメインコントローラーを設置してレプリケーションを行う事でドメインコントローラーの可用性や信頼性を向上する事ができる。なお、レプリケーションはマルチマスタである。

アクセス制御と監査

Windowsではファイルシステム、ファイル共有、プリンター、レジストリ、グループポリシー、サービス、WMIなど様々な箇所にアクセス制御を導入している。

制御内容

「制御内容」として選択可能なのは以下の14種類である：「フォルダーのスキャンとファイルの実行」、「フォルダーの一覧／データの読み取り」、「属性の読み取り」、「拡張属性の読み取り」、「ファイルの作成／データの書き込み」、「フォルダーの作成／データの追加」、「属性の書き込み」、「拡張属性の書き込み」、「サブフォルダーとファイルの削除」、「削除」、「アクセス許可の読み取り」、「アクセス許可の変更」、「所有権の取得」、「同期」。
なお、アクセス制御設定画面の「簡易表示」では制御内容として「フルコントロール」、「変更」、「読み取りと実行」、「フォルダーの内容の一覧表示」、「読み取り」、「書き込み」があるが、これらは前述した14項目の組み合わせとして定義される。例えば「読み取り」は「フォルダーの一覧／データの読み取り」、「属性の読み取り」、「拡張属性の読み取り」、「アクセス許可の読み取り」、「同期」の5項目を全て「許可」にし、それ以外の9項目を全て「拒否」にするという設定である。

AD環境のアクセス制御

AD環境ではグループアカウントを利用してアクセス制御を行うので、まずグループアカウントの種別について述べた後、AD環境のアクセス制御の基本方針である「AGUDLP」について述べる。

グループアカウントの分類

グループアカウントには個々のマシンで管理するローカルグループと、Active Directoryで管理されるセキュリティグループとがあり、これらに加えて配布グループというメールアプリケーションでメールの配布先を指定したりする為のグループの種類がある。なおドメイングループと配布グループはActive Directoryに関するグループの種類であるので、ドメインアカウントしかグループメンバーに出来ない。
セキュリティグループと配布グループはその有効範囲によってドメインローカルグループ、グローバルグループ、ユニバーサルグループに分かれる。ドメインローカルグループはドメイン内でのみ参照可能である。これに対しグローバルグループとユニバーサルグループはいずれも他のドメイン、ドメインツリー、フォレスト全体から参照可能であるが、グローバルグループはメンバー追加に制限があり、追加できるのは同一ドメインのアカウントやグローバルグループのみである。ユニバーサルグループにはそのような制限はない。

Active Directoryにおける認証

Active Directoryはユーザ認証としてケルベロス認証とNTLM認証が利用可能である。ただし、NTLMは（バージョン1、2双方とも）認証プロトコルそれ自身がセキュリティ上脆弱である事が知られているので、その利用は推奨されない。クライアント端末がWindows 7以降であればケルベロス認証に対応しているのでNTLM認証を停止可能である。
Azure ADは多要素認証にも対応している。

Active Directoryによるシングルサインオン

Active Directoryはケルベロス認証により、ドメイン内のシングルサインオンを実現する。ドメイン連携の仕組みやADFS（Active Directoryフェデレーションサービス）というを使えば、ドメインの垣根を超えてシングルサインオンが可能になる。
Azure ADの場合はSAMLやOpenID Connectなどでシングルサインオンを実現している。
Azure ADはシングルサインオン機能のよりマイクロソフトを含む各社のクラウドアプリケーションと連携可能で、Azure AD経由でアクセス可能なクラウドアプリケーションは2000種類以上ある（2016年現在）。
またWindow 10では事前にAzure ADにアカウントを登録しておくと、ユーザが端末にサインインしたときに透過的にAzure ADからも認証され、Azure ADの連携サービスにシングルサインオンできる。

Windowsにおける権限

Windowsにおけるユーザ権限は、シャットダウンやバックアップなどマシン全体に関わる権限である特権とローカルログインなど個々のユーザに関する権限である権利に分かれる。
ユーザの特権・権利はsecpol.msc(ローカル セキュリティ ポリシー)の「ユーザー権利の割り当て」から確認でき、グループポリシー（後述）はgpmc.msc（グループポリシーの管理）の「ユーザー権利の割り当て」から確認できる。

ローカルセキュリティポリシー

各マシンローカルなセキュリティ設定はローカルセキュリティポリシーと呼ばれ、secpol.mscツールを使えばアカウントに対してどのような特権・権利が与えられているかを確認できる。

セキュリティポリシーテンプレート

なお、Windows ServerにはセキュリティポリシーテンプレートというGPOの雛形が
%SystemRoot%\Security\Templates
に複数置いてあるので、必要に応じてテンプレートの中身を書き換えて自組織の環境用にカスタマイズした上でテンプレートをGPOに読み込む事で容易にポリシーを設定できる。

AppLocker

AppLockerはアプリケーションの実行の許可・不許可を設定できるツールである。具体的には、「「実行可能ファイル（EXE）」「Windowsインストーラ・ファイル」「スクリプト」「DLL」の各カテゴリに対して、それぞれ「ファイルのパス」「ハッシュ値」「発行元（デジタル署名）」を設定し、これに「許可」「拒否」「例外」という3種類のルールが適用できる」。「AppLockerによるプログラムの実行制御は、ローカル・セキュリティ・ポリシーかグループ・ポリシーを使って行う」。
またApplockerでは「規則の実施」か「監査のみ」を選ぶことができ、前者を選ぶと実行の許可・不許可がAppLockerにより制御されるが、後者を選んだ場合には、AppLockerは実行を制御せず、実行結果がログに記載されるのみである。

Security Compliance Toolkit

Security Compliance Toolkitはマイクロソフト内外の専門家のフィードバックに基づいてベストプラクティスをまとめたセキュリティベースラインで、マイクロソフトが過去に公開していたベストプラクティス集Security Compliance Managerを置き換えるものである。各セキュリティ分野別の推奨設定がスプレッドシート形式で記載されており、分析テスト機能を使うと必要なGPO、テンプレート、クライアントインストールスクリプトが入手できる。
またSecurity Compliance Toolkitのページから、マイクロソフトのポリシーアナライザツールや、ローカルWindowsポリシーを管理する「Local Group Policy Object Utility」もダウンロードできる」。

BitLocker

BitLockerはディスク全体を暗号化することができるセキュリティ機能。他のPCにディスクを接続されても、中身を読むことはできない。コンピューターにTrusted Platform Module(TPM)が搭載されていれば、それを使用して暗号化を行う。BitLocker To GoはUSBメモリなどのリムーバブル・ディスクの暗号化を行える。

Encrypting File System

Encrypting File System(EFS)はNTFSバージョン3.0で追加された機能で、ファイルシステムレベルでの暗号化を提供する。この技術はコンピューターに物理的にアクセスする攻撃者から機密データを保護するために、ファイルの透過的暗号化を実現する。

更新プログラムの適用

マイクロソフトでは、自社が提供するWindows、Microsoft Officeなどのソフトウェアの更新プログラム（パッチ）、およびデバイスドライバのダウンロードと更新を行うためサービスであるWindows Updateを提供している。
個人用の端末の場合には、マイクロソフトが提供するWindows Updateのサイトから直接更新プログラムを入手するが、企業などではWSUSという中間サーバを社内に立て、WSUSが代表してマイクロソフトから更新プログラムを取り寄せ、各社員の端末はWSUSから更新プログラムを取り寄せる構成にするケースも多い。このような構成を取る目的は、企業の側が社員のPCにおける更新プログラムの適用状況を把握したり、マイクロソフトからの更新プログラムのダウンロードによる通信帯域の圧迫を避けたりする事にある。
Window UpdateやWSUSはバックグラウンドでBITS（Background Intelligent Transfer Service、バックグラウンド インテリジェント転送サービス）という仕組みを用いている。これはアイドル中のネットワーク回線の帯域幅を使用し、非同期にマシン間のファイル転送を行う事を可能にする。

WSUS

WSUS（読みはダブルサス。Windows Server Update Services、ウィンドウズサーバーアップデートサービス）は、更新プログラムやデバイスドライバなどの適用制御用のサーバ・アプリケーションである。
クライアントPCは、グループポリシーまたはレジストリによって指定されたWSUSサーバに対して、指定された時間間隔（既定値は約22時間間隔）でアクセスしてローカルにダウンロードし、「自動更新」コンポーネントに表示する。なおダウンロードのタイミングは指定できない。
またユーザがクライアントPCにログインしていなくてお更新プログラムのダウンロードや適用を行うよう設定可能である。
更新プログラムの適用が完了すると、クライアントPCは適用ステータスをWSUSサーバ（グループポリシー設定での名称は「イントラネット統計サーバ」）に報告する。WSUSサーバでは、このステータス報告をもとに更新プログラムやクライアントPCごとのレポートを作成する。
更新プログラムのダウンロードはBackground Intelligent Transfer Service (BITS) が実行しており、利用可能なネットワーク帯域に応じて回線がパンクしないように、また更新データの配布によって回線を独占し、ネットワークが使用不可になるような状況にならないように、通信量が自動的に調整される。

クライアントPCのグループ分け

WSUSでは、クライアントPCを「コンピュータ・グループ」という任意の管理グループに分類して、グループ毎に更新プログラムの承認を行う事が可能である。コンピュータ・グループの登録とグループ分けは、管理画面で管理者が手動で行うか、グループポリシーまたはレジストリによってクライアントPCに対して設定することで行う。
コンピュータ・グループによって、きめ細かな更新プログラムの適用管理が可能になる。例えば、更新プログラムをまず適用試験用のPCに適用して評価を行い、安全を確認した後に一般のクライアントPCに対して配布する、といった適用制御が容易に可能になる。

復元

Windowsには「システムの復元」という機能が備わっており、システムに不具合が生じたとき、過去に作成した復元ポイントまでシステムの状態を巻き戻す事ができる。「システムの復元」で復元されるのは具体的には、OSの重要ファイル、レジストリ、設定、アプリケーションやデバイスドライバーの追加・変更などである。
またWindows 10の「更新とセキュリティ」には「このPCを初期状態に戻す」という機能がついており、初期状態にリセットできる。

Control flow guard

CFI(Control-Flow integrity)技術の一つ。インストラクション ポインタの制御を奪う攻撃に対策するため、「コンパイル時にIndirect Call(call eaxなど)を精査して、正当な呼び出しだけを「ホワイトリスト化」したうえで、呼び出し先アドレスにチェックするための関数を挿入する」。

Dynamic Lock

ユーザが所有しているスマートフォンとBluetoothをあらかじめペアリングしておくと、Bluetoothの電波強度を測り、ユーザ（が持っているスマートフォン）がPCから離れるとおよそ1分後に、自動で画面ロックがかかる。