PAM Launch JIT

ジャストインタイムアクセスによるターミナルベースプロトコル向けコマンダーCLI

PAM Launch — ジャストインタイム (JIT) アクセス

pam launch のジャストインタイム (JIT) アクセスは、セッションの存続期間中のみ認証情報または昇格された特権を付与し、セッション終了時にそれらの変更を元に戻します。KeeperのPAMゲートウェイと組み合わせることで、常時特権の縮小と、ターゲットシステム上で認証情報が有効な期間の短縮に役立ちます。


概要

コマンダーにおけるJITアクセスは、 pam launch へのオプトイン拡張です。 -j/--jit を指定すると、pamMachineレコードの pamSettings.options.jit_settings が読み取られ、ゲートウェイへセッション向けに以下のいずれか、または両方の動作が指示されます。

  • 一時アカウント — ゲートウェイがセッション用の短期アカウントをターゲット上に作成し、切断時に削除します (jit_settingscreate_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 (およびドメイン専用フィールド) を設定

  • 一時的な特権昇格が必要な場合は elevateelevation_methodelevation_string を設定

  • ドメインの一時アカウントでは pam_directory_uid_ref を設定し、該当する場合は base_distinguished_name も設定

ドメインモードの一時プロビジョニングでは、 ephemeral_account_typedomain のときレコード上に pam_directory_uid_ref が追加で必要です (「制限と要件」をご参照ください)。

ボルトルールとの整合

ephemeral_account_type == 'domain' は、レコード上の宣言型バリデーターが要求する pam_directory_uid_ref と同じ条件を満たす必要があります。


JITモード

モード
適用条件
効果

一時アカウント

jit_settingscreate_ephemeral: true

セッション用の短期アカウントを作成し、切断時に削除

特権昇格

jit_settingselevate: true

リンク済み認証情報を昇格グループまたはロールに追加し、切断時に元に戻す

両方の併用

create_ephemeral: trueelevate: true の両方

一時アカウントの作成とセッション中の昇格を同時に実施

モード間の相互作用

  • 一時のみ — 短期アカウントのライフサイクルはセッションに紐づく。 elevatetrue でない限り昇格ペイロードは不要。

  • 昇格のみ — リンク済み認証情報がセッション中に昇格する。 credentialType は昇格のワイヤ行に従い (linkeduserRecordUid)。

  • 両方 — プロビジョニングは一時経路 (credentialTypeephemeral)、昇格メタデータは jitElevation で併送。


レコード構成 (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_typedomain のとき必須 (宣言型バリデーター)。

elevate

boolean

true のとき、ゲートウェイがリンク済み認証情報をセッション中に昇格し、切断時に元に戻す。

elevation_method

"sudo"| "group"| "role"

昇格の適用方法 (sudo、グループメンバーシップ、ロールなど)。

elevation_string

string

選択した方式の対象値 (sudoグループ名やロール名など)。


--jit(-j) の使用

フラグ

短縮
長い形式
説明

-j

--jit

この起動でJITプロビジョニングをオプトイン。コマンダーは適切な credentialType および任意の jitSettings/jitElevation ペイロードをゲートウェイへ送信する。

構文 (概念)

jit_settings を定義したレコードでもJITは自動では有効になりません-j/--jit を明示的に指定する必要があります。

基本的なJIT起動の例。

特定のゲートウェイでJITを使う例。

相互排他オプション (以下のセクションで述べる組み合わせは拒否されます)。

レコード上の allowSupplyHost-j と両立しません (明確なエラー)。

allowSupplyHost ありでJITを試す例 (拒否される)。


優先順位と相互排他

認証情報の優先順位 (ウェブボルトと整合):

  1. allowSupplyHost

  2. JIT

  3. allowSupplyUser

  4. linked

検証ルール

  • レコードに 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 指定時、コマンダーは優先順位とフラグの組み合わせを検証し、ゲートウェイ入力辞書を構築する。

  • 一時 (「両方」を含む) では credentialTypeephemeral にし、 create_ephemeralephemeral_account_type 、および任意で base_distinguished_namepam_directory_uid_ref を含む jitSettings を送信。

  • 昇格でリンク済み認証情報経路を使う場合、契約は linkedcredentialTypeuserRecordUid 、および elevateelevation_methodelevation_string を含む jitElevation

  • 一時と昇格の両方では credentialTypeephemeral とし、jitSettingsjitElevation の両方を送信。 3.一時モードでは、ゲートウェイのサーバー側認証情報注入を優先するため、guacd接続設定ではユーザー名とパスワードを意図的に空にする。 4.ゲートウェイがセッション向けにプロビジョニング (および必要に応じて昇格) し、切断時に一時アカウントの削除および/または昇格の取り消しを行う。

コマンダーとゲートウェイの責務

  • コマンダー — レコードの jit_settings と選択した起動フラグに応じて credentialType 、任意の jitSettings 、任意の jitElevation を公開する。guacd / WebRTCに至るセッション経路を開く前に、「優先順位と相互排他」で述べた検証を実行する。

  • ゲートウェイ — 一時モードでのアカウント作成・削除、昇格モードでの昇格の適用・解除、レコードで両方のフラグが有効な場合の組み合わせ動作を実行する。

一時認証情報の注入 (guacd)

一時モードではguacd接続設定でusernamepassword意図的に空にします。ゲートウェイがサーバー側で正しい短期認証情報を注入するため、対話型セッションはコマンダーがguacdパラメータにシークレットを埋め込まなくても認証できます。

ワイヤ契約 (ゲートウェイ入力)

モード

credentialType

追加ペイロード

一時

ephemeral

jitSettingscreate_ephemeralephemeral_account_type 、任意で base_distinguished_namepam_directory_uid_ref

昇格

linked+ userRecordUid

jitElevationelevateelevation_methodelevation_string

両方

ephemeral

jitSettingsおよび jitElevation

リスト形式 (同一契約)

  • 一時credentialType=ephemeraljitSettingscreate_ephemeralephemeral_account_type 、任意で base_distinguished_namepam_directory_uid_ref

  • 昇格credentialType=linkeduserRecordUidjitElevationelevateelevation_methodelevation_string

  • 両方credentialType=ephemeral 。上記フィールドを含む jitSettingsjitElevation の両方。

コマンダーの launch フロー (PR #1979参照) は jit_settings を読み取り、 jit.py ヘルパーで -j / --jit を処理し、 terminal_connection.py 経由で credentialType とJITペイロードをguacdまたはWebRTCクライアントへ渡します。


制限と要件

トピック
要件

ドメインの一時アカウント

ephemeral_account_typedomain にする場合、レコード上に pam_directory_uid_ref が必要 (宣言型バリデーター)。

allowSupplyHost

このようなレコードではJITは使用不可。コマンダーは -j を明確なエラーで拒否する。

競合フラグ

-j-cr-H-hr と併用不可。これらの組み合わせは拒否される。

オプトイン動作

レコード上の jit_settings だけではJITは自動起動しない。起動のたびに -j / --jit を明示する必要がある。


後方互換性

JITは厳密にオプトインです。 -j/--jit を渡さない限り、既存の pam launch の動作は変わりません。レコードに jit_settings があっても、コマンドラインでJITを明示的に有効にするまで起動には影響しません。

最終更新