Rust SDK

Keeperシークレットマネージャー用Rust SDK資料

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

Cargoでパッケージ追加

cargo add keeper-secrets-manager-core

ソースコード

RustのソースコードについてはGitHubリポジトリをご覧ください。

SDKの使用方法

初期化

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

SecretsManager::new(client_options)?

パラメータ

必須

説明

token

はい

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

String

config

はい

ストレージ設定

KeyValueStorage

シークレットの取得

let records_filter = Vec::new(); // UIDに基づいて必要に応じてフィルターを追加
let secrets = secrets_manager.get_secrets(records_filter)?;

パラメータ

必須

デフォルト

説明

uids

Vec<String>

任意

なし

取得するレコードUID

レスポンス

型: Vec

すべてのKeeperレコード、または指定したUIDのレコード

デフォルトでは、指定したトークンでアクセス可能なすべてのレコードを取得します

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

パスワードを取得

Keeperシークレットマネージャーからシークレットを取得した後に、そのパスワードを参照できます。

secret.get_standard_field_value('password', true);

標準フィールドの取得

secret.get_standard_field_value(“FIELD_TYPE”.to_string(), true);
パラメータ
必須
デフォルト
説明

field_type

String

はい

None

取得するフィールドタイプ

single

boolean

任意

False

最初の値のみを返す

フィールドタイプはKeeperレコードタイプに基づきます。利用可能なフィールドの詳細な一覧については、コマンダーで record-type-info コマンドをご参照ください。

カスタムフィールドの取得

secret.get_custom_field_value(“FIELD_TYPE”, true);
パラメータ
必須
デフォルト
説明

field_type

String

はい

-

取得するフィールドの型

single

boolean

任意

False

最初の値のみを返す

カスタムフィールドはレコードタイプ定義に含まれないフィールドで、ユーザーによって追加できます。

レスポンス

型: String または Vec<String>

フィールドの値または値の集合。単一値になるのは single=true オプションが渡された場合のみです。

タイトルによるレコード検索

secrets_manager.get_secret_by_title(record_title);

レスポンス

型: Record<Option<Vec<Record>>>

パラメータ
必須
説明

record_title

&str

はい

取得するレコードのタイトル

Keeper表記法を使用して値を取得

secrets_manager.get_notation(query)

Keeper表記法の形式と機能については、こちらのページ をご参照ください。

パラメーター
必須
デフォルト
説明

query

String

はい

-

指定したフィールドから値を取得するためのKeeper表記法クエリ

戻り値

クエリで指定したフィールドの値

型: String または Vec<String>

TOTPコードの取得

get_totp_code(&url)

戻り値

型: Result<TotpCode,KSMRError>

パラメータ
必須
説明

url

String

はい

TOTP URL

シークレットの更新

シークレットへの変更を保存する

secrets_manager.save(Record, UpdateTransactionType)
パラメータ
必須
デフォルト
説明

record

Record

はい

ストレージおよびクエリ構成

transaction_type

UpdateTransactionType

はい

トランザクション更新のための構成

フィールド値は set_standard_field_value_mut または set_custom_field_value_mut を使用して設定します

フィールドはタイプで検索します。

フィールドタイプの一覧については、レコードタイプのページをご参照ください。一部のフィールドは複数の値を持つ場合があり、その場合は値をリストに設定できます。

標準フィールド値の更新

secret.set_standard_field_value_mut(field_type, "new_field_value".into())
パラメータ
必須
デフォルト
説明

field_type

String

はい

取得するフィールドの型

transaction_type

UpdateTransactionType

はい

なし

トランザクション更新のための構成

フィールドはタイプで検索します。フィールドタイプの一覧については、レコードタイプのページをご参照ください。

カスタムフィールド値の更新

secret.set_custom_field_value_mut(field_type, "new_field_value".into());
パラメータ
必須
デフォルト
説明

field_type

String

はい

取得するフィールドの型

transaction_type

UpdateTransactionType

はい

なし

トランザクション更新のための構成

ランダムパスワードの生成

generate_password_with_options(password_options);
パラメータ
必須
デフォルト
説明

password_options

PasswordOptions

はい

パスワードのための構成

charset

String

オプション

パスワードに含める特殊文字の集合

length

i32

オプション

64

パスワードの長さ

lowercase

i32

オプション

0

パスワードに含める小文字の数

uppercase

i32

オプション

0

パスワードに含める大文字の数

digits

i32

オプション

0

パスワードに含める数字の数

special_characters

i32

オプション

0

パスワードに含める特殊文字の数

各パラメータは含める最小文字数を示します。例えば uppercase は大文字の最小数となります。

ファイルのダウンロード

download_file(file_name, path);
パラメータ
必須
デフォルト
説明

file_name

&str

はい

ダウンロードするファイル名

path

&str

はい

保存先パス

ファイルのアップロード

upload_file(owner_record, keeper_file);

ファイルのアップロードのパラメータ

パラメータ
必須
デフォルト
説明

owner_record

Record

はい

なし

ファイルをアップロードするレコード

keeper_file

KeeperFileUpload

はい

アップロードするファイル

ファイルのパラメータ

パラメータ
必須
デフォルト
説明

file_path

&str

はい

アップロードするファイルのパス

file_name

Option<&str>

はい

アップロードするファイルの名前

file_title

Option<&str>

はい

アップロードするファイルのタイトル

mime_type

Option<&str>

はい

なし

ファイル内のデータの種類。指定がなければ application/octet-stream が使用されます

戻り値

型: String

添付ファイルのファイルUID

シークレットの作成

要件

  • 共有フォルダUID

    • 共有フォルダはシークレットマネージャーアプリケーションからアクセス可能であること

    • あなたとシークレットマネージャーアプリケーションに編集権限があること

    • 共有フォルダ内に少なくとも1件のレコードがあること

  • 作成するレコードとレコードフィールドが正しい形式であること

    • 各レコードタイプのフィールド形式についてこちらのページを参照

  • TOTPフィールドはKSM SDK外部で生成されたURLのみ受け付けます

  • レコード作成後は upload_file を使って添付ファイルをアップロードできます

secrets_manager.create_secret(folder_uid, record);
パラメータ
必須
デフォルト
説明

record_type

DefaultRecordType

はい

なし

作成するレコードのタイプ

title

String

はい

作成されたレコードのタイトル

note

String

はい

なし

作成されたレコードに記載するノート

value

String

はい

フィールドの値

label

String

はい

なし

フィールドのラベル

required

bool

はい

false

フィールドが必須かどうかを定義します

privacy_screen

bool

はい

false

フィールド値を隠すかどうかを定義します

戻り値

型: String

新規レコードのレコードUID

シークレットの削除

Rust KSM SDKでKeeperボルト内のレコードを削除できます

secrets_manager.delete_secret(vec![record_uid]);
パラメータ
必須
デフォルト
説明

record_uid

String

はい

なし

削除対象のレコードUID

キャッシュ

ネットワークにアクセスできなくなった場合にシークレットへのアクセスを失わないようにするため、Rust SDKではシークレットをローカルマシン上の暗号化ファイルにキャッシュできます。

キャッシュの設定と構成

Rust SDKでキャッシュを設定するには、SecretsManager オブジェクトを作成する際にキャッシュ用のポスト関数を含める必要があります。

Rust SDKには KSMRCache クラスに標準のキャッシュ機能が含まれており、キャッシュされたクエリをローカルファイルに保存します。これにより災害復旧の仕組みとして機能します(ネットワーク接続がある場合は常にネットワークを優先し、ウェブボルトにアクセスできない場合のみキャッシュを使用します)。

use keeper_secrets_manager_core::{core::{ClientOptions, SecretsManager}, custom_error::KSMRError, storage::FileKeyValueStorage, cache::KSMRCache};
fn main()-> Result<(), KSMRError>{
    let cache = KSMRCache::new_file_cache(Some("./cache.bin"))?;

    let token = "<Token>".to_string();

    let file_name = FileKeyValueStorage::new_config_storage("test.json".to_string())?;
    
    let mut client_options = ClientOptions::new_client_options_with_token(token, file_name);
    client_options.set_cache(cache.into()); 
    
    let mut secrets_manager = SecretsManager::new(client_options)?;  
    let secrets = secrets_manager.get_secrets(Vec::new())?;
    for secret in secrets {
        info!("Secret: {}", secret);
    };
}

フォルダ

フォルダは、作成・読み取り・更新・削除 (CRUD) の全操作に対応しています。

フォルダの読み取り

フォルダ階層全体をダウンロードします。

get_folders()

戻り値

型: Vec<KeeperFolder>

フォルダの作成

CreateOptions とフォルダ名の指定が必要です。CreateOptions 内のフォルダUIDパラメータは必須で、これは共有フォルダのUIDを指します。サブフォルダのUIDは任意であり、指定されない場合は親 (共有フォルダ) 直下に通常のフォルダが新規作成されます。サブフォルダは必ずしも親共有フォルダの直接の子である必要はなく、階層を深く設定することも可能です。

create_folder(create_options: CreateOptions, folder_name: str, folders=None)
パラメータ
必須
デフォルト
説明

create_options

CreateOptions

はい

なし

親とサブフォルダのUID

folder_name

str

はい

フォルダ名

folders

Vec<KeeperFolder>

いいえ

なし

CreateOptionsの親/サブフォルダ検索に使用するフォルダ一覧

フォルダの更新

フォルダのメタデータを更新します。現在はフォルダ名のみ更新可能です。

secrets_manager.update_folder(folder_uid: str, folder_name: str, folders=None)
パラメータ名
必須
デフォルト
説明

folder_uid

str

はい

フォルダUID

folder_name

str

はい

新しいフォルダ名

folders

Vec<KeeperFolder>

いいえ

なし

親フォルダを検索するために使用するフォルダのリスト

フォルダの削除

フォルダのリストを削除します。force_deletion フラグで空でないフォルダも削除できます

ボルトに存在しない、またはKSMアプリケーションと共有されていないフォルダUIDがあっても、エラーにはなりません。

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

delete_folder(vec![“<FOLDER_UID>”.to_string()], false);
パラメータ名
必須
デフォルト
説明

folder_uids

Vec<String>

はい

フォルダUIDのリスト

force_deletion

boolean

いいえ

false

空でないフォルダを強制的に削除

最終更新