入力と出力

PAMスクリプトに渡される入力パラメータ

概要

PAMレコードの認証情報のローテーションが成功すると、関連するレコード、認証情報、ユーザーに関する情報を含むパラメータを使用して、添付されたポストローテーションスクリプトが実行されます。

入力

KeeperゲートウェイでPAMスクリプトが実行され、stdinパラメータを介してスクリプトに入力を渡します。これらのパラメータはBase64でエンコードされたJSONオブジェクトに配置され、スクリプトにパイプされます。

たとえば、KeeperゲートウェイではLinuxマシン上で以下のようにスクリプトが実行されます。

history -c && echo "BASE64==......" | /path/to/script.sh

ウィンドウズでは以下となります。

"BASE64==......" | .\script.ps1; Clear-History

このbase64でエンコードされたJSONオブジェクトには以下のキーが含まれています。

キー
説明

providerRecordUid

PAM設定レコードのUID

resourceRecordUid

PAMリソースレコードののUID

userRecordUid

PAMユーザーレコードのUID

newPassword

ユーザー向けに新しく生成されたパスワード

oldPassword

ユーザーの古いパスワード

user

ユーザーのユーザー名

records

Base64エンコードされたレコードディクショナリのJSON配列

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を返します

これにより、ログ出力をカスタマイズできます。

Pythonでの例
for r in results:
    if r.was_failure:
        print(f"For record {r.uid}, the script {r.title} failed: {r.stderr}")

エラー

RotationResultクラスには、スクリプトの実行によるエラーをログに記録するstderr属性があります。

注意事項

ポストローテーションスクリプトの結果と情報は、RotationResultクラスで取得できますが、スクリプトのエラーと出力は、スクリプトが実行されるシェルの種類によって異なります。Keeperには、ユーザーが制御するスクリプトのエラー定義の情報がないため、スクリプトの標準出力も標準エラーもチェックされません。

たとえば、BASHスクリプトにset -eが設定されていない場合、スクリプトの一部が失敗してもスクリプトは続行されます。スクリプトがリターンコード0で終了した場合、スクリプトは成功としてフラグが付けられます。

そのため、スクリプトの出力とエラーを適切な処理は、ユーザーに委ねられます。

最終更新