PAMレコードのリンク済み認証情報
PAMリソースレコードでアクセス可能な各フィールドタイプの説明
必要なSDKバージョン: 17.1.1以上
このドキュメントでは、PAMリソースレコードのリンク済み認証情報を操作する際に利用できるプロパティメソッドの一覧と、高度な活用事例を紹介しています。
すべてのプロパティメソッド
for (KeeperRecordLink link : record.getLinks()) {
// 基本プロパティ
String targetUid = link.getRecordUid();
String linkPath = link.getPath(); // 例: "pamUser", "ai_settings", "jit_settings"
String rawData = link.getData(); // Base64エンコードされたデータ
// ユーザー権限メソッド
boolean isAdmin = link.isAdminUser();
boolean isLaunchCredential = link.isLaunchCredential();
// 権限メソッド
boolean allowsRotation = link.allowsRotation();
boolean allowsConnections = link.allowsConnections();
boolean allowsPortForwards = link.allowsPortForwards();
boolean allowsSessionRecording = link.allowsSessionRecording();
boolean allowsTypescriptRecording = link.allowsTypescriptRecording();
boolean allowsRemoteBrowserIsolation = link.allowsRemoteBrowserIsolation();
// 設定関連メソッド
boolean rotatesOnTermination = link.rotatesOnTermination();
Integer dataVersion = link.getLinkDataVersion();
// データ解析メソッド
boolean hasReadableData = link.hasReadableData();
boolean hasEncryptedData = link.hasEncryptedData();
boolean mightBeEncrypted = link.mightBeEncrypted();
System.out.println("Link Analysis for " + targetUid + ":");
System.out.println(" Path: " + linkPath);
System.out.println(" Admin: " + isAdmin);
System.out.println(" Launch Credential: " + isLaunchCredential);
System.out.println(" Allows Rotation: " + allowsRotation);
System.out.println(" Allows Connections: " + allowsConnections);
System.out.println(" Has Encrypted Data: " + hasEncryptedData);
}高度な活用事例
高度なデータアクセスパターン
暗号化データの処理
設定データ関連メソッドのデモ
複雑な関係性の分析 (DAG解析)
高度なPAMユーザー管理
包括的なリンク済みレコードデータ分析
ユーティリティメソッドの完全な例
メソッド完全リファレンス
getRecordUid()
String
対象レコードのUID
getPath()
String
リンクメタデータのタイプ
getData()
String
Base64エンコードされた生データ
isAdminUser()
boolean
ユーザーが管理者権限を持つか
isLaunchCredential()
boolean
起動用認証情報かどうか
allowsRotation()
boolean
パスワードローテーションが許可されているか
allowsConnections()
boolean
接続が許可されているか
allowsPortForwards()
boolean
ポートフォワーディングが許可されているか
allowsSessionRecording()
boolean
セッション録画が有効か
allowsTypescriptRecording()
boolean
Typescript録画が有効か
allowsRemoteBrowserIsolation()
boolean
リモートブラウザ分離が許可されているか
rotatesOnTermination()
boolean
セッション終了時にパスワードがローテーションされるか
getLinkDataVersion()
Integer
データ形式のバージョン番号
hasReadableData()
boolean
データが可読なJSON形式か
hasEncryptedData()
boolean
データが暗号化されているか
mightBeEncrypted()
boolean
データが暗号化されている可能性があるか (ヒューリスティック検出)
getDecryptedData(byte[])
String
レコードキーを使ってデータを復号
getDecodedData()
String
暗号化なしでBase64デコード
getLinkData(byte[])
Map<String, Object>
汎用的な暗号化データへのアクセス
getAiSettingsData(byte[])
Map<String, Object>
AI設定専用のアクセス
getJitSettingsData(byte[])
Map<String, Object>
JIT設定専用のアクセス
getSettingsForPath(String, byte[])
Map<String, Object>
パス指定による汎用的な設定アクセス
インフラ管理のためのDAG概念
有向非巡回グラフ (Directed Acyclic Graphs) の理解
GraphSyncは有向非巡回グラフ (DAG) 構造を実装しています。
有向 (DIRECTED): リンクには方向があります (A → BはB → Aと同じではありません)
非巡回 (ACYCLIC): 循環参照は存在しません (A → B → C → Aは許可されません)
グラフ (GRAPH): レコード (ノード) がリンク (エッジ) で接続されています
利点
✅ 依存関係の追跡 (「このサーバーはこのデータベースを必要とする」)
✅ 関連する認証情報の整理
✅ インフラの関係性を把握
✅ セキュリティ境界の維持
パフォーマンス最適化
効率的な処理戦略
エラーハンドリングのベストプラクティス
実装上の重要な注意点
重要な理解事項
リンクとファイルの違い:
UpdateOptionsのlinksToRemoveパラメータはレコードリンクではなくファイルを削除しますNullと空の違い:
requestLinks=falseの場合、linksフィールドはnull。requestLinks=trueでもリンクが存在しない場合は空リストになりますパフォーマンスへの影響: リンクをリクエストするとレスポンスサイズと処理時間が大幅に増加します
暗号化: リンクデータは暗号化されている可能性があり、復号にはレコードキーが必要です
セキュリティ上の考慮事項
キー管理: リンクデータを復号する際は、常にソースレコードのキーを使用すること
アクセス制御: リンクのプロパティは、どの操作が許可されているかを示します
検証: 操作を行う前に必ずリンクプロパティを確認すること
テスト実装からのベストプラクティス
必要なときのみリンクをリクエスト: パフォーマンスのために
requestLinks=trueは慎重に使用する可能な限りレコードをフィルタ:
recordsFilterを利用してデータ取得を制限する結果をキャッシュ: 同じデータに対して複数の操作を行う場合はルックアップマップを構築する
エラーを適切に処理: リンクデータの復号やアクセスは失敗する可能性がある
要件を検証: リンクプロパティが期待どおりの権限を持っているか確認する
構成をテスト: PAMのセットアップで管理者や起動用認証情報の数が正しいことを検証する
Kotlin対応
最終更新

