PAM Launch JIT
ジャストインタイムアクセスによるターミナルベースプロトコル向けコマンダーCLI
PAM Launch — ジャストインタイム (JIT) アクセス
pam launch のジャストインタイム (JIT) アクセスは、セッションの存続期間中のみ認証情報または昇格された特権を付与し、セッション終了時にそれらの変更を元に戻します。KeeperのPAMゲートウェイと組み合わせることで、常時特権の縮小と、ターゲットシステム上で認証情報が有効な期間の短縮に役立ちます。
概要
コマンダーにおけるJITアクセスは、 pam launch へのオプトイン拡張です。 -j/--jit を指定すると、pamMachineレコードの pamSettings.options.jit_settings が読み取られ、ゲートウェイへセッション向けに以下のいずれか、または両方の動作が指示されます。
一時アカウント — ゲートウェイがセッション用の短期アカウントをターゲット上に作成し、切断時に削除します (
jit_settingsのcreate_ephemeral: true)。特権昇格 — ゲートウェイがリンク済み認証情報をセッション中のみ昇格グループまたはロールに追加し、切断時に元に戻します (
elevate: true)。
両方を併用できます。一時アカウントをプロビジョニングし、セッション中に直ちに昇格させます。
このモデルは、常時特権ゼロのパターンに対応します。対話型セッションがアクティブな間だけ、認証情報または昇格メンバーシップが存在します。
JIT有効時にコマンダーが行うこと
-j/--jit 指定時、コマンダーはpamMachineレコードから jit_settings を読み取り、一時プロビジョニングが有効な場合はゲートウェイへ credentialType='ephemeral' を送信します。モードに応じて任意の jitSettings および jitElevation ペイロードが付加されます。アカウントの作成、昇格の適用、切断時のクリーンアップはゲートウェイ側で行われます。
要件
JITの動作は、pamMachineレコード上の以下のパスにある構成によって完全に制御されます。
pamSettings.options.jit_settings
--jit を使用する前に、そのオブジェクトに目的のモード (一時、昇格、または両方) に合ったフラグとフィールドが定義されていることを確認してください。コマンダーはJIT設定を自動生成しません。 -j 指定時はレコード上の設定をそのまま転送します。
チェックリスト (下記「レコード構成」セクションと同一フィールド)
一時アカウントが必要な場合は
create_ephemeral/ephemeral_account_type(およびドメイン専用フィールド) を設定一時的な特権昇格が必要な場合は
elevate、elevation_method、elevation_stringを設定ドメインの一時アカウントでは
pam_directory_uid_refを設定し、該当する場合はbase_distinguished_nameも設定
ドメインモードの一時プロビジョニングでは、 ephemeral_account_type が domain のときレコード上に pam_directory_uid_ref が追加で必要です (「制限と要件」をご参照ください)。
ボルトルールとの整合
ephemeral_account_type == 'domain' は、レコード上の宣言型バリデーターが要求する pam_directory_uid_ref と同じ条件を満たす必要があります。
JITモード
一時アカウント
jit_settings で create_ephemeral: true
セッション用の短期アカウントを作成し、切断時に削除
特権昇格
jit_settings で elevate: true
リンク済み認証情報を昇格グループまたはロールに追加し、切断時に元に戻す
両方の併用
create_ephemeral: true と elevate: true の両方
一時アカウントの作成とセッション中の昇格を同時に実施
モード間の相互作用
一時のみ — 短期アカウントのライフサイクルはセッションに紐づく。
elevateもtrueでない限り昇格ペイロードは不要。昇格のみ — リンク済み認証情報がセッション中に昇格する。
credentialTypeは昇格のワイヤ行に従い (linkedとuserRecordUid)。両方 — プロビジョニングは一時経路 (
credentialTypeはephemeral)、昇格メタデータはjitElevationで併送。
レコード構成 (jit_settings)
jit_settings)すべてのJITオプションはpamMachineレコードの pamSettings.options.jit_settings にあります。
create_ephemeral
boolean
true のとき、ゲートウェイがセッション用の一時アカウントを作成し、セッション終了時に削除する。
ephemeral_account_type
"local"| "domain"
一時アカウントがローカルかドメイン連携か。
base_distinguished_name
string (DN)
ベースの識別名。ドメインモードでのみ使用。
pam_directory_uid_ref
UID string
ディレクトリ構成への参照。 ephemeral_account_type が domain のとき必須 (宣言型バリデーター)。
elevate
boolean
true のとき、ゲートウェイがリンク済み認証情報をセッション中に昇格し、切断時に元に戻す。
elevation_method
"sudo"| "group"| "role"
昇格の適用方法 (sudo、グループメンバーシップ、ロールなど)。
elevation_string
string
選択した方式の対象値 (sudoグループ名やロール名など)。
--jit(-j) の使用
--jit(-j) の使用フラグ
-j
--jit
この起動でJITプロビジョニングをオプトイン。コマンダーは適切な credentialType および任意の jitSettings/jitElevation ペイロードをゲートウェイへ送信する。
構文 (概念)
jit_settings を定義したレコードでもJITは自動では有効になりません。 -j/--jit を明示的に指定する必要があります。
例
基本的なJIT起動の例。
特定のゲートウェイでJITを使う例。
相互排他オプション (以下のセクションで述べる組み合わせは拒否されます)。
レコード上の allowSupplyHost も -j と両立しません (明確なエラー)。
allowSupplyHost ありでJITを試す例 (拒否される)。
優先順位と相互排他
認証情報の優先順位 (ウェブボルトと整合):
allowSupplyHostJIT
allowSupplyUserlinked
検証ルール
レコードに
allowSupplyHostがある場合、-j/--jitは拒否されます (コマンダーが明確なエラーを返す)。-jは-cr、-H、-hrと相互排他です。JITが認証情報 (または一時アカウント) を自らプロビジョニングするため。ephemeral_account_type == 'domain'では、宣言型バリデーターと同様にレコード上のpam_directory_uid_refが必要。
相互排他フラグ
フラグ/オプション
-j との関係
-cr
-j と相互排他 (JITが認証情報を自らプロビジョニング)。
-H
-j と相互排他 (JITが認証情報を自らプロビジョニング)。
-hr
-j と相互排他 (JITが認証情報を自らプロビジョニング)。
動作の仕組み
エンドツーエンドの流れ
1.コマンダーがpamMachineレコードから pamSettings.options.jit_settings を読み取る。 2. -j/--jit 指定時、コマンダーは優先順位とフラグの組み合わせを検証し、ゲートウェイ入力辞書を構築する。
一時 (「両方」を含む) では
credentialTypeをephemeralにし、create_ephemeral、ephemeral_account_type、および任意でbase_distinguished_nameとpam_directory_uid_refを含むjitSettingsを送信。昇格でリンク済み認証情報経路を使う場合、契約は
linkedのcredentialTypeとuserRecordUid、およびelevate、elevation_method、elevation_stringを含むjitElevation。一時と昇格の両方では
credentialTypeはephemeralとし、jitSettingsとjitElevationの両方を送信。 3.一時モードでは、ゲートウェイのサーバー側認証情報注入を優先するため、guacd接続設定ではユーザー名とパスワードを意図的に空にする。 4.ゲートウェイがセッション向けにプロビジョニング (および必要に応じて昇格) し、切断時に一時アカウントの削除および/または昇格の取り消しを行う。
コマンダーとゲートウェイの責務
コマンダー — レコードの
jit_settingsと選択した起動フラグに応じてcredentialType、任意のjitSettings、任意のjitElevationを公開する。guacd / WebRTCに至るセッション経路を開く前に、「優先順位と相互排他」で述べた検証を実行する。ゲートウェイ — 一時モードでのアカウント作成・削除、昇格モードでの昇格の適用・解除、レコードで両方のフラグが有効な場合の組み合わせ動作を実行する。
一時認証情報の注入 (guacd)
一時モードではguacd接続設定でusernameとpasswordを意図的に空にします。ゲートウェイがサーバー側で正しい短期認証情報を注入するため、対話型セッションはコマンダーがguacdパラメータにシークレットを埋め込まなくても認証できます。
ワイヤ契約 (ゲートウェイ入力)
モード
credentialType
追加ペイロード
一時
ephemeral
jitSettings— create_ephemeral 、 ephemeral_account_type 、任意で base_distinguished_name 、 pam_directory_uid_ref
昇格
linked+ userRecordUid
jitElevation— elevate 、 elevation_method 、 elevation_string
両方
ephemeral
jitSettingsおよび jitElevation
リスト形式 (同一契約)
一時 —
credentialType=ephemeral。jitSettingsにcreate_ephemeral、ephemeral_account_type、任意でbase_distinguished_nameとpam_directory_uid_ref。昇格 —
credentialType=linkedとuserRecordUid。jitElevationにelevate、elevation_method、elevation_string。両方 —
credentialType=ephemeral。上記フィールドを含むjitSettingsとjitElevationの両方。
コマンダーの launch フロー (PR #1979参照) は jit_settings を読み取り、 jit.py ヘルパーで -j / --jit を処理し、 terminal_connection.py 経由で credentialType とJITペイロードをguacdまたはWebRTCクライアントへ渡します。
制限と要件
ドメインの一時アカウント
ephemeral_account_type を domain にする場合、レコード上に pam_directory_uid_ref が必要 (宣言型バリデーター)。
allowSupplyHost
このようなレコードではJITは使用不可。コマンダーは -j を明確なエラーで拒否する。
競合フラグ
-j は -cr 、 -H 、 -hr と併用不可。これらの組み合わせは拒否される。
オプトイン動作
レコード上の jit_settings だけではJITは自動起動しない。起動のたびに -j / --jit を明示する必要がある。
後方互換性
JITは厳密にオプトインです。 -j/--jit を渡さない限り、既存の pam launch の動作は変わりません。レコードに jit_settings があっても、コマンドラインでJITを明示的に有効にするまで起動には影響しません。
最終更新

