入力と出力
PAMスクリプトに渡される入力パラメータ
概要
入力
history -c && echo "BASE64==......" | /path/to/script.sh"BASE64==......" | .\script.ps1; Clear-Historyキー
説明
records フィールドに関する追加情報
records フィールドに関する追加情報出力
メソッド
説明
エラー
注意事項
最終更新
PAMスクリプトに渡される入力パラメータ
PAMレコードの認証情報のローテーションが成功すると、関連レコード、認証情報、ユーザーに関する情報を含むパラメータとともに、添付されたポストローテーションスクリプトが実行されます。
KeeperゲートウェイでPAMスクリプトが実行され、stdinパラメータを通じてスクリプトへ入力が渡されます。これらのパラメータはBase64エンコードされたJSONオブジェクトとしてスクリプトへパイプされます。
たとえば、Linuxマシン上ではKeeperゲートウェイにより、スクリプトは概ね以下のように実行されます。
history -c && echo "BASE64==......" | /path/to/script.shWindowsでは以下のとおりです。
"BASE64==......" | .\script.ps1; Clear-HistoryこのBase64エンコードされたJSONオブジェクトには、以下のキーが含まれます。
providerRecordUid
PAM構成レコードのUID
resourceRecordUid
PAMリソースレコードのUID
userRecordUid
PAMユーザーレコードのUID
newPassword
ユーザー向けに新しく生成されたパスワード
oldPassword
ユーザーの以前のパスワード
user
ユーザーのユーザー名
records
レコードディクショナリのBase64エンコード済みJSON配列
records フィールドに関する追加情報records キーの値は、レコードディクショナリのBase64エンコード済みJSON配列です。この配列には以下が含まれます。
PAM構成情報
関連するPAMマシン、PAMデータベース、PAMディレクトリのレコードデータ
ポストローテーションスクリプトのアップロード時に指定された追加レコード
ユーザーレコードデータ
各ディクショナリオブジェクトには以下が含まれます。
uid - ボルトレコードのUID
title - ボルトレコードのタイトル
ディクショナリの残りは、レコードデータのキー/値ペア。キーはフィールドのラベル (ラベルがない場合はフィールドタイプ)。同一キーが存在する場合は、キー名に番号が付与される
PAMスクリプトの実行後、実行された各スクリプトに対応する RotationResult インスタンスの配列が返されます。RotationResult クラスには以下の属性があります。
uid - スクリプトが添付されたKeeperボルトレコードのUID
command - シェルへ発行されたコマンド
system - スクリプトの実行先オペレーティングシステム
title - Keeperボルトレコードに添付されたスクリプトファイルのタイトル
name - Keeperボルトレコードに添付されたスクリプトの名前
success - スクリプト実行の成否
LinuxおよびmacOS: リターンコード0
Windows: Trueステータス
stdout - スクリプト実行結果の標準出力
stderr - スクリプト実行結果の標準エラー
スクリプト実行の成否は、以下のメソッドでも判定できます。
was_failure
ブール値。失敗時 True、成功時 False
was_success
ブール値。成功時 True、失敗時 False
これを利用して、ログ出力をカスタマイズできます。
RotationResult クラスには、スクリプト実行時のエラーを記録する stderr 属性があります。
ポストローテーションスクリプトの結果と情報は RotationResult クラスから取得できますが、スクリプトのエラーと出力は実行シェルの種類によって異なります。スクリプトはユーザー側で制御されるため、Keeperはエラーの定義を把握できず、標準出力も標準エラーもチェックしません。
たとえば、BASHスクリプトに set -e が設定されていない場合、一部の処理が失敗してもスクリプトは続行されます。リターンコード 0 で終了した場合、スクリプトは成功扱いになります。
そのため、スクリプトの出力とエラーの適切な処理は、ユーザー側の責任となります。
最終更新
for r in results:
if r.was_failure:
print(f"For record {r.uid}, the script {r.title} failed: {r.stderr}")
