Windows Communication Foundation (WCF) で作成されたアプリケーションは、セキュリティ イベント (成功、失敗、またはその両方) を監査機能と共にログに記録できます。 イベントは Windows システム イベント ログに書き込まれ、イベント ビューアーを使用して調べられます。
監査を使用すると、管理者は既に発生した攻撃や現在進行中の攻撃を検出できます。 また、開発者がセキュリティ関連の問題をデバッグする際にも役立ちます。 たとえば、認証またはポリシー チェックの構成エラーによって承認済みユーザーへのアクセスが拒否された場合、開発者は、イベント ログを検査することによって、このエラーの原因をすばやく発見し、取り出すことができます。
WCF セキュリティの詳細については、「セキュリティの概要」を参照してください。 WCF のプログラミングの詳細については、「 基本的な WCF プログラミング」を参照してください。
監査レベルと動作
2 つのレベルのセキュリティ監査が存在します。
呼び出し元が承認されるサービス承認レベル。
WCF がメッセージの有効性を確認し、呼び出し元を認証するメッセージ レベル。
監査 の動作と呼ばれる、成功または失敗の両方の監査レベルを確認できます。
監査ログの場所
監査レベルと動作を決定したら、自分 (または管理者) が監査ログの場所を指定できます。 3 つの選択肢は、既定、アプリケーション、セキュリティです。 Default を指定する場合、実際のログは、使用しているシステムと、システムがセキュリティ ログへの書き込みをサポートしているかどうかによって異なります。 詳細については、このトピックで後述する「オペレーティング システム」セクションを参照してください。
セキュリティ ログに書き込むには、 SeAuditPrivilege
が必要です。 既定では、この権限を持つのはローカル システム アカウントとネットワーク サービス アカウントのみです。 セキュリティ ログ関数の read
と delete
を管理するには、 SeSecurityPrivilege
が必要です。 既定では、管理者のみがこの特権を持っています。
これに対し、認証されたユーザーはアプリケーション ログの読み取りと書き込みを行うことができます。 Windows XP では、既定で監査イベントがアプリケーション ログに書き込まれます。 ログには、認証されたすべてのユーザーに表示される個人情報を含めることもできます。
監査エラーの抑制
監査中のもう 1 つのオプションは、監査エラーを抑制するかどうかです。 既定では、監査エラーはアプリケーションに影響しません。 ただし、必要に応じてオプションを false
に設定すると、例外がスローされます。
プログラミング監査
監査動作は、プログラムまたは構成を使用して指定できます。
監査クラス
次の表では、監査動作をプログラムするために使用されるクラスとプロパティについて説明します。
クラス | 説明 |
---|---|
ServiceSecurityAuditBehavior | サービスとしての動作を監査するための設定オプションを有効にします。 |
AuditLogLocation | 書き込むログを指定する列挙。 使用できる値は、Default、Application、Security です。 [既定] を選択すると、オペレーティング システムによって実際のログの場所が決定されます。 このトピックで後述する「アプリケーションまたはセキュリティ イベント ログの選択」セクションを参照してください。 |
MessageAuthenticationAuditLevel | メッセージ レベルで監査されるメッセージ認証イベントの種類を指定します。 選択肢は、 None 、 Failure 、 Success 、および SuccessOrFailure です。 |
ServiceAuthorizationAuditLevel | サービス レベルで監査されるサービス承認イベントの種類を指定します。 選択肢は、 None 、 Failure 、 Success 、および SuccessOrFailure です。 |
SuppressAuditFailure | 監査が失敗した場合のクライアント要求の動作を指定します。 たとえば、サービスがセキュリティ ログへの書き込みを試みたが、 SeAuditPrivilege がない場合などです。
true の既定値は、エラーが無視され、クライアント要求が正常に処理されることを示します。 |
監査イベントをログに記録するようにアプリケーションを設定する例については、「 方法: セキュリティ イベントを監査する」を参照してください。
コンフィギュレーション
< behaviors>の下に<serviceSecurityAudit>を追加することで、構成を使用して監査動作を指定することもできます。 次のコードに示すように、 <behavior> の下に要素を追加する必要があります。
<configuration>
<system.serviceModel>
<behaviors>
<behavior>
<!-- auditLogLocation="Application" or "Security" -->
<serviceSecurityAudit
auditLogLocation="Application"
suppressAuditFailure="true"
serviceAuthorizationAuditLevel="Failure"
messageAuthenticationAuditLevel="SuccessOrFailure" />
</behavior>
</behaviors>
</system.serviceModel>
</configuration>
監査が有効で、 auditLogLocation
が指定されていない場合、既定のログ名は、セキュリティ ログへの書き込みをサポートするプラットフォームの "セキュリティ" ログです。それ以外の場合は"アプリケーション" ログです。 セキュリティ ログへの書き込みをサポートするのは、Windows Server 2003 および Windows Vista オペレーティング システムだけです。 詳細については、このトピックで後述する「オペレーティング システム」セクションを参照してください。
セキュリティに関する考慮事項
悪意のあるユーザーが監査が有効になっていることを認識している場合、その攻撃者は、監査エントリが書き込まれる原因となる無効なメッセージを送信する可能性があります。 この方法で監査ログが入力されると、監査システムは失敗します。 これを軽減するには、 SuppressAuditFailure プロパティを true
に設定し、イベント ビューアーのプロパティを使用して監査動作を制御します。
Windows XP のアプリケーション ログに書き込まれた監査イベントは、認証されたユーザーに表示されます。
アプリケーション イベント ログとセキュリティ イベント ログの選択
次の表は、アプリケーションまたはセキュリティ イベント ログにログインするかどうかを選択するのに役立つ情報を示しています。
オペレーティング システム
システム | アプリケーション ログ | セキュリティ ログ |
---|---|---|
Windows XP SP2 以降 | サポートされています | サポートされていません |
Windows Server 2003 SP1 と Windows Vista | サポートされています | スレッド コンテキストが所有している必要がある SeAuditPrivilege |
その他の要素
次の表では、オペレーティング システムに加えて、ログ記録の有効化を制御するその他の設定について説明します。
要因 | アプリケーション ログ | セキュリティ ログ |
---|---|---|
ポリシー管理の監査 | 適用されません。 | 構成と共に、セキュリティ ログはローカル セキュリティ機関 (LSA) ポリシーによっても制御されます。 [Audit object access]\(オブジェクト アクセスの監査\) カテゴリも有効にする必要があります。 |
既定のユーザー エクスペリエンス | 認証されたすべてのユーザーがアプリケーション ログに書き込むことができるため、アプリケーション プロセスに追加のアクセス許可ステップは必要ありません。 | アプリケーション プロセス (コンテキスト) には SeAuditPrivilege が必要です。 |