Python SDK
Keeperシークレットマネージャー向けPython SDKの詳細情報

ダウンロードとインストール
PIPによるインストール
Pythonのバージョン: 3.9以降
詳細については、keeper-secrets-manager-core (PyPI)をご参照ください。
ソースコード
Pythonのソースコードは、GitHubリポジトリで入手できます。
関連パッケージ
SDKの使用
初期化
トークンは、失敗した試行を含め、初回使用時に消費されます。初期化に失敗した場合、SDK (v17.3.0+) は不完全な構成ファイルを自動的に削除します (ファイルベースのストレージのみ)。KSMアプリケーションから新しいワンタイムトークンを生成して再試行してください。
初期化後、少なくとも1回のAPI呼び出し (例: get_secrets()) が必要です。これによりトークンの紐付けが完了し、構成ファイルに必要な内容が書き込まれます。2回目以降は、トークンなしで構成ファイルを直接使用できます。
token
str
オプション
None
ワンタイムアクセストークン。初回実行時にアプリケーションを紐付けるために必要。構成が紐付け済みの場合は省略
config
KeyValueStorage
オプション
FileKeyValueStorage()
ストレージバックエンド。未指定の場合、現在のディレクトリの client-config.json がデフォルト
hostname
str
オプション
None
サーバーホスト名の上書き。リージョンプレフィックスなしのトークンを使用する場合は必須
verify_ssl_certs
bool
オプション
True
送信リクエスト時のSSL証明書検証
バインディングライフサイクル
ワンタイムトークンは、クライアント作成時ではなく、最初の get_secrets() 呼び出し時に引き換えられます。構成を外部ストア (AWS Secrets Manager、Azure Key Vault など) に保存する場合は、バインド後に読み出してから永続化します。詳しくは、バインディングライフサイクルをご参照ください。
シークレットの取得
パラメータ
型
必須
デフォルト
説明
uids
String[]
オプション
None
取得するレコードのUID
戻り値
型: Record[]
Keeperのすべてのレコード、または指定されたUIDを持つレコード。
シークレットから値を取得
パスワードを取得
Keeperシークレットマネージャーからシークレットを取得すると、このショートカットでそのシークレットのパスワードを取得します。
標準フィールドを取得
パラメータ
型
必須
デフォルト
説明
field_type
String
はい
取得するフィールドタイプ
value
String またはString[]
オプション
None
指定すると、フィールドの値を指定値に設定
single
boolean
オプション
False
最初の値のみを返す
フィールドタイプはKeeperレコードタイプに基づきます。利用可能なフィールドの詳細な一覧については、コマンダーで record-type-info コマンドをご参照ください。
カスタムフィールドを取得
パラメータ
型
必須
デフォルト
説明
label
String
はい
カスタムフィールドのラベル
field_type
String
オプション
None
取得するフィールドタイプ
value
StringまたはString[]
オプション
None
指定すると、フィールドの値を指定値に設定
single
boolean
オプション
False
最初の値のみを返す
カスタムフィールドとは、レコードタイプの定義に含まれていないが、ユーザーが追加できるフィールドのことです。
同じカスタムタイプの複数のフィールドを1つのレコードに表示することができます。これらのフィールドを区別するには、フィールドラベルが必要です。
戻り値
型: String または String[]
フィールドの1つまたは複数の値。 single=Trueオプションを指定した場合のみ、単一の値になります。
タイトルによってシークレットを取得
record_title
String
はい
検索するレコードタイトル
リンクされたレコードへのアクセス (GraphSync)
PAMレコードは認証情報レコードへのリンクを保持できます。リンクはデフォルトでは get_secrets() のレスポンスに含まれません。request_links=True を指定して get_secrets_with_options() を呼び出し、record.get_links() で型付きの KeeperRecordLink オブジェクトとして取得できます。
KeeperRecordLink 属性
record_uid
str
リンク先レコードのUID
path
str または None
リンクタイプの識別子。None = 別レコードへの認証情報リンク、"meta" = PAM設定の自己リンク、"ai_settings" / "jit_settings" = 暗号化設定の自己リンク
data
str または None
Base64形式のリンクペイロード (生データ)。直接参照せず、アクセサメソッドを使用
KeeperRecordLink メソッド
is_admin_user()
bool
リンク先が管理者ユーザー
is_launch_credential()
bool
起動用認証情報へのリンク
is_iam_user()
bool
リンク先がIAMユーザー
belongs_to()
bool
リンク先認証情報がレコードに属する
allows_rotation()
bool
ローテーション許可 (認証情報またはmetaリンク)
allows_connections()
bool
接続許可
allows_port_forwards()
bool
ポートフォワーディング許可
allows_session_recording()
bool
セッション記録の有効化
get_rotation_settings()
dict または None
ローテーションスケジュールとパスワード複雑性の設定
get_meta_data()
dict または None
PAM設定ペイロード全体 (path == "meta")
get_link_data()
dict または None
任意パスの解析済みリンクペイロード
Keeper表記法を使用して値を取得
パラメータ
型
必須
デフォルト
説明
query
String
はい
指定したフィールドの値を取得するためのKeeper表記法を使用したクエリ
戻り値
型: string または string[]
クエリで取得したフィールドの値
TOTPコードを取得
パラメータ
型
必須
デフォルト
説明
url
str
はい
otpauth:// 形式のTOTP URI。URIスキームが otpauth でない場合は ValueError を送出
PAMレコードタイプ
SDKが返すPAMレコードは record.type で識別できます。
全11種類のPAMレコードタイプのフィールド定義は、PAMレコードタイプをご参照ください。
リンク済み認証情報
PAMレコードには認証情報レコードへのリンクを保持できます。リンクはデフォルトでは get_secrets() のレスポンスに含まれません。get_secrets_with_options() で request_links=True を指定して取得し、record.get_links() から型付きの KeeperRecordLink オブジェクトとして参照できます。
KeeperRecordLink 属性
record_uid
str
リンク先レコードのUID
path
str or None
リンク種別の判別子。None = 別レコードへの認証情報リンク、"meta" = PAM設定の自己リンク、"ai_settings" / "jit_settings" = 暗号化設定の自己リンク
data
str or None
Base64形式の生リンクペイロード。直接参照せずアクセサメソッドを使用
KeeperRecordLink メソッド
is_admin_user()
bool
管理者ユーザー向けリンク
is_launch_credential()
bool
接続用認証情報リンク
is_iam_user()
bool
IAMユーザー向けリンク
belongs_to()
bool
レコードに所属するリンク
allows_rotation()
bool
ローテーション許可 (認証情報または meta リンク)
allows_connections()
bool
接続許可
allows_port_forwards()
bool
ポートフォワーディング許可
allows_session_recording()
bool
セッション記録有効
get_rotation_settings()
dict or None
ローテーションスケジュールと複雑性の設定
get_meta_data()
dict or None
PAM設定ペイロード全体 (path == "meta")
get_link_data()
dict or None
任意の path 向け解析済みリンクペイロード
シークレットを更新
レコード更新コマンドは、成功時にローカルのレコードデータ (特にレコードリビジョンの更新) を更新しないため、既に更新されたレコードを継続的に更新してもリビジョンの不一致により失敗となります。各更新バッチの後に、更新済みのレコードをすべてリロードするようにしてください。
変更をシークレットに保存
record
KeeperRecord
はい
ストレージとクエリの設定
fieldメソッドを使用してフィールド値を設定します。
利用可能なフィールドの詳細な一覧については、コマンダーで record-type-info コマンドをご参照ください。一部のフィールドは複数の値を持つことができ、その場合は値をリストとして設定できます。
標準フィールド値を更新
パラメータ
型
必須
デフォルト
説明
field_type
String
はい
取得するフィールドタイプ
value
String または String[]
オプション
None
指定すると、フィールドの値を指定値に設定
single
boolean
オプション
False
最初の値のみを返す
カスタムフィールド値の更新
パラメータ
型
必須
デフォルト
説明
label
String
はい
カスタムフィールドのラベル
field_type
String
オプション
None
取得するフィールドタイプ
value
StringまたはString[]
オプション
None
指定すると、フィールドの値を指定値に設定
single
boolean
オプション
False
最初の値のみを返す
ランダムなパスワードを生成
length
int
オプション
32
パスワードの最小文字数
lowercase
int
オプション
None
小文字の最小数 (正の値)、正確な数 (0または負)、制約なし (None)
uppercase
int
オプション
None
大文字の最小数 (正の値)、正確な数 (0または負)、制約なし (None)
digits
int
オプション
None
数字の最小数 (正の値)、正確な数 (0または負)、制約なし (None)
special_characters
int
オプション
None
特殊文字の最小数 (正の値)、正確な数 (0または負)、制約なし (None)
special_characterset
str
オプション
"!@#$%()+;<>=?[]{}^.,
特殊文字部分の生成時に使用するカスタム文字セット
各文字クラスのパラメータは、正の値なら最小文字数、0または負の値なら正確な文字数、None (デフォルト) なら制約なしを意味します。4文字クラスすべてが None の場合、または正確な文字数の合計が length 未満の場合、残りは有効な文字クラスからランダムに選ばれます。
ファイルのダウンロード
パラメータ
型
必須
デフォルト
説明
file_path
String
はい
ファイルの保存先のパス
create_folders
boolean
いいえ
False
存在しない場合はfile_pathにフォルダを作成
ファイルのアップロード
ファイルのアップロード
Keeperファイルアップロードオブジェクトを作成
ファイルのアップロード
owner_record
KeeperRecord
はい
アップロードされたファイルを添付するレコード
file
KeeperFileUpload
はい
アップロードするファイル
ファイルからのKeeperファイルのアップロード
path
string
はい
アップロードするファイルへのパス
file_name
string
いいえ
None
アップロード後にKeeperに格納されるファイルの名前
file_title
string
いいえ
None
アップロード後にKeeperに格納されるファイルのタイトル
mime_type
string
いいえ
None
ファイル内のデータの種類。 何も指定しない場合は、「application/octet-stream」が使用されます。
戻り値
型: string
添付ファイルのファイルUID
添付ファイルの削除
record
KeeperRecord
はい
更新対象となるレコード
links_to_remove
String または List[String]
いいえ
レコードから削除するファイルのUID
ファイルを削除したあとに同じレコードへ続けて更新する場合は、レコードのリビジョンが更新されているため、get_secrets() でレコードを取り直してください。
シークレットの作成
要件
共有フォルダのUID
共有フォルダには、シークレットマネージャーアプリケーションからアクセスできること
あなたとシークレットマネージャーアプリケーションに編集権限が付与されていること
共有フォルダには、少なくとも1つのレコードが存在すること。
作成されたレコードとレコードのフィールドが正しく書式設定されていること。
各レコードタイプで想定されるフィールド形式については、レコードタイプをご参照ください。
TOTPフィールドには、KSM SDK以外で生成されたURLのみを指定できます。
レコードの作成後は、upload_fileを使用して添付ファイルをアップロードできます。
folder_uid
String
はい
record
KeeperRecord
はい
create_options
CreateOptions
はい
record
KeeperRecord
はい
この例では、ログイン値と生成されたパスワードを含むログインタイプのレコードを作成します。
この例では、カスタムのレコードタイプのレコードを作成します。
戻り値
型: string
新規レコードのレコードUID
シークレットの削除
Python KSM SDKでKeeperボルトのレコードを削除できます。
record_uids
str または List[str]
はい
削除するレコードのUID、またはUIDのリスト
キャッシュ
ネットワークアクセスが失われたときにシークレットにアクセスできなくなる状況を避けるため、Python SDKを使用してシークレットを暗号化されたファイルでローカルマシンにキャッシュできます。
キャッシュの設定と構成
Python SDKでキャッシュを設定するには、SecretsManager オブジェクトを作成するときにキャッシュポスト関数を含める必要があります。
Python SDKには、KSMCache クラスにデフォルトのキャッシュ機能が含まれており、キャッシュされたクエリをローカルファイルに保存し、復旧機能として使用できます (ネットワーク接続がある場合は常にネットワークデータを優先し、ウェブボルトにアクセスできない場合にのみキャッシュを使用します)。独自のキャッシュ機能を作成することも可能で、KSMCache を出発点として利用できます。例えば、ネットワークアクセスよりもローカルキャッシュを優先し、独自のキャッシュ管理を行う (例: キャッシュデータを5分ごとに更新する) 機能を作成できます。
デフォルトの KSMCache は直近のレスポンスのみを保存します。get_secrets(['<uid>']) の後、オフライン時に引数なしで get_secrets() を呼び出すと、キャッシュ済みの1件のみが返り、ボルト全体は取得できません。
キャッシュからのレコード更新 (または新しいレコードの作成) は、キャッシュされたレコードデータを無効にし、同じレコードを連続して更新する操作は失敗します。異なるレコードを修正する場合、バッチ更新は機能します。キャッシュされたレコードを更新した後は、常に get_secrets 関数を呼び出してキャッシュをリフレッシュし、ボルトから新しいレコードリビジョンなどの更新されたメタデータを取得するようにしてください。
独自のキャッシュ関数の作成
まず、以下の引数を使用してキャッシュ関数を作成し、post_function を呼び出します。
次に、KSMCacheを使用して任意のキャッシュ処理ロジックを実装できます。
以下は基本的なサンプルです。
フォルダ
フォルダは完全なCRUD (作成、読み取り、更新、削除操作) が利用できます。
フォルダの読み取り
フォルダの完全な階層構造をダウンロードします。
レスポンス
型: List[KeeperFolder]
使用例
フォルダの作成
CreateOptions とフォルダ名の指定が必要です。CreateOptions はフォルダのUIDパラメータ (共有フォルダのUID) が必須ですが、サブフォルダのUIDはオプションであり、指定されていない場合は、通常の新しいフォルダが親 (共有フォルダ) の直下に作成されます。サブフォルダは、親の共有フォルダの直接の下位オブジェクトである必要はありません。親フォルダから何階層も深い位置にサブフォルダを作成することができます。
create_options
CreateOptions
はい
親およびサブフォルダのUID
folder_name
str
はい
フォルダ名
folders
List[KeeperFolder]
いいえ
None
CreateOptionsで作成した親とサブフォルダの検索に使用するフォルダのリスト
使用例
フォルダの更新
フォルダのメタデータ (現在はフォルダ名のみ) を更新します。
folder_uid
str
はい
フォルダのUID
folder_name
str
はい
新しいフォルダ名
folders
List[KeeperFolder]
いいえ
None
親フォルダの検索に使用するフォルダのリスト
使用例
フォルダの削除
フォルダのリストを削除します。空でないフォルダを削除するには、force_deletion フラグを使用します。
folder_uids
List[str]
はい
フォルダUIDリスト
force_deletion
bool
いいえ
False
空でないフォルダを強制的に削除
使用例
プロキシのサポート
環境変数
この設定を行うと、Keeperシークレットマネージャーへのリクエストを含むすべてのリクエストが、指定したプロキシを経由して送信されます。
SecretsManagerのパラメータ
SDK内でのみプロキシを使用したい場合は、SecretsManager にプロキシURLを渡すこともできます。
高度な構成
カスタムサーバー公開鍵
SDKにサーバー公開鍵を同梱できない分離環境やプライベート環境では、EC P-256公開鍵を以下の2通りで指定できます。優先順位はプログラム指定 > 既存の構成です。
プログラム指定: SecretsManager() に server_public_key と server_public_key_id を渡します。
構成ファイル: 初回呼び出しの前に、紐付け済みの ksm-config.json に serverPublicKey と serverPublicKeyId を追加します。これら2つのフィールドは紐付け済み構成を補完するものであり、置き換えるものではありません。
最終更新

