概要
この記事では、対話型ログオン シナリオで認証メカニズム保証 (AMA) を使用する方法について説明します。
概要
AMA は、証明書ベースのログオン方法を使用してログオン中にユーザーの資格情報が認証されるときに、管理者が指定するユニバーサル グループ メンバーシップをユーザーのアクセス トークンに追加します。 これにより、ネットワーク リソース管理者は、ファイル、フォルダー、プリンターなどのリソースへのアクセスを制御できます。 このアクセスは、ユーザーが証明書ベースのログオン方法を使用してログオンするかどうかと、ログオンに使用する証明書の種類に基づきます。
この記事の内容
この記事では、ログオン/ログオフとロック/ロック解除の 2 つの問題シナリオについて説明します。 これらのシナリオにおける AMA の動作は "仕様による" ものであり、次のように要約できます。
- AMA は、ネットワーク リソースを保護することを目的としています。
- AMA は、ユーザーのローカル コンピューターの対話型ログオンの種類 (スマート カードまたはユーザー名/パスワード) を識別も適用もできません。 これは、対話型ユーザー ログオンの後にアクセスするリソースは、AMA を使用して確実に保護できないためです。
現象
問題シナリオ 1 (ログオン/ログオフ)
たとえば次のようなシナリオを考えてみます。
管理者は、ユーザーがセキュリティで保護された特定のリソースにアクセスするときにスマート カード (SC) ログオン認証を強制したいと考えています。 これを行うために、管理者は、すべてのスマート カード証明書で使用される発行ポリシー オブジェクト識別子の発行ポリシー オブジェクト識別子の「Windows Server 2008 R2 の AD DS の認証メカニズム保証のステップ バイ ステップ ガイドに従って AMA を展開します。
注: この記事では、この新しいマップされたグループを "スマート カード ユニバーサル セキュリティ グループ) と呼びます。
"対話型ログオン: スマート カードが必要" ポリシーがワークステーションで有効になっていません。 そのため、ユーザーは、ユーザー名やパスワードなどの他の資格情報を使用してログオンできます。
ローカルおよびネットワーク リソースにアクセスするには、スマート カードのユニバーサル セキュリティ グループが必要です。
このシナリオでは、スマート カードを使用してサインオンしたユーザーのみがローカル リソースとネットワーク リソースにアクセスできると想定します。 ただし、ワークステーションでは最適化/キャッシュされたログオンが可能なので、キャッシュされた検証ツールはログオン時に使用され、ユーザーのデスクトップのNTアクセストークンが作成されます。 そのため、現在のログオンの代わりに、以前のログオンのセキュリティ グループと要求が使用されます。
シナリオ例
注: この資料では、対話型ログオン セッションのグループ メンバーシップは、"whoami/groups" を使用して取得します。 このコマンドは、デスクトップのアクセス トークンからグループとクレームを取得します。
例 1
前のログオンがスマート カードを使用して実行された場合、デスクトップのアクセス トークンには、AMA によって提供されるスマート カード ユニバーサル セキュリティ グループが含まれます。 次のいずれかの結果が発生します。
- ユーザーは、スマート カードを使用してログオンします。 ユーザーは、ローカルのセキュリティ上重要なリソースに引き続きアクセスできます。 ユーザーは、スマート カードのユニバーサル セキュリティ グループを必要とするネットワーク リソースにアクセスしようとします。 これらの試行は成功します。
- ユーザーは、次の名前とパスワードを使用してログオンします。 ユーザーは、引き続きローカルのセキュリティ上重要なリソースにアクセスできます。 この結果は想定されていません。 ユーザーは、スマート カードのユニバーサル セキュリティ グループを必要とするネットワーク リソースにアクセスしようとします。 これらの試行は、期待どおりに失敗します。
使用例 2
以前のログオンがパスワードを使用して実行された場合、デスクトップのアクセス トークンには、AMA によって提供されるスマート カード ユニバーサル セキュリティ グループがありません。 次のいずれかの結果が発生します。
- ユーザーは、ユーザー名とパスワードを使用してログオンします。 ユーザーは、ローカルのセキュリティ上重要なリソースにアクセスできません。 ユーザーは、スマート カードのユニバーサル セキュリティ グループを必要とするネットワーク リソースにアクセスしようとします。 これらの試行は失敗します。
- スマート カードを使用してユーザーがログオンします。 ユーザーは、ローカルのセキュリティ上重要なリソースにアクセスできません。 ユーザーがネットワーク リソースにアクセスしようとする。 これらの試行は成功します。 この結果は顧客は予想していません。 そのため、アクセス制御の問題が発生します。
問題のシナリオ 2 (ロック/ロック解除)
たとえば次のようなシナリオを考えてみます。
- 管理者は、ユーザーがセキュリティで保護された特定のリソースにアクセスするときにスマート カード (SC) ログオン認証を強制したいと考えています。 これを行うために、管理者は、すべてのスマート カード証明書で使用される発行ポリシー オブジェクト識別子の発行ポリシー オブジェクト識別子の Windows Server 2008 R2 の AD DS の認証メカニズム保証ステップ バイ ステップ ガイドに従って AMA を展開します。
- "対話型ログオン: スマート カードが必要" ポリシーがワークステーションで有効になっていません。 そのため、ユーザーは、ユーザー名やパスワードなどの他の資格情報を使用してログオンできます。
- ローカルおよびネットワーク リソースにアクセスするには、スマート カードのユニバーサル セキュリティ グループが必要です。
このシナリオでは、スマート カードを使用してサインオンするユーザーだけがローカルおよびネットワーク リソースにアクセスできると想定します。 ただし、ユーザーのデスクトップのアクセス トークンはログオン中に作成されるため、変更されません。
シナリオ例
例 1
デスクトップのアクセス トークンに AMA によって提供されるスマート カードのユニバーサル セキュリティ グループがある場合、次のいずれかの結果が発生します。
- ユーザーは、スマート カードを使用してロックを解除します。 ユーザーは、ローカルのセキュリティ上重要なリソースに引き続きアクセスできます。 ユーザーは、スマート カードのユニバーサル セキュリティ グループを必要とするネットワーク リソースにアクセスしようとします。 これらの試行は成功します。
- ユーザーは、ユーザー名とパスワードを使用してロックを解除します。 ユーザーは引き続きローカルのセキュリティ上重要なリソースにアクセスできます。 この結果は想定されていません。 ユーザーは、スマート カードのユニバーサル セキュリティ グループを必要とするネットワーク リソースにアクセスしようとします。 これらの試行は失敗します。
使用例 2
デスクトップのアクセス トークンに AMA によって提供されるスマート カード ユニバーサル セキュリティ グループがない場合、次のいずれかの結果が発生します。
- ユーザーは、ユーザー名とパスワードを使用してロックを解除します。 ユーザーは、ローカルのセキュリティで保護されたリソースにアクセスできません。 ユーザーが、スマート カードのユニバーサル セキュリティ グループを必要とするネットワーク リソースにアクセスしようとします。 これらの試行は失敗します。
- ユーザーはスマート カードを使用してロックを解除します。 ユーザーは、ローカルのセキュリティ上重要なリソースにアクセスできません。 この結果は想定されていません。 ユーザーがネットワーク リソースにアクセスしようとする。 これらの試行は期待どおりに成功します。
追加情報
「現象」セクションで説明されている AMA とセキュリティ サブシステムの設計のため、ユーザーは、AMA が対話型ログオンの種類を確実に識別できない次のシナリオを経験します。
ログオン/ログオフ
高速ログオンの最適化がアクティブな場合、ローカル セキュリティ サブシステム (lsass) はローカル キャッシュを使用して、ログオン トークンでグループ メンバーシップを生成します。 これにより、ドメイン コントローラー (DC) との通信が不要になります。 したがって、ログオン時間が短縮されます。 これは非常に望ましい機能です。
ただし、この状況では、次の問題が発生します。SC ログオンと SC ログオフの後、ローカルにキャッシュされた AMA グループが、ユーザー名/パスワードの対話型ログオン後にユーザー トークンに正しく存在しません。
メモ
- この状況は、対話型ログオンにのみ適用されます。
- AMA グループは、他のグループと同じ方法と同じロジックを使用してキャッシュされます。
この状況で、ユーザーがその後ネットワーク リソースにアクセスしようとすると、リソース側でキャッシュされたグループ メンバーシップは使用されず、リソース側のユーザーのログオン セッションには AMA グループが含まれません。
この問題は、高速ログオンの最適化 ("システム > ログオン>コンピューターの構成>管理用テンプレート>コンピューターの起動とログオン時に常にネットワークを待機する") をオフにすることで修正できます。
重要: この動作は、対話型ログオン シナリオでのみ関連します。 ログオンの最適化が不要なので、ネットワーク リソースへのアクセスは期待どおりに機能します。 そのため、キャッシュされたグループ メンバーシップは使用されません。 DC は、最新の AMA グループ メンバーシップ情報を使用して新しいチケットを作成するように連絡されます。
ロック/ロック解除
たとえば次のようなシナリオを考えてみます。
ユーザーはスマート カードを使用してインタラクティブにログオンし、AMA で保護されたネットワーク リソースを開きます。
注: AMA で保護されたネットワーク リソースには、アクセス トークンに AMA グループを持つユーザーのみにアクセスできます。
ユーザーは、以前に開いた AMA で保護されたネットワーク リソースを閉じずにコンピューターをロックします。
ユーザーは、スマート カードを使用して以前にログオンしたのと同じユーザーのユーザー名とパスワードを使用してコンピューターのロックを解除します。
このシナリオでは、コンピューターのロックが解除された後も、ユーザーは AMA で保護されたリソースに引き続きアクセスできます。 この動作は仕様です。 コンピューターのロックが解除されたときに、Windows はネットワーク リソースを持っていたすべての開いているセッションを再作成しません。 また、グループ メンバーシップは再確認されません。 これは、これらのアクションにより許容できないパフォーマンス ペナルティが発生する可能性があるためです。
このシナリオに対するすぐに使用できるソリューションはありません。 1 つの解決策は、SC ログオンとロックの手順が発生した後にユーザー名/パスワードプロバイダーを除外する資格情報プロバイダー フィルターを作成することです。 資格情報プロバイダーの詳細については、次のリソースを参照してください。
ICredentialProviderFilter インターフェイス
Windows Vista 資格情報プロバイダーのサンプル 注: この方法が正常に実装されたかどうかを確認することはできません。
AMA の詳細
AMA は、対話型ログオンの種類 (スマート カードまたはユーザー名/パスワード) を識別も適用もできません。 この動作は仕様です。
AMA は、ネットワーク リソースがスマート カードを必要とするシナリオを対象としています。 ローカル アクセス用に使用するためのものではありません。
動的グループ メンバーシップを使用したり、AMA グループを動的グループとして処理したりする機能など、新機能を導入してこの問題を解決しようとすると、重大な問題が発生する可能性があります。 これが、NT トークンが動的グループ メンバーシップをサポートしない理由です。 システムで実際にグループのトリミングが許可されている場合、ユーザーは自分のデスクトップやアプリケーションを操作できなくなる可能性があります。 したがって、グループ メンバーシップはセッションの作成時にロックされ、セッションを通じて維持されます。
キャッシュされたログオンも問題になります。 最適化されたログオンが有効になっている場合、LSASS はネットワーク ラウンド トリップを呼び出す前にまずローカル キャッシュを試行します。 ユーザー名とパスワードが前回のログオンで lsass が確認したものと同じである場合 (これはほとんどのログオンに当てはまります)、lsass は、ユーザーが以前持っていたのと同じグループ メンバーシップを持つトークンを作成します。
最適化されたログオンがオフになっている場合は、ネットワーク ラウンドトリップが必要になります。 これにより、グループ メンバーシップがログオン時に期待どおりに機能するようになります。
キャッシュされたログオンでは、lsass はユーザーごとに 1 つのエントリを保持します。 このエントリには、ユーザーの以前のグループ メンバーシップが含まれます。 これは、LSASS が確認した最後のパスワードまたはスマート カード資格情報の両方によって保護されます。 両方で同じトークンと資格情報キーがアンラップされます。 ユーザーが古い資格情報キーを使用してログオンしようとすると、DPAPI データ、EFS で保護されたコンテンツなどが失われます。 したがって、キャッシュされたログオンでは、ログオンに使用されるメカニズムに関係なく、常に最新のローカル グループ メンバーシップが生成されます。