Python SDK

Keeper Secrets Manager用Python SDKの詳細なドキュメント

ダウンロードとインストール

PIPによるインストール

pip3 install -U keeper-secrets-manager-core

ソースコード

Pythonのソースコードは、GitHubリポジトリで入手できます

SDKの使用

初期化

トークンのみを使用して (後で使用するために) 新しい設定を生成するには、トークンをバインドして、config.jsonに完全に読み込むための読み取り操作が少なくとも1回必要です。

SecretsManager(token, config)
# トークンのみを使用して(後で使用するために)設定を生成するには、
# トークンをバインドするアクセス操作が少なくとも1回必要です
#get_secrets(uids=None)

パラメータ

必須

説明

token

はい

ワンタイムアクセストークン

String

config

はい

ストレージの設定

KeyValueStorage

シークレットの取得

get_secrets(uids=None)

パラメータ

必須

デフォルト

説明

uids

String[]

オプション

None

取得するUIDレコード

戻り値

型:Record[]

Keeperのすべてのレコード、または指定されたUIDを持つレコード

シークレットから値を取得

パスワードを取得

シークレットをKeeper Secrets Managerから取得すると、このショートカットでそのシークレットのパスワードを取得します。

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)

Keeper表記法の形式と機能については、Keeper表記法のドキュメントをご参照ください

パラメータ

必須

デフォルト

説明

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

    • 共有フォルダには、Secrets Managerアプリケーションからアクセスできる必要があります

    • あなたとSecrets Managerアプリケーションには編集権限が必要です

    • 共有フォルダには、少なくとも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オブジェクトを作成するときにPOSTキャッシュ関数を指定します。

Python SDKには、クエリをキャッシュしてファイルに保存するデフォルトのキャッシュ関数KSMCacheが含まれています。

secrets_manager = SecretsManager(
    token='<One Time Access Token>',
    config=FileKeyValueStorage('ksm-config.json'),
    custom_post_function=KSMCache.caching_post_function
)

フォルダ

フォルダは完全な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フラグを使用します。

force_deletionを使用する場合は、親フォルダと子フォルダのUIDを一緒に送信しないでください。削除する順序によっては、エラーが発生する可能性があります。_たとえば、_親が子を先に強制削除した場合。リストが必ずしもFIFO順で処理される保証はありません。

ボルトに存在しないフォルダのUIDやKSMアプリケーションで共有されていないフォルダのUIDはエラーになりません。

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)

最終更新