
こんにちはHabr! 管理者権限なしでWindowsセキュリティログにアクセスする方法をcatで読んでください。 これは、Windowsログに関連するHabréの最初の記事ではなく、おそらく最も独創的な記事ではありませんが、私の意見では、一般ユーザーとしてログを読み取るための簡単なソリューションの検索に時間を費やしすぎたため、「私の成功事例」を共有することにしました。
また、
Powershellの速度を
Get-WinEventおよび
Get-EventLogコマンドレットと比較する
必要がありました。
カットされているものはすべてWindows Server 2008R2 / 2012R2、Windows 10 Pro(1809)に関連しています。他のバージョンではチェックしませんでした。状況は2016年と2019年の製品と同様だと思います。
そのため、デフォルトでは、平均的なユーザーにはセキュリティログを読み取る権限がありません。
ログを取得しようとすると、エラーが発生します。

また、
イベントビューアーからのアクセスも拒否されます。

ショータイム
ユーザーをローカル
イベントログリーダーグループに追加します。

次に、
MACHINE \ System \ CurrentControlSet \ Services \ Eventlog \ Securityレジストリブランチに読み取り権限を付与します。

このレジストリブランチの権限を変更しないと、セキュリティログのパラメーターを読み取ることができないため、ログファイルの場所と名前を見つけることはできません。
セキュリティ 、これは、ルートからアクセス権を継承しない
Eventlogサービスの唯一のセクションです。
これは、
MACHINE \ System \ CurrentControlSet \ Services \ Eventlogの権限がどのように見えるかです。
Get-WinEventコマンドレットと
Get-EventLogコマンドレットの両方が機能することを確認してください!
後で、これらのコマンドレットの比較に戻ります...

監査とセキュリティログを管理する
ユーザーにログをクリアする権限を付与する必要がある場合は、グループポリシーを編集する必要があります。 ユーザーまたはユーザーのグループは、
監査とセキュリティログの管理アクセス許可を追加
する必要が
あります 。
このグループは、
コンピューターの構成\ Windowsの設定\セキュリティの設定\ローカルポリシー\ユーザー権利の割り当てにあります。
監査とセキュリティログの管理について詳しくは、
こちらをご覧ください。このポリシー設定は、ファイル、Active Directoryオブジェクト、レジストリキーなどの個々のリソースに対してオブジェクトアクセス監査オプションを指定できるユーザーを決定します。 これらのオブジェクトは、システムアクセス制御リスト(SACL)を指定します。 このユーザー権利が割り当てられているユーザーは、イベントビューアーでセキュリティログを表示およびクリアすることもできます。 オブジェクトアクセス監査ポリシーの詳細については、「オブジェクトアクセスの監査」を参照してください。
私たちはチェックし、すべてが約束どおりに機能し、ログがきれいになった...

権利をきれいにする他のロジックはありません。
正直なところ、ユーザーにセキュリティログをクリーンアップする権限を付与する必要があるシナリオは思いつきませんが、そのような機会があります。Get-WinEvent VS Get-EventLog
これら2つのコマンドレットを比較します
イベントログを取得説明:
Get-EventLogコマンドレットは、ローカルコンピューターとリモートコンピューターのイベントとイベントログを取得します。
コマンドレットのパラメーターとプロパティ値を使用して、イベントを検索できます。 このコマンドレットは、指定されたプロパティ値に一致するイベントを取得します。
EventLog名詞を含むコマンドレットは、従来のイベントログでのみ機能します。 Windows Vista以降のWindowsバージョンでWindowsイベントログテクノロジを使用するログからイベントを取得するには、Get-WinEventを使用します。
Get-WinEvent説明:
Get-WinEventコマンドレットは、システムログやアプリケーションログなどのクラシックログや、Windows Vistaで導入されたWindowsイベントログテクノロジによって生成されたイベントログなど、イベントログからイベントを取得します。 また、Windowsのイベントトレース(ETW)によって生成されたログファイルでイベントを取得します。
パラメーターを指定しない場合、Get-WinEventコマンドはコンピューター上のすべてのイベントログからすべてのイベントを取得します。 コマンドを中断するには、CTRL + Cを押します。
Get-WinEventは、イベントログとイベントログプロバイダーも一覧表示します。 選択したログまたは選択したイベントプロバイダーによって生成されたログからイベントを取得できます。 また、単一のコマンドで複数のソースからのイベントを組み合わせることができます。 このコマンドレットを使用すると、XPathクエリ、構造化されたXMLクエリ、および単純化されたハッシュテーブルクエリを使用してイベントをフィルター処理できます。
説明によれば、
Get-WinEventは
WIndows Vistaに登場した多数のログを
処理でき
ます 。
明確にするために、これらのコマンドレットが機能するリストを以下に示します
; Get-WinEventの出力を停止し
ました 。

ただし、パフォーマンスの問題、クエリ実行時間の比較という1つのことがあります。
Get-WinEventの実行時間は驚く
ばかりです。Applocationand Securityログのエントリ数に注意してください。イベントの数はほぼ同じ3400〜3600ですが、実行時の差はほぼ20倍です。
Get-WinEventは、
アプリケーションイベントを読み取るのに52秒の
Get-EventLogに対して127秒
かかります。
そして、チェックメイト、
Get-WinEventは、
セキュリティイベントを読み取るために45秒の
Get-EventLogに対して2020秒
かかります。
同じコマンドをローカルで実行する場合、すべてがそれほど悪くはありませんが、ローカルで
Get-EventLogは
Get-WinEventの 50倍のセキュリティログで動作します

コード
4624でイベントを受信するもう少し意味のあるもう1つの例
アカウントが正常にログオンしました 。

私が言えることは、数字は嘘をつかないことです...
DCイベントログへの管理者以外のアクセス
結論として、ドメインコントローラーのセキュリティログにアクセスするというトピックは残しました。
上記のすべては、いくつかの修正を加えたドメインコントローラーにも関連しています。
1-
イベントログリーダーグループは、
ビルトインセキュリティプリンシパルオブジェクトにあります。

このグループにユーザーを追加することにより、ドメインコントローラーに読み取りアクセス許可のみを付与します。
また、各ドメインコントローラで、レジストリブランチ
MACHINE \ System \ CurrentControlSet \ Services \ Eventlog \ Securityを読み取るためのアクセス許可を与える必要があることを忘れないでください。
以下に例を示します。メンバーサーバーのログを読み取る権限がありません。ドメイン内の他のマシンからログを読み取る必要がある場合、グループポリシーを使用してユーザーまたはユーザーグループをローカル
イベントログリーダーグループに追加します。

2-ログをクリアする権限を追加するには、
デフォルトドメインコントローラポリシーを編集する必要があります。
3-ドメインコントローラー上のユーザーに代わってタスクを起動できるようにするには、
既定のドメインコントローラーポリシーを編集し、ユーザーに
バッチジョブとしてログオンする権限を与える必要もあります。
4-デフォルトのドメインポリシーを編集するときは、十分に注意してください!
PS
私を助けたリソースの短いリスト:
私の意見では、トピックがWindowsログに関連するHabrに関する有用な出版物:
終わり