Python SDK
Keeperシークレットマネージャー向けPython SDKの詳細情報
ダウンロードとインストール
PIPによるインストール
pip3 install -U keeper-secrets-manager-core
ソースコード
Pythonのソースコードは、GitHubリポジトリで入手できます。
SDKの使用
初期化
SecretsManager(token, config)
# トークンのみを使用して(後で使用するために)設定を生成するには、
# トークンをバインドするアクセス操作が少なくとも1回必要です
#get_secrets(uids=None)
パラメータ
必須
説明
型
token
はい
ワンタイムアクセストークン
String
config
はい
ストレージの設定
KeyValueStorage
シークレットの取得
get_secrets(uids=None)
パラメータ
型
必須
デフォルト
説明
uids
String[]
オプション
None
取得するUIDレコード
戻り値
型: Record[]
Keeperのすべてのレコード、または指定されたUIDを持つレコード。
シークレットから値を取得
パスワードを取得
Keeperシークレットマネージャーからシークレットを取得すると、このショートカットでそのシークレットのパスワードを取得します。
secret.field('password', single=True)
標準フィールドを取得
secret.field(field_type, single=False, value=None)
パラメータ
型
必須
デフォルト
説明
field_type
String
はい
取得するフィールドタイプ
single
boolean
オプション
False
最初の値のみを返す
value
String
またはString[]
オプション
None
指定すると、フィールドの値を指定値に設定
フィールドはタイプで検索されます。フィールドタイプの一覧については、レコードタイプのページをご参照ください。
カスタムフィールドを取得
secret.custom_field(label, field_type=None, single=False, value=None)
パラメータ
型
必須
デフォルト
説明
label
String
はい
カスタムフィールドのラベル
field_type
String
はい
取得するフィールドタイプ
single
boolean
オプション
False
最初の値のみを返す
value
String
またはString[]
オプション
None
指定すると、フィールドの値を指定値に設定
カスタムフィールドは、レコードタイプ定義の一部ではありませんが、ユーザーが追加できるフィールドです。 各標準レコードタイプのフィールドの一覧は、レコードタイプのページをご参照ください。
同じカスタムタイプの複数のフィールドを1つのレコードに表示することができます。これらのフィールドを区別するには、フィールドラベルが必要です。
戻り値
型: String
またはString[]
フィールドの1つまたは複数の値。 single=True
オプションを指定した場合のみ、単一の値になります。
タイトルによってシークレットを取得
# 一致するレコードをすべて取得
get_secrets_by_title(record_title)
# 最初に一致するレコードのみを取得
get_secret_by_title(record_title)
record_title
String
はい
検索するレコードタイトル
Keeper表記法を使用して値を取得
get_notation(query)
パラメータ
型
必須
デフォルト
説明
query
String
はい
指定したフィールドの値を取得するためのKeeper表記法を使用したクエリ
戻り値
型: string
or string[]
照会したフィールドの値
TOTPコードを取得
get_totp_code(url)
パラメータ
型
必須
デフォルト
説明
url
String
はい
TOTP Url
シークレットを更新
レコード更新コマンドは、成功時にローカルのレコードデータ (特にレコードリビジョンの更新) を更新しないため、既に更新されたレコードを継続的に更新してもリビジョンの不一致により失敗となります。各更新バッチの後に、更新済みのレコードをすべてリロードするようにしてください。
変更をシークレットに保存
save(record:KeeperRecord)
record
KeeperRecord
はい
ストレージとクエリの設定
fieldメソッドを使用してフィールド値を設定します。
フィールドはタイプで検索されます。フィールドタイプの一覧については、レコードタイプのページをご参照ください。
複数の値を持つフィールドもあります。このような場合は、値をリストに設定できます。
標準フィールド値を更新
secret.field(field_type, single=False, value=None)
パラメータ
型
必須
デフォルト
説明
field_type
String
はい
取得するフィールドタイプ
single
boolean
オプション
False
最初の値のみを返す
value
String
またはString[]
オプション
None
指定すると、フィールドの値を指定値に設定
フィールドはタイプで検索されます。フィールドタイプの一覧については、レコードタイプのページをご参照ください。
カスタムフィールド値の更新
secret.custom_field(label, field_type=None, single=False, value=None)
パラメータ
型
必須
デフォルト
説明
label
String
はい
カスタムフィールドのラベル
field_type
String
はい
取得するフィールドタイプ
single
boolean
オプション
False
最初の値のみを返す
value
String
またはString[]
オプション
None
指定すると、フィールドの値を指定値に設定
ランダムなパスワードを生成
generate_password(length, lowercase, uppercase, digits, specialCharacters)
length
int
オプション
64
lowercase
int
オプション
0
uppercase
int
オプション
0
digits
int
オプション
0
specialCharacters
int
オプション
0
各パラメータは、使用する文字の種類の最小数を示します。たとえば、「uppercase」は、使用する大文字の最小数となります。
ファイルのダウンロード
file.save_file(file_path, create_folders=False)
パラメータ
型
必須
デフォルト
説明
file_path
String
はい
ファイルの保存先のパス
create_folders
boolean
いいえ
False
存在しない場合はfile_pathにフォルダを作成
ファイルのアップロード
ファイルのアップロード
upload_file(owner_record, file: my_file)
Keeperファイルアップロードオブジェクトを作成
KeeperFileUpload.from_file(path, file_name=None, file_title=None, mime_type=None)
ファイルのアップロード
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
シークレットの作成
要件
共有フォルダのUID
共有フォルダには、シークレットマネージャーアプリケーションからアクセスできる必要があります。
あなたとシークレットマネージャーアプリケーションには編集権限が必要です。
共有フォルダには、少なくとも1つのレコードが存在する必要があります。
作成されたレコードとレコードのフィールドは正しく書式設定されている必要があります。
レコードタイプごとの適切なフィールド形式については、こちらのページをご参照ください。
TOTPフィールドには、KSM SDK以外で生成されたURLのみを指定できます。
レコードの作成後は、upload_fileを使用して添付ファイルをアップロードできます。
secrets_manager.create_secret(folder_uid, record)
folder_uid
String
はい
record
KeeperRecord
はい
戻り値
型: string
新規レコードのレコードUID
シークレットの削除
Python KSM SDKでKeeperボルトのレコードを削除できます。
secrets_manager.delete_secret(record_uid)
record_uid
string
はい
キャッシュ
ネットワークアクセスが失われたときにシークレットにアクセスできなる状況を避けるため、Python SDKを使用してシークレットを暗号化されたファイルでローカルマシンにキャッシュできます。
キャッシュの設定と構成
Python SDKでキャッシュを設定するには、SecretsManager
オブジェクトを作成するときにキャッシュポスト関数を含める必要があります。
Python SDKには、KSMCache
クラスにデフォルトのキャッシュ機能が含まれており、キャッシュされたクエリをローカルファイルに保存し、復旧機能として使用できます (ネットワーク接続がある場合は常にネットワークデータを優先し、ウェブボルトにアクセスできない場合にのみキャッシュを使用します)。独自のキャッシュ機能を作成することも可能で、KSMCache
を出発点として利用できます。例えば、ネットワークアクセスよりもローカルキャッシュを優先し、独自のキャッシュ管理を行う (例:キャッシュデータを5分ごとに更新する) 機能を作成できます。
secrets_manager = SecretsManager(
token='<One Time Access Token>',
config=FileKeyValueStorage('ksm-config.json'),
custom_post_function=KSMCache.caching_post_function
)
KSMCache
クラスのデフォルトキャッシュ機能は、常に最後のリクエストのみを保存します。例えば、UID1に対するフィルタリングリクエストがキャッシュされている場合、ネットワーク切断時に同じキャッシュからUID2をリクエストすると、空のレスポンスが返されます (UID2が同じKSMアプリに共有されている場合でも、それがキャッシュされていなければ利用できません)。
キャッシュからのレコード更新 (または新しいレコードの作成) は、キャッシュされたレコードデータを無効にし、同じレコードを連続して更新する操作は失敗します。異なるレコードを修正する場合、バッチ更新は機能します。キャッシュされたレコードを更新した後は、常に get_secrets
関数を呼び出してキャッシュをリフレッシュし、ボルトから新しいレコードリビジョンなどの更新されたメタデータを取得するようにしてください。
フォルダ
フォルダは完全なCRUD (作成、読み取り、更新、削除操作) をサポートしています。
フォルダの読み取り
フォルダの完全な階層構造をダウンロードします。
get_folders()
レスポンス
型: List[KeeperFolder]
使用例
from keeper_secrets_manager_core import SecretsManager
from keeper_secrets_manager_core.storage import FileKeyValueStorage
secrets_manager = SecretsManager(config=FileKeyValueStorage('ksm-config.json'))
folders = secrets_manager.get_folders()
フォルダの作成
CreateOptions
とフォルダ名の指定が必要です。CreateOptions
はフォルダのUIDパラメータ (共有フォルダのUID) が必須ですが、サブフォルダのUIDはオプションであり、指定されていない場合は、通常の新しいフォルダが親 (共有フォルダ) の直下に作成されます。サブフォルダは、親の共有フォルダの直接の下位オブジェクトである必要はありません。親フォルダから何階層も深い位置にサブフォルダを作成することができます。
create_folder(create_options:CreateOptions, folder_name: str, folders=None)
create_options
CreateOptions
はい
親およびサブフォルダのUID
folder_name
str
はい
フォルダ名
folders
List[KeeperFolder]
いいえ
None
CreateOptionsで作成した親とサブフォルダの検索に使用するフォルダのリスト
使用例
from keeper_secrets_manager_core import SecretsManager
from keeper_secrets_manager_core.storage import FileKeyValueStorage
secrets_manager = SecretsManager(config=FileKeyValueStorage('ksm-config.json'))
co = CreateOptions(folder_uid="[SHARED_FOLDER_UID]", subfolder_uid="")
new_folder_uid = secrets_manager.create_folder(co, "new_folder")
フォルダの更新
フォルダのメタデータ (現在はフォルダ名のみ) を更新します。
update_folder(folder_uid: str, folder_name: str, folders=None)
folder_uid
str
はい
フォルダのUID
folder_name
str
はい
新しいフォルダ名
folders
List[KeeperFolder]
いいえ
None
親フォルダの検索に使用するフォルダのリスト
使用例
from keeper_secrets_manager_core import SecretsManager
from keeper_secrets_manager_core.storage import FileKeyValueStorage
secrets_manager = SecretsManager(config=FileKeyValueStorage('ksm-config.json'))
secrets_manager.update_folder("[FOLDER_UID]", "new_folder_name")
フォルダの削除
フォルダのリストを削除します。空でないフォルダを削除するには、force_deletion
フラグを使用します。
delete_folder(folder_uids:List[str], force_deletion: bool = False)
folder_uids
List[str]
はい
フォルダUIDリスト
force_deletion
bool
いいえ
False
空でないフォルダを強制的に削除
使用例
from keeper_secrets_manager_core import SecretsManager
from keeper_secrets_manager_core.storage import FileKeyValueStorage
secrets_manager = SecretsManager(config=FileKeyValueStorage('ksm-config.json'))
secrets_manager.delete_folder(["[FOLDER_UID1]", "[FOLDER_UID2]"], True)
最終更新