PAM Workflow — セキュリティ強化

PAM Workflow — セキュリティ強化

本ページでは、PAMワークフローサブシステム向けにコマンダーへ組み込まれたセキュリティ修正を取り扱います。エンドユーザー向けのコマンド構文の変更はありません。デバッグログを有効にして運用する管理者や、厳格な強制適用ポリシーが必要な環境では、内容の把握が重要です。

対象バージョン: Keeperコマンダー17.3以降 (PR #2013 を含むリリースブランチ)


変更の概要

重大度
領域
変更内容

デバッグログにおける認証情報のマスク

turn_passwordcallback_token、guacdシークレットフィールドは、デバッグログへ書き込む前にマスクされる

エンタープライズのブール値強制適用

空の booleans=[] リストは、ウェブボルトと同様にアクションを正しく拒否する

pam workflow update のブール値フラグ

true / false 以外の値は暗黙の型変換を行わず、エラーとなる

HHMM時間範囲のデコード

時・分の抽出を正しく行うため、divmod(value, 60)divmod(value, 100) に修正


1. デバッグログにおける認証情報のマスク

背景

コマンダーを --debug で実行するか、Pythonの logging レベルを DEBUG に設定すると、内部状態が標準出力やログファイルへ書き込まれます。本修正以前は、WebRTC接続パラメーター ( turn_passwordcallback_token を含む) およびguacdトンネルパラメーター ( passwordprivate-keypassphraseclient-key を含む) がそのままログに記録されていました。

変更内容

ファイル: keepercommander/commands/pam_launch/terminal_connection.py

以下のフィールドは、いずれの logging.debug() 呼び出しの前に ***redacted*** に置き換えられます。

  • WebRTC設定: turn_passwordcallback_token

  • guacd接続パラメーター: passwordprivate-keypassphraseclient-key

その他のフィールド (機密性の低いホスト、ポート、プロトコル値) は変更なくログに記録されるため、デバッグの有用性は維持されます。

影響

通常運用時の動作変更はありません。デバッグレベルのログ出力に書き込まれる内容のみが対象です。コマンダーのログをSIEMへ取り込む管理者は、DEBUG ログイベントに認証情報の値が現れないことを確認できます。


2. 空のブール値強制適用リストに対する厳格な拒否

背景

エンタープライズの強制適用ポリシーは、Keeperバックエンドから booleans 配列を含むJSONオブジェクトとして配信されます。キーが存在しない場合 ( booleans が欠落) はポリシー未設定とみなし、コマンダーは防御的にアクションを許可します。空配列 ( booleans: [] ) は以前も同様に許可されていましたが、これは誤りでした。

ウェブボルトは booleans: [] を「エンタープライズコンテキストは存在するが、関連するポリシーキーは未設定」と解釈し、リストの空さではなくキーの欠落によって拒否します。コマンダーの動作はウェブボルトと一致していませんでした。

変更内容

ファイル: keepercommander/commands/workflow/helpers.pykeepercommander/commands/discoveryrotation.py

is_pam_action_allowed_by_enforcement_is_rotation_allowed_by_enforcement は、いずれも以下のロジックを用います。

影響

エンタープライズの強制適用ポリシーが構成されている環境では、booleans が存在するが空であった場合に以前は許可されていたアクションがブロックされることがあります。これにより、コマンダーの強制適用の扱いがウェブボルトと揃います。アップグレード後に想定外の拒否が発生した場合は、Keeper管理コンソールでエンタープライズの強制適用ポリシー構成を確認してください。


3. pam workflow update の厳格なブール値引数パーサー

背景

pam workflow update コマンドでは、複数のブール値フラグを指定できます。

以前は、真と評価される任意の文字列 ( yes1on など) が暗黙的に True に変換されていました。構成ミスが見過ごされる可能性がありました。

変更内容

ファイル: keepercommander/commands/workflow/config_commands.py

ブール値引数では、リテラル文字列 truefalse のみを指定できます (大文字小文字は区別しません)。それ以外の値を指定すると、明確なメッセージ付きで argparse.ArgumentTypeError が返されます。

以前 (受け付けていたが、現在は拒否):

現在 (受け付け):

影響

非標準のブール値文字列 ( yes1onno0off) を用いるスクリプトは、true または false へ更新する必要があります。コマンダーをアップグレードすると従来の引数値ではコマンドが失敗するため、既存の自動化は修正が必要です(後方互換性のない変更)。


4. HHMM時間範囲デコードの修正

背景

pam workflow config show は、ワークフローに構成された allowedTimes ウィンドウ、つまり pam launch が許可される曜日と時間帯を表示します。時間範囲の開始・終了値は、サーバー側でHHMM整数として保存されます (例: 17:301730)。

表示フォーマッターは、時と分の抽出に divmod(value, 60) を用いていました。これは秒から分への変換式としては正しいものの、HHMM整数には当てはまりません。 divmod(1730, 60) は正しい (17, 30) ではなく (28, 50) となります。

変更内容

ファイル: keepercommander/commands/workflow/helpers.py

影響

pam workflow config show に表示される許可時間ウィンドウが、正しい読みやすい時刻になります。実行時の動作は変わりません。表示出力のみが対象です。許可時間の表示で想定外の時・分が見えていた管理者は、意図どおりかワークフロー構成を再確認してください。


変更の確認

コマンダーをアップグレードした後、以下の手順でセキュリティ修正が有効になっていることを確認できます。

認証情報のマスク: デバッグログ ( --debug ) を有効にし、PAMトンネルセッションを開始します。出力に turn_passwordcallback_token、guacdの認証情報フィールドが ***redacted*** として表示されることを確認します。

強制適用の拒否修正: エンタープライズセッションで、booleans: [] が設定された強制適用ポリシーの構成に対し pam workflow list を実行します。制限されたアクションが想定どおり拒否されることを確認します。

ブール値引数パーサー: pam workflow update <uid> --enabled yes を実行し、コマンダーが引数エラーを表示することを確認します。

HHMM表示の修正: allowedTimes ウィンドウを持つワークフローで pam workflow config show <uid> を実行し、表示される開始・終了時刻がKeeper管理コンソールの構成と一致することを確認します。

最終更新