Windowsのセキュリティ機能

本稿ではWindowsのセキュリティ機能について記述する。本稿ではMicrosoft Windows本体のみならず、Active DirectoryやWSUSなどWindowsと連携するサーバソフト等が提供するセキュリティ機能も説明するものとする。

1. Windowsにおけるアカウント
-------------------

1.1. アカウントの種類
-------------

Windowsには以下の種類のアカウントがある：

これらのアカウントの情報の表示や設定は以下のコマンドで実行可能である：



1.2. アカウントの識別方法
---------------

1.2.1. SIDとGUID
---------------

Windowsの全てのユーザアカウント、コンピュータアカウント、グループアカウントのように認証やアクセス制御の対象となる主体の事をセキュリティプリンシパルといい、WindowsのセキュリティプリンシパルにはSID、GUIDという2つの固有識別子が割り振られている。

SID、GUIDはいずれもユーザアカウントを識別するためのものだが、以下のような特徴と違いがある。まずSIDはActive Directoryドメインで一意な識別子でアクセス制御などに使われる。SIDはユーザ名やコンピュータ名を変更してもSIDは変更されない。また異なる2つのマシンで同一のユーザ名のアカウントを登録した場合、それら2つのマシンのアカウントのSIDは互いに異なる。

しかしユーザの所属するドメインが変更になった場合はSIDも変更になる。そこでドメインが変更になってもアカウントを一意に識別できるように作られたのがGUIDである。

1.2.2. アクセストークンとUID
-------------------

各ユーザアカウントには、ユーザアカウントのSID、ユーザが属しているグループのSID、アクセス制御情報等を記述したアクセストークンが割り振られている。

ネットワーク経由でアクセスしてくるユーザーに対しては、アクセス トークンの代わりにUID が用いられる。アクセストークンの全情報をネットワークに流すのはセキュリティ上危険なので、アクセストークンから必要情報のみを抜き出したUIDを用いるのである。

1.3. ユーザアカウントの分類
----------------

1.3.1. 権限による分類
--------------

ユーザアカウントはそのアカウントが持つ権限により、以下の2つに分類される：

User：標準ユーザ
Administrator：特権ユーザUser、AdministratorはそれぞれUsersグループ、Administratorsグループに属している。なおWindows XPにはこの他にPower Userという区分が存在したが、Windows 7以降は廃止された。

またマシンを他のユーザに貸したりするときのためのGuestアカウントがあるが、Guestアカウントはセキュリティ上危険な事もあり、Windows 7以降はデフォルトでGuestアカウントはオフになっている。

Active Directoryではこれらの他に

Domain Administrator：ドメイン管理者
Enterprise Adiminstator：フォレスト管理者がある。

Windows 10ではユーザアカウントに家族という概念が導入されており、家族のアカウントには、保護者やお子様がある。保護者アカウントはお子様アカウントのPC 使用時間の制限、閲覧ウェブページの制限、アプリやゲームの年齢制限の設定、利用履歴の確認といったペアレンタルコントロールを行う事ができる。

1.3.2. アカウント管理場所による分類
---------------------

以下のように分類できる：

Windows 10以降は、マイクロソフトのシングルサインオンウェブサービスであるMicrosoft アカウントを使って自分が所有するマシンにサインインする事が可能になった。

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

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

2.1. ワークグループ
------------

ユーザ名を用いてアカウント管理を行う仕組みである。すなわち、あるマシンから別のマシンのリソースにアクセスする場合、アクセス元のマシンとアクセス先のマシンで同一のユーザ名が登録されており、しかもアクセス先に登録されているパスワードを打ち込めばアクセスが許可される。

クライアントWindowsではワークグループはユーザ数が20以下ないし10以下の場合しか利用できない。WindowsサーバやNASを使えばこの制限はない。

ワークグループはTCP/IPベースのNetBIOSにより通信を行っている。古いバージョンのWindowsではNetBEUIベースのNetBIOSでも通信できた。

2.1.1. 利用方法
-----------

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

さらに「ネットワークと共有センター」の「共有オプション」で「ネットワーク探索を有効にする」をチェックし、必要に応じ「ファイルとプリンターの共有を有効にする」もチェックする。

2.1.2. ゲストアカウント
---------------

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

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

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

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

NTドメインという単位でマシンやアカウントなどを管理する仕組み。ユーザアカウント、グループアカウント、システムポリシーが利用可能。「ドメインコントローラー」と呼ばれるサーバーでユーザアカウントやグループアカウントを一括管理しており、DCにアカウントがNTドメイン内でどのような権限を持つかを一度登録すればNTドメイン内の全てのマシンでこの登録情報が共有される。このためワークグループと違い、個々のマシンにユーザ登録する必要はない。

ただし、NTドメインやアカウント管理に階層構造がない事やアカウント数に上限があるといった欠点がある。

Active Directoryが登場したこともあり、Windows 2000以降は新規にNTドメインが利用される事はほとんどなくなった。

2.3. Active Directory
---------------------

Active Directoryはユーザ、グループ、およびコンピュータアカウントを管理するディレクトリサービスである。マイクロソフトはソフトウェアとしてADを提供しているのみならず、Azure Active Directoryとしてクラウド提供もしている。

ADはこれらのアカウントをActive Directoryドメインとしてまとめられる。さらに複数のドメインをツリー型の階層構造を持つドメインツリーとしてまとめられ、ドメイン・ツリー同士を結び合わせたフォレストを作る事ができる。Windows Server 2003以降ではフォレスト間の信頼関係も設定可能である。

企業を例に取ると、例えば以下のように上記分類を利用できる：

ドメイン：部署
ドメインツリー：関西支社といった拠点
フォレスト：企業全体各ドメインはドメインコントローラーというサーバで管理できる。ドメインコントローラーの主な役割は、ユーザアカウントを管理し、ユーザが自身の端末にログオンする際ADが管理しているユーザアカウント情報と照らし合わせてログオン認証することと、アカウントに特権・権利を認可する事である。

各ドメイン内のアカウントはOUという単位でまとめる事ができ、さらにOU内にOUをいれるなど階層的な管理も可能である。なお、OU毎に別の管理者を割り当て管理委任する事も可能である。

2.3.1. レプリケーション
---------------

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

2.3.2. 信頼関係
-----------

ドメイン内のアカウントの信頼関係はドメインコントローラーが制御する。
同一ドメイン・ツリー内の各ドメイン間には双方向かつ推移的な信頼関係が結ばれる。よってドメイン・ツリー内の他ののドメインのリソースへもアクセス可能になる。
同一フォレスト内の各フォレストツリーも双方向かつ推移的な信頼関係が結ばれている。
フォレスト間の信頼は、一方向の信頼関係も双方向の信頼関係も築ける。また信頼関係は推移的にも非推移的にもできる。なおデフォルトは双方向かつ推移的な信頼である。ただし、ドメインコントローラーのレプリケーションがフォレストをまたいで行われる事はない。

3. アクセス制御と監査
------------

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

3.1. NTFSのDACL
--------------

Windowsの標準ファイルシステムの一つであるNTFSではDACL(Discretionary Access Control List、随意アクセス制御Discretionary Access Controlは「任意アクセス制御」と訳される事が多いが、WindowsのDACLは「随意アクセス制御」と訳される：



3.1.1. 制御内容
-----------

「制御内容」として選択可能なのは以下の14種類である：「フォルダーのスキャンとファイルの実行」、「フォルダーの一覧／データの読み取り」、「属性の読み取り」、「拡張属性の読み取り」、「ファイルの作成／データの書き込み」、「フォルダーの作成／データの追加」、「属性の書き込み」、「拡張属性の書き込み」、「サブフォルダーとファイルの削除」、「削除」、「アクセス許可の読み取り」、「アクセス許可の変更」、「所有権の取得」、「同期」。

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

3.1.2. 適用先
----------

「適用先」に関しては、ACEを定義するのがファイルの場合はそのファイル自身が選択肢としてあるだけだが、ACLを定義するのがフォルダである場合は、そのフォルダに属するファイルやサブフォルダにACEの制御が継承されるか否かを決める必要がある。

ACEの継承関係は以下の3つのフラグでより規定される：

フラグが3つあるので、組み合わせは8通りあるが、フラグIOのみ立っているのは無意味なので、実際はこれを除いた7通りが選択肢となる。フォルダの「プロパティ」＞「セキュリティ」で表示されるGUIベースのAECの設定では、この7通りの選択肢が以下のように表示される：

なお、アクセス権を全て拒否したとしても、そのリソースの所有者とCREATE OWNERグループのメンバーはそのリソースのアクセス権を変更できる。

cacls、icacls、Get-ACLのようなCUIベースのコマンドの場合は、前述したOI、CI、IO以外にさらに2つのフラグが表示される：



3.1.3. その他のアクセス制御
-----------------

共有フォルダではNTFS DACLとは別のACLにより共有アクセスのアクセス権を制御しており、このACLで付与されたアクセス権を共有アクセス権という。共有アクセス権は「共有フォルダのプロパティ>共有>詳細な共有」で設定可能。共有アクセス権とNTFS DACLのアクセス権が競合している場合は両者とも許可の場合のみアクセスが許可される。
Windows Server 8では任意アクセス制御であるDACLの他に強制アクセス制御であるCentral Access Policyが実装されている。
AzureではAzure RBACというロールベースアクセス制御が導入されている。

3.2. WebDAV
-----------

WebDAVはマイクロソフトが開発したHTTP拡張で、「ファイル システムなどの格納媒体を HTTP 接続で使用可能にする、HTTP 1.1 規格の拡張機能」で、WebサーバのIISなどに実装されている。WebDEVでは以下のアクセス権を設定できる：

ディレクトリおよびファイルとそのプロパティの検索
ディレクトリおよびファイルとそのプロパティの作成、変更、削除、および参照
ファイルおよびディレクトリのカスタム プロパティの保存および検索
共同作業環境でのファイルのロック

3.3. AD環境のアクセス制御
----------------

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

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

グループアカウントには個々のマシンで管理するローカルグループと、Active Directoryで管理されるセキュリティグループとがあり、これらに加えて配布グループというメールアプリケーションでメールの配布先を指定したりする為のグループの種類がある。なおドメイングループと配布グループはActive Directoryに関するグループの種類であるので、ドメインアカウントしかグループメンバーに出来ない。

セキュリティグループと配布グループはその有効範囲によってドメインローカルグループ、グローバルグループ、ユニバーサルグループに分かれる。ドメインローカルグループはドメイン内でのみ参照可能である。これに対しグローバルグループとユニバーサルグループはいずれも他のドメイン、ドメインツリー、フォレスト全体から参照可能であるが、グローバルグループはメンバー追加に制限があり、追加できるのは同一ドメインのアカウントやグローバルグループのみである。ユニバーサルグループにはそのような制限はない。

3.3.2. AGUDLP
-------------

AGUDLPはAD環境においてロールベースアクセス制御を行うためのマイクロソフト推奨の方針である。ここでAGUDLPはAccount、Grobal group、Universal group、Domain Local group、Permissionの頭文字を集めたもので、これらを以下のように用いるとよいと推奨している：

規模がより小さい企業では上述したA、G、U、DL、Pを全て用意する必要はなく、AUP、AGLP、AGDLPなどにする。

3.4. 監査
-------

Windowsではユーザやプロセスの振る舞いを監査するため、監視者が予め指定した行為をユーザが行った場合には監査ログに記述する事ができる。

何を監査ログに書き込むのかは管理者が監査ポリシーとして事前にしてする必要がある。監査ポリシーは

コンピュータの構成\Windows の設定\セキュリティの設定\ローカル ポリシー \監査ポリシーで閲覧・設定が可能である。監査ポリシーに記述可能なイベントとしては
アカウントログオンイベント
アカウント管理イベント
Active Directoryのオブジェクトへのアクセスイベント
ポリシー変更
特権変更
プロセス追跡
システムイベントActive Directoryでは監査ポリシーはSACLとして記述される。

4. 認証とID連携
----------

4.1. Window 10へのサインイン方法
-----------------------

Window 10には以下の4通りのサインイン方法がある：

上記4種類のサインインのうち、PINは個々の端末にしか保管されない為、PINが漏洩しても攻撃者がユーザになりすまして他のPCからMicrosoft アカウントにサインインする事はできない。

またサインインの際、事前に指定した携帯電話やメール アドレスに送信されるセキュリティコードを入力する2 段階認証もできる。

4.2. Active Directoryにおける認証
---------------------------

Active Directoryはユーザ認証としてケルベロス認証Active Directoryのドメインがケルベロスのレルムと一致しており。ただし、NTLMは認証プロトコルそれ自身がセキュリティ上脆弱である事が知られているので、その利用は推奨されない。クライアント端末がWindows 7以降であればケルベロス認証に対応しているのでNTLM認証を停止可能である。

Azure ADは多要素認証にも対応している。

4.3. シングルサインオン
--------------

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

Active Directoryはケルベロス認証により、ドメイン内のシングルサインオンを実現する。ドメイン連携の仕組みやADFSというを使えば、ドメインの垣根を超えてシングルサインオンが可能になる。

Azure ADの場合はSAMLやOpenID Connectなどでシングルサインオンを実現している。

Azure ADはシングルサインオン機能のよりマイクロソフトを含む各社のクラウドアプリケーションと連携可能で、Azure AD経由でアクセス可能なクラウドアプリケーションは2000種類以上ある。

またWindow 10では事前にAzure ADにアカウントを登録しておくと、ユーザが端末にサインインしたときに透過的にAzure ADからも認証され、Azure ADの連携サービスにシングルサインオンできる。

4.3.2. Microsoft アカウントによるシングルサインオン
----------------------------------

Microsoft アカウントは、

マイクロソフトのウェブサイト
マイクロソフトのOSが載っているデバイス
マイクロソフトのソフトウェアにログインするためのシングルサインオンWebサービスである。OpenID、FIDO2をサポートしている。

4.4. Microsoft Identity Manager
------------------------------------

AD環境のAGUDLPではグループ管理が煩雑になる事を踏まえて作られたユーザープロビジョニングサービス。「ID統合」を行うためのサービスで、特に「「IDのライフサイクル管理を行う」ことで、管理者の作業・監査における省力化を目的」としている。下記のように、何度か名称が変更されている：



5. ポリシー管理・ポリシー制御
----------------

5.1. Windowsにおける権限
------------------

Windowsにおけるユーザ権限は、シャットダウンやバックアップなどマシン全体に関わる権限である特権とローカルログインなど個々のユーザに関する権限である権利に分かれる。

ユーザの特権・権利はsecpol.mscの「ユーザー権利の割り当て」から確認でき、グループポリシーはgpmc.mscの「ユーザー権利の割り当て」から確認できる。

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

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

5.3. グループポリシー
-------------

ADではグループポリシーという機能を用いて各ユーザアカウントの各端末における特権・権利を一括で設定できる。グループポリシーの管理はgpmc.mscツールを用いて管理できる。

各グループポリシーはGPO(グループポリシーオブジェクト）