Windowsのスケジュールタスクのクレデンシャルをローテーション

概要

こちらの例では、Keeper PAMを介してパスワードをローテーションしているサービスアカウントとして実行されているWindowsのスケジュールタスクのクレデンシャルをローテーションします。

PowerShellスクリプトを使用

要件

これらのスクリプトを使用するには、対象のマシンでPowerShell 7が利用でき、Enable-PSRemotingでPowerShell 7によるリモート処理が使用できるようにセットアップする必要があります。

レコードからパラメータを抽出

ローテーションされるレコード内のデータは、BASE64でエンコードされたJSON文字列を介してスクリプトで利用できるようになります。スクリプトの実行が終了すると、Clear-Historyが実行され、今後のPowerShellセッションでレコードデータは利用できなくなります。

# The Gateway will execute your script as follows
"BASE64STRING==" | .\your-script.ps1; Clear-History

バッチファイルを使用

要件

以下の例のスクリプトを実行するには、対象サーバー上でRemote Procedure Call (RPC) サービスとWindows Management Instrumentationサービスが有効になっていて実行されている必要があります。

サービスアカウントの認証情報をローテーションするには、ユーザー (この場合はゲートウェイのユーザーアカウント) が対象マシンの管理者グループのメンバーである必要があります。つまり、ゲートウェイは、デフォルトのSYSTEMユーザーとして実行するのではなく、適切なレベルの特権が割り当てられたサービスアカウントとして実行する必要があります。

本例では一般的に使用されるツールであるjqを使用して、レコードデータを含むスクリプトに渡されるJSONデータを解析します。jqコマンドがインストール済みでPATHにあることを前提としています。

レコードからパラメータを抽出

ローテーションされるレコード内のデータは、BASE64でエンコードされたJSON文字列を介してスクリプトで利用できるようになります。

# The Gateway will execute your script as follows
"BASE64STRING==" | .\your-script.bat && echo ####RC %errorlevel%

最終更新