PR
Q

Windows Server 2003を運用していますが,イベント・ログのセキュリティ・ログについては,管理者権限のないセキュリティ担当の特定ユーザーに対しても閲覧する権限を与えたいと思っています。そのようなことは可能でしょうか?

A

Windows Server 2003のイベント・ログに関する設定は,レジストリの各イベント・ログの項目で管理します。セキュリティ・ログの場合は,HKEY_LOCAL_MACHINE\SYSTEM\Current-ControlSet\Services\Eventlog\Securityというキーで設定します(ちなみに,アプリケーション・ログの場合は最後のSecurityの部分がApplication,システム・ログは同様にSystemというキーに設定)。

 このキーにある[CustomSD]というレジストリ値に必要に応じてアクセス権限を追加します。この値はSecurityDescriptor Definition Language(SDDL)を使って記述します。アクセス権の追加設定に最低限必要なSDDLの構文は以下の通りです。

([ace_type];;[rights];;;[account_sid])

●[ace_type]:アクセス権限のタイプを設定。
  「A」は許可,「D」は拒否など。
●[rights]:アクセス権限の内容を設定。
  0x4=消去,0x2=書き込み,0x1=読み取りなどの論理和。
●[account_sid]:権限を設定するアカウントを設定。
 "AN"=Anonymousなど登録済みのものか,SIDを直接設定
  する。

 今回の場合,特定のユーザーに読み取りの権限を許可するので,既存の内容に「(A; ; 0x1 ; ; ;[該当するユーザーのSID])」という形で追記します。この設定が完了したら再起動します。なお,セキュリティ・ログでは,通常のユーザーやグループに対して書き込み権限は設定できません。

 SIDが分からない場合,WindowsServer 2003のドメイン環境ならば「dsget user[ユーザー識別名]-sid」コマンドを,グループの場合は「dsgetgroup」コマンドを同様の構文で,ワークグループ環境の場合は「whoami/all」コマンドを該当するユーザーの権限で実行します。なお,whoamiではそのユーザーおよび関連するグループのSIDを含む一覧が表示されます。

グループ・ポリシーで一斉適用可能
 ドメイン環境であれば,この設定をグループ・ポリシーで一斉適用させることも可能です。具体的には,該当するセキュリティ・オプションの内容を修正し,これをグループ・ポリシーの設定に適用する形になります。

 まずドメイン・コントローラにある「%SystemRoot%\inf\Sceregvl.inf」ファイルを,バックアップしてからテキスト・エディタで開きます。それから,表1に示した項目の内容を加え上書き保存します。続いて,コマンド・プロンプトから「regsvr32 scecli.dll」と実行し,[scecli.dllのDllRegisterServerは成功しました。]と表示されることを確認します。

表1●グループ・ポリシーに項目を追加するためにinfファイルに追加する項目

 次に,設定したいコンピュータが含まれるOUに対してグループ・ポリシーを通常の形で設定します。[コンピュータの構成]-[Windowsの設定]-[セキュリティの設定]-[ローカルポリシー]-[セキュリティオプション]内に[イベントログ:セキュリティログのセキュリティ記述子]という項目が存在することを確認し,ここに前述したレジストリと同じ設定をします(図3)。この際には,元々のレジストリ設定に追加の設定を加えた[すべての内容の記述子]を記入してください。追加の記述子のみを書いた場合は,正常に動作しません。

図3●システム・フォルダにあるSceregvl.infファイルに項目を追加すれば,グループ・ポリシーの画面にイベント・ログのアクセス権を設定する項目が追加される

 なお,これを応用すると自作したWebアプリケーションのログをWindowsアプリケーション・ログに記述させることも可能です。同じ要領で専用DLLを動作させるアカウント(例えば匿名アカウント)へ書き込み権限を与えれば実現できます。

 詳しくは,マイクロソフトのサポート技術情報「323076」を参考にしてください。

小鮒 通成