リンク済み認証情報
シークレットマネージャーSDKでPAMリソースレコードにリンクされた認証情報を取得する方法
概要
KeeperのレコードはGraphSyncを通じて相互にリンクできます。最も一般的な用途はPrivileged Access Managerです。PAMリソースレコード (PAMマシン、データベース、ディレクトリ、またはリモートブラウザ) は、そのリソースを操作する pamUser レコードとリンクされ、各ユーザーが許可されている操作を示すメタデータも含まれます。
シークレットマネージャーSDKでは各レコードからこれらのリンクを取得できるため、たとえば特定のマシンの管理ユーザーと接続用認証情報を特定できます。
リンク済みレコードの取得
シークレットクエリに request-links オプションを渡します。各SDKではクエリオプションオブジェクトで指定します。言語ごとのメソッド名とフラグ名は、以下のクロスSDKリファレンスをご参照ください。
from keeper_secrets_manager_core import SecretsManager
from keeper_secrets_manager_core.storage import FileKeyValueStorage
from keeper_secrets_manager_core.dto.payload import QueryOptions
secrets_manager = SecretsManager(config=FileKeyValueStorage('ksm-config.json'))
# request links along with the records
# QueryOptions takes records_filter and folders_filter first; pass None for both to fetch everything
query = QueryOptions(records_filter=None, folders_filter=None, request_links=True)
records = secrets_manager.get_secrets_with_options(query)
for record in records:
for link in record.links:
print(f"{record.title} ({record.type}) -> {link['recordUid']}")
if link.get('path'):
print(f" path: {link['path']}")リンクは要求した場合にのみ取得できます。空と未設定の挙動はSDKごとに異なります。Java/Kotlinはリンク未要求時に null を返し、要求済みで存在しない場合は空リストを返します。PythonおよびRustはどちらの場合も空コレクションを返すため (「未要求」と「存在しない」を区別できません)、反復処理前に空かどうかを確認してください。
リンクオブジェクトの構造
各リンクは3つのフィールドを持つオブジェクトです。
recordUid
String
リンク先レコードのUID
data
String (optional)
Base64エンコードされたリンクペイロード。エッジにデータがない場合は null
path
String (optional)
data の意味を識別。基本的なユーザーリンクの場合は null
path の値によって data の解釈方法が決まります。
path
data の内容
備考
null / empty
ユーザーリンクメタデータ、JSON (snake_case)
recordUid はリンク先の pamUser。管理者/接続/IAM/ローテーションフラグ
meta
リソース自身の設定、JSON (camelCase)
recordUid はリソース自身のUID (自己参照)
ai_settings
暗号化Blob
リソースレコード自身のキーで復号
jit_settings
暗号化Blob
ジャストインタイムアクセス構成。レコード自身のキーで復号
domain
リンクエッジ
マシンからディレクトリへの参照。JITルックアップで使用
ユーザーリンクデータ (path が null)
デコード後のJSON。キーは snake_case。すべてのフィールドは任意。欠落時は false/未設定として扱います。
メタリンクデータ (path が "meta")
デコード後のJSON。キーは camelCase。
ユーザーリンクの data はsnake_caseキー、メタリンクの data はcamelCaseです。型付きでないリンクを返すSDK (Java/Kotlin以外) では、この変換は利用側の責任となります。
クロスSDKリファレンス
リンク済みレコードに対応するすべてのSDKは同じワイヤーフィールドを公開します。表面は言語ごとに異なります。
Java / Kotlin
getSecrets2(opts, qopts)
requestLinks
record.getLinks()
型付き KeeperRecordLink (22ヘルパーメソッド)
Python
get_secrets_with_options(qopts)
request_links
record.links
dictのリスト
JavaScript
getSecrets2(opts, qopts)
requestLinks
record.links
{recordUid, data?, path?}
.NET
GetSecrets2(opts, qopts)
RequestLinks
record.Links
型付き KeeperRecordLink (プロパティ)
Go
GetSecretsWithOptions(qopts)
RequestLinks
record.Links
型付き RecordLink struct
Rust
get_secrets_with_options(qopts)
request_links
record.links
Vec<HashMap<String, Value>>
現時点でリンクデータに対する型付きアクセサメソッドを提供しているのはJava/KotlinSDKのみです。他のSDKは生の {recordUid, data, path} 構造を返すため、data の解析は利用側で行います。型付きAPIの完全な一覧は、Javaリンク済み認証情報リファレンスをご参照ください。
メソッドリファレンス (Java / Kotlin)
型付き KeeperRecordLink メソッドのリファレンスです。他のSDKも同じ基盤ワイヤーフィールドを読み取ります。
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
RBI許可
rotatesOnTermination()
boolean
セッション終了時にローテーション
getDecodedData()
String
復号なしのBase64デコード
getDecryptedData(byte[])
String
レコードキーでデータを復号
getAiSettingsData(byte[])
Map
AI設定へのアクセス
getJitSettingsData(byte[])
Map
JIT設定へのアクセス
getSettingsForPath(String, byte[])
Map
パス指定による汎用設定アクセス
重要な注意事項
linksToRemoveはファイルを削除し、レコードリンクは削除しません。 更新オプションのlinksToRemoveパラメーターはファイル添付を削除します。GraphSyncレコードリンクは削除しません。暗号化:
ai_settingsおよびjit_settingsペイロードはリソースレコード自身のキーで暗号化されています。頂点/キーチェーンキーではなく、そのキーで復号してください。パフォーマンス: リンクの要求は応答サイズと処理時間を増やします。可能な限りレコードをフィルターしてください。
最終更新

