開発者のための、Windows Vista における新しいセキュリティ機能に関する概要
概要 : ネットワーク接続のユビキタス化に伴い、コンピューター セキュリティにとって悪夢のような状況が生じています。Microsoft Windows Vista™ (以前の Windows コード ネーム "Longhorn") は、基盤となるオペレーティング システムのセキュリティ向上に加え、開発者がより安全性の高いアプリケーションを作成し、システム管理者やエンド ユーザーのセキュリティに関する負荷を軽減するための高度な機能を提供します。
Windows Vista は、特に権限の問題に取り組んでいます。危険なソフトウェアは、通常、ユーザーがコンピューターを使用しているのと同じ権限レベルで動作しますが、ほとんどのユーザーは、既定の権限よりも高い権限を使用しています。つまり、危険なソフトウェアは、往々にして、管理者権限を使用して動作していることになります。すべての操作を、必要な最小の権限を使用して行うことが、Windows Vista で重視されている点です。さらに Windows Vista は、アプリケーションの脆弱性を評価して報告するツールを備えています。また、ファイアウォールと危険なソフトウェアの対策ツールを、オペレーティング システムとセキュリティ センターに完全に統合するメカニズムも備えています。
目次 | .jpg) |
User Account Control
Windows Vista は、従来の Windows の権限モデルを変更して、ユーザーの意図しない操作、または許可するつもりのない操作を実行しようとするプログラムの起動を防ぎます。そのため、User Account Control (UAC) によって、ユーザーは最低レベルに近い権限でアプリケーションを実行できます。また必要であれば、より高い権限を必要とするアプリケーションを容易に実行できます。UAC を使用したアプリケーションを作成する場合は、権限指定モデルと標準 UAC 実行モデルの 2 つの重要な事項を検討する必要があります。
権限指定モデル
UAC では、管理者ログインに UAC トークンと完全な管理者トークンの 2 つのセキュリティ トークンを提供する新しいメカニズムによって、すでに Windows のログインで使用されているアクセス トークン システムが拡張されています。
アクセス トークンには、ログイン セッションのセキュリティ情報が含まれており、これによってユーザーおよびユーザーのグループと権限が識別されます。オペレーティング システムは、トークンを使用して、セキュリティ保護が可能なオブジェクトへのアクセスを制御し、ユーザーがローカル コンピューターでさまざまなシステム関連の操作を行う権限を制御します。UAC トークンは、UAC をサポートするシステム上で、Windows Vista ユーザーの既定のログイン権限を実行する場合に必要となる最小限の権限を定義する、特別な種類のアクセス トークンです。また、完全な管理者トークンは、管理者アカウントに許可される最大権限を保持しています。
UAC 実行モデル
トークン以外にも、UAC で動作するアプリケーションの基本実行モデルでは、UAC によって強化された既存のプロセス作成関数 (CreateProcess を呼び出す ShellExecute) を使用します。UAC 実行モデルには、次の 4 つの部分があります。
- AIS (Application Information Service) はシステム サービスの一つです。このサービスでは、最初にユーザーの承認を得てから (承諾ユーザー インターフェイスを使用)、権限を昇格し、昇格された権限を必要とするアプリケーションを起動します。その後でユーザーの完全なトークンを使用して、アプリケーションに対する新しいプロセスを作成します。
- 承諾ユーザー インターフェイスは、AIS によって起動され、システム権限によって動作します。このユーザー インターフェイスは、アプリケーションを完全なトークンで起動する場合に、ユーザーからの承認や資格情報を取得するためのものです。
- 「必要実行権限」は、起動時にどちらのトークン (UAC または完全) を使用するかを示すアプリケーション特性です。システムは、アプリケーションのマニフェストの requestedExecutionLevel を読み取るか、Windows Vista の AppCompat データベースのエントリを照会するか、Windows Vista のインストーラ検出テクノロジーを使用して、アプリケーションの必要実行権限を判定します。
- Windows Vista が提供する AppCompat データベースには、権限の昇格を必要とする一般的なレガシ アプリケーションに関する情報が含まれています。
UAC 準拠のアプリケーションの作成
Visual Studio ツールを使用してアプリケーションを開発する場合は、AppVerifier ツールを使用してコードが UAC に準拠しているかを分析します。ClickOnce と Windows Vista バージョンの MSI (Windows インストーラ) テクノロジーは、いずれも完全に UAC 準拠なので、インストーラの開発にあたっては、これらのテクノロジーの使用をお勧めします。
UAC 準拠とは、最小権限のことだということを念頭においてください。Windows XP または Windows Server 2003 で、アプリケーションが管理アカウント以外のアカウントで正しく動作している場合、Windows Vista でも問題は生じません。
Windows Vista でアプリケーションが正しく動作することを確認するには、以下のように制限ユーザーとしてアプリケーションをテストします。
- バグを特定して修正し、UI を有効にして制限ユーザーとして実行します。
- 管理者権限がなくても UI が機能する場合、USER として UI を テストし、すべての操作が正しく機能することを検証します。
- UI が機能するのに管理者権限が必要な場合、UI を制限ユーザーとしてテストし、起動の前に UI が権限を昇格するよう要求することを検証します。
アプリケーションが、ユーザーが管理者か制限ユーザーかによって異なる機能を提供する場合、アプリケーションの管理機能に対してさまざまなアクセスを行ってテストする必要があります。
ページのトップへ
セキュリティ設定ウィザード
Windows Vista では、ロールに応じたセキュリティ設定ウィザード (SCW) の拡張機能が作成できるので、セキュリティ設定ウィザード拡張機能が付属したサーバー ソフトウェアを提供することによって、ユーザーがサーバーを保護しながら、サードパーティのソフトウェアを正しく実行できます。このため、ロールに応じた SCW の拡張機能を新しく作成すると、サーバーのロール (サービス、ポート、機能) に応じて、自動生成したセキュリティ ポリシーによってシステムの機能をロック ダウンできます。
ページのトップへ
ネットワーク アクセス保護フレームワーク
Windows Vista では、特に移動コンピューティングとポータブル デバイスの接続をサポートするネットワークで、ネットワークの状態とセキュリティを保証するために、ネットワーク アクセス保護 (NAP : Network Access Protection) フレームワークが提供されています。NAP を使用すると、指定されたアクセス権をネットワーク クライアントに付与する前に、ネットワーククライアントに対してその身元およびネットワークとの互換性の証明を求めるポリシーをシステム管理者が定義して適用できます。クライアント システムは、完全なアクセス権を付与されるか、ネットワークの制約されたサブセクションに配置されて、制限されたアクセス権のみを付与されます。
開発者は API レベルのアクセス権を使用して NAP にアクセスし、WFP (Windows Filtering Platform) を使用して、次のようにユーザーと管理者セキュリティの作業負荷を軽減します。
- ファイアウォールと NAT 横断をサポートするアプリケーション固有のセキュリティ設定を行います。
- データ伝送のより詳細な (最大でパケット レベルの) スクリーニングを許可します。
- 完全にインストールし、実行中のシステムに統合する前に、新しいツールとその設定を隔離して確認します。
NAP に参加するネットワーク アクセス クライアント ソフトウェアおよびネットワーク アクセス サーバーは、適切な状態のシステムのみが、ネットワークにログインできることを保証します。不適切な状態のシステムは、制約された VLAN に配置されて修正されることによって、ネットワーク上に位置付けられます。
ページのトップへ
まとめ
Windows Vista は、中核のオペレーティング システム自体のセキュリティの向上に加えて、作成するアプリケーションのセキュリティを開発者が強化できる強力な機能を提供しています。このような機能には、UAC、セキュリティ設定ウィザード、ネットワーク アクセス保護フレームワークがあります。Windows Vista のリリースに備えて用意されたアプリケーションでは、これらの機能を利用することにより、ユーザーの安全を保護しながら、アプリケーションが円滑に実行されるように維持できます。