For the complete documentation index, see llms.txt. This page is also available as Markdown.

Ruby SDK

Keeperシークレットマネージャー用Ruby SDKの詳細資料

Keeper Secrets Manager Ruby SDK

Keeperシークレットマネージャー (KSM) は、ゼロ知識のシークレット管理プラットフォームです。Ruby SDKを使うと、RubyアプリケーションからKeeperボルトへプログラム経由でアクセスできます。

要件

Ruby 3.1以降。

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

インストール

詳しくは、RubyGemsのパッケージページをご参照ください。

gemを使用してインストールする場合

Gemfileに追加する場合

次に以下を実行します。

ソースコード

RubyのソースコードはGitHubリポジトリで公開されています。

SDKの使用

ストレージの初期化

SDKでは、クライアントデバイス上にストレージを初期化するためにワンタイムアクセストークンが必要です。初期化後は、SDKが構成を保存し、以降の利用時に使用します。

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

token

String

任意

nil

初期バインディングに使用するワンタイムアクセストークン

config

KeyValueStorage

必須

-

構成を永続化するためのストレージ実装

hostname

String

任意

'keepersecurity.com'

APIホスト名 (例: EUデータセンターの場合は 'keepersecurity.eu')

verify_ssl_certs

Boolean

任意

true

SSL証明書検証の有効/無効の設定

ワンタイムアクセストークンを使用する場合、トークンを紐付けて構成を完全に取得するために、少なくとも1回の読み取り操作が必要です。

使用例

ワンタイムアクセストークンを使用する場合:

ファイルベースのストレージを使用する場合

アプリケーション再起動後も構成を永続的に保持する場合:

ボルトで生成されたBase64構成ファイルを使用して接続する場合:

Base64構成文字列を使用する場合

KeeperSecretsManager.from_config は、Base64エンコードされた構成文字列向けの便利な初期化メソッドです。コマンダーの export コマンドが出力する形式や、KSM_CONFIG などの環境変数に保存する形式と同じです。

KeeperSecretsManager.new が受け付けるキーワードオプション (:hostname:verify_ssl_certs:proxy_url など) は、第2引数のハッシュとしても指定できます。

環境変数を使用する場合

環境変数から読み取り専用の構成をロードします。 EnvironmentStorage では、各構成キーが区切りなしで <prefix><KEY.upcase> に対応するため、変数名はレコード側のキャメルケース名とは一致しません。

create_secret および upload_file では KSM_APPOWNERPUBLICKEY が必要です。 EnvironmentStorage は読み取り専用のため、この値は環境変数として直接設定する必要があります。ファイルやメモリ上のストレージとは異なり、ワンタイムアクセストークンを紐付けてもこの値は設定されません。

バインディングライフサイクル

ワンタイムトークンは、クライアント作成時ではなく、最初の get_secrets() 呼び出し時に引き換えられます。構成を外部ストア (AWS Secrets Manager、Azure Key Vaultなど) に永続化する場合は、その呼び出しの後にのみ読み出してください。詳しくは、バインディングライフサイクルをご参照ください。

シークレットの取得

シークレットの取得

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

uids

Array<String>

任意

nil

取得対象のレコードUID。nil または空の場合はすべてのシークレットを取得

request_links

Boolean

任意

false

true の場合、各返却レコードの links 配列にリンク認証情報エントリが入り、record.get_links でアクセス可能

レスポンス:

型: Array<KeeperRecord>

すべてのKeeperレコード、または指定したUIDに一致するレコードの配列。

使用例

すべてのシークレットを取得する場合:

UIDを指定してシークレットを取得する場合:

タイトルでシークレットを取得する場合

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

title

String

必須

-

検索対象のレコードタイトル (完全一致)

レスポンス:

型: Array<KeeperRecord> (get_secrets_by_title) または KeeperRecord (get_secret_by_title)

タイトルに一致するすべてのレコード、または最初に一致したレコード。

使用例

リンク認証情報

PAMレコードにリンク認証情報がある場合、get_secretsrequest_links: true を渡すと含められます。record.get_links を呼び出すと、生の links 配列を型付きの Array<KeeperRecordLink> として取得できます。

KeeperRecordLink のアクセサ (いずれも例外を発生させません。失敗時は false / nil を返します):

アクセサ
戻り値
説明

record_uid

String

リンク先レコードのUID

path

String または nil

識別子: "meta""ai_settings""jit_settings"、または認証情報リンクの場合は nil

admin_user?

Boolean

管理者権限を付与するリンク

launch_credential?

Boolean

起動用認証情報のリンク

iam_user?

Boolean

IAMユーザー認証情報のリンク

allows_rotation?

Boolean

ローテーション許可 (allowedSettings を参照)

allows_connections?

Boolean

接続の許可

allows_session_recording?

Boolean

セッション録画の許可

allows_port_forwards?

Boolean

ポート転送の許可

get_link_data(record_key)

Hash または nil

パース済みのリンクデータ全体 (平文または復号済み)

get_decrypted_data(record_key)

String または nil

AES-256-GCMで復号したデータ文字列 (暗号化パス向け)

get_meta_data

Hash または nil

"meta" リンクからのPAMローテーション/接続設定

get_ai_settings_data(record_key)

Hash または nil

"ai_settings" リンクからのAI設定

get_jit_settings_data(record_key)

Hash または nil

"jit_settings" リンクからのJIT設定

record_keyrecord.record_key (復号済みレコードキーのバイト列) で、暗号化されたリンクパス (ai_settingsjit_settings) でのみ必要です。平文JSONのリンクはキーなしでパースできます。

詳しくは、リンク認証情報をご参照ください。

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

シークレットを取得した後、フィールド値には複数の方法でアクセスできます。

動的フィールドアクセスを使用する場合

明示的なフィールドメソッドを使用する場合

Keeper表記法を使用する場合

Keeper表記法の形式と機能については、Keeper表記法の資料をご参照ください。

エラーセーフな表記法: try_get_notation

try_get_notationget_notation の例外非発生ラッパーです。成功時は Array を返し、エラー時は空配列 [] を返すため、フィールドが存在しない場合に値なしとして扱いたいときは rescue ブロックなしで安全に使えます。

get_notation は無効な入力に対して引き続き NotationError を発生させます。エラー時に処理を止めたい場合に適しています。

配列表記法: get_notation_resultstry_get_notation_results

get_notation_results は表記法URIを解決し、一致する値の Array を常に返します。複数値フィールド (例: host フィールド内の複数ホスト) ではすべての要素を保持します。無効な入力では NotationError を発生させます。複合 (文字列以外) のフィールド値はJSON文字列として返され、Rubyのハッシュにはなりません。

try_get_notation_results は例外非発生の派生です。エラーをログに記録し、例外の代わりに [] を返します。

対照的に、get_notation はスカラー (多くのセレクタでは最初の値) を返し、try_get_notationget_notationArray() で包みます。try_get_notation は値が1件だけの場合でも単一要素の配列を返します。複数値フィールドの全値セットが必要なときは get_notation_results を使用してください。

参照フィールドの展開

一部のPAMレコードフィールドは、インライン値ではなく他レコードを参照するUIDを格納します。inflate_field_value は、参照先レコードを取得してフィールド値を直接返すことで、それらのUIDを解決します。

パラメータ
必須
説明

uids

Array<String>

必須

解決対象の参照レコードUID

replace_fields

Array<String>

必須

参照先レコードから抽出するフィールドタイプ (例: ['address'])

レスポンス:

型: Array。解決済みUIDごとに1エントリで、nil エントリは除去されます。各エントリは解決済みフィールド値 (StringHash、またはネストした Array。フィールドタイプによる) です。

参照タイプが解決するフィールドタイプを調べるには、get_inflate_ref_types を呼び出します。

フィールドタイプ
解決先

addressRef

['address']

cardRef

['paymentCard', 'text', 'pinCode', 'addressRef']

その他

[] (不明な参照タイプは空配列)

使用例

TOTPコードの取得

TOTPコードを生成するには、レコードからTOTP URLを取得し、KeeperSecretsManager::TOTP モジュールを使用します。TOTPの生成には、シークレットのデコード用に base32 gem (gem install base32) が必要です。

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

secret

String

必須

-

Base32形式でエンコードされたTOTPシークレット

algorithm

String

任意

'SHA1'

ハッシュアルゴリズム (SHA1、SHA256、SHA512)

digits

Integer

任意

6

コードの桁数

period

Integer

任意

30

有効期間 (秒)

レスポンス:

型: String

2要素認証に使用する現在のTOTP (Time-Based One-Time Password) コード。

使用例

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

文字種や長さなどを指定して、暗号学的に安全なランダムパスワードを生成できます。シークレットをプログラムから作成または更新する際に便利です。

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

length

Integer

任意

64

パスワード全体の長さ

lowercase

Integer

任意

0

小文字 (a-z) の最小数

uppercase

Integer

任意

0

大文字 (A-Z) の最小数

digits

Integer

任意

0

数字 (0-9) の最小数

special_characters

Integer

任意

0

記号 (!@#$%^&*()_+-=[]{}) の最小数

レスポンス:

型: String

指定した要件を満たす、暗号学的に安全なランダムパスワード。

この関数は、暗号学的に安全な乱数生成を行うRubyの SecureRandom を使用し、適切な文字分布を確保するためにFisher-Yatesシャッフルを適用します。

使用例

デフォルト設定で64文字のパスワードを生成する場合:

生成要件を指定する場合:

新しいシークレットを作成する際に使用する場合:

既存のシークレットを更新する際に使用する場合:

パスワードローテーションスクリプト:

PAMレコードタイプ

PAMレコードは record.type で識別できます。

全11種類のPAMレコードタイプのフィールド定義は、PAMレコードタイプをご参照ください。

PAMローテーショントランザクション

complete_transaction は、ステージ済みのPAMローテーション更新を確定またはロールバックします。ローテーションワークフローでは、update_secret の後に呼び出して変更をサーバーにコミットします。

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

record_uid

String

必須

-

ステージ済みトランザクションを確定する対象レコードのUID

rollback

Boolean

任意

false

true の場合、コミットではなくステージ済み更新をロールバック

レスポンス:

型: Boolean。成功時は true

使用例

update_secret は変更をステージし、実際にコミットまたは破棄するのは complete_transaction です。complete_transaction を省略すると、変更はステージされたまま残ります。

シークレットの更新

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

record

KeeperRecord

必須

-

ボルト内で更新する、変更済みのレコード

レスポンス:

型: void

変更された値を使って、ボルト内のシークレットを更新します。

使用例

非確定保存: savesave_with_options

savecomplete_transaction を呼び出さずにレコード更新をサーバーへ送信します。変更をステージしてから別途コミットまたはロールバックするPAMローテーションワークフローや、確定のための往復を発生させずにレコードを更新したい場合に使用します。

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

record

Dto::KeeperRecordHash

必須

-

更新するレコード (get_secrets で取得済みであること)

transaction_type

String または nil

任意

nil

PAMトランザクションタイプ ('rotation''general'、または nil)

links_to_remove

Array<String>

任意

nil

このレコードから削除するリンク先レコードのUID

レスポンス:

型: Boolean (成功時は true)。

UpdateOptions を完全に制御する場合は、save_with_options を直接呼び出します。

update_options は、transaction_type:links_to_remove: 属性を持つ Dto::UpdateOptions オブジェクトです。

update_secret との比較

update_secret

save / save_with_options

complete_transaction を呼び出す

はい (常に)

いいえ

更新後に record.revision を更新する

はい

いいえ

キー取得のための追加の get_secrets 往復

はい

いいえ (既存キーを使用)

用途

標準的なCRUD更新

PAMステージング、バッチ更新、手動コミット制御

使用例

ファイルのダウンロード

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

file

KeeperFile

必須

-

ダウンロード対象となるKeeperRecord内のファイルオブジェクト

レスポンス:

型: Hash

以下の情報を含むハッシュを返します。

  • 'name' - ファイル名

  • 'data' - バイナリ文字列としてのファイルデータ

  • 'size' - ファイルサイズ (バイト単位)

  • 'type' - ファイルのMIMEタイプ

使用例

ファイルサムネイルのダウンロード

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

file_data

KeeperFile または Hash

必須

-

レコード内のファイルオブジェクト、または生のファイルメタデータハッシュ

レスポンス:

型: Hash

以下の情報を含むハッシュを返します。

  • 'file_uid' - ファイルUID

  • 'data' - 復号済みサムネイル内容 (バイナリ文字列)

  • 'size' - サムネイルサイズ (バイト単位)

使用例

ファイルのアップロード

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

owner_record_uid

String

必須

-

ファイルを添付する対象レコードのUID

file_data

String

必須

-

ファイル内容 (バイナリまたはテキスト)

file_name

String

必須

-

Keeper上でのファイル名

file_title

String

任意

nil

Keeper上でのファイルのタイトル/説明

レスポンス:

型: String

アップロードされたファイルのUID。

使用例

ファイルパスからのアップロード

upload_file_from_path はディスク上のファイルを自動で読み込むため、手動の File.binread 呼び出しは不要です。

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

owner_record_uid

String

必須

-

ファイルを添付する対象レコードのUID

file_path

String

必須

-

ディスク上のファイルへの絶対パスまたは相対パス

file_title

String

任意

ファイル名

Keeper上に表示するタイトル。省略時はベースファイル名

レスポンス:

型: String (アップロードされたファイルのUID)。

シークレットの作成

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

record_data

Hash

必須

-

レコード構造 (type、title、fields、custom、notes) を含むハッシュ

options

CreateOptions

必須

-

folder_uid (必須) と任意設定を含むCreateOptionsオブジェクト

レスポンス:

型: String

作成されたシークレットのUID。

要件:

  • 共有フォルダUID (folder_uidを指定する場合)

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

  • 自身とシークレットマネージャーアプリケーションの両方に編集権限があること

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

  • レコードのフィールド形式が正しく構成されていること (フィールドタイプの資料を参照)

使用例

カスタムタイプレコードの作成

事前取得したフォルダを使った作成

create_secret_with_optionsCreateOptions オブジェクトと、任意の事前取得済みフォルダ一覧を受け取ります。同一セッションで複数レコードを作成し、すでにフォルダ一覧を保持している場合に使用します。内部の get_folders 呼び出しをスキップできるため、往復を削減できます。

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

create_options

Dto::CreateOptions

必須

-

folder_uid: (必須) と subfolder_uid: (任意) を持つオプションオブジェクト

record_data

Dto::KeeperRecordHash

必須

-

作成するレコード (create_secret と同じ形状)

folders

Array<KeeperFolder>

任意

nil

事前取得したフォルダ一覧。nil の場合は自動取得

レスポンス:

型: String (新規作成されたレコードのUID)。

create_secret は、一般的な単件作成向けの便利ラッパーで、内部で create_secret_with_options を呼び出します。

シークレットの削除

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

uids

String または Array<String>

必須

-

削除対象のレコードUID (複数指定可)

レスポンス:

型: void

指定したシークレットをボルトから削除します。

使用例

フォルダ

Ruby SDKでは、フォルダ操作に対して完全なCRUD (作成・取得・更新・削除) が利用できます。

フォルダの取得

レスポンス:

型: Array<KeeperFolder>

シークレットマネージャーアプリケーションがアクセス可能なすべてのフォルダ。

使用例

フォルダパスの取得

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

folder_uid

String

必須

-

フォルダのUID

レスポンス:

型: String

フォルダの完全なパス ("/" 区切りのパンくずリスト形式)。

使用例

名前でフォルダを検索

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

name

String

必須

-

検索するフォルダ名

parent_uid

String

任意

nil

指定した親フォルダ内を対象に検索する場合に指定

レスポンス:

型: KeeperFolder または nil

最初に一致したフォルダ。一致しない場合はnil。

使用例

フォルダツリーの構築

フォルダの作成

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

name

String

必須

-

作成するフォルダ名

parent_uid

String

必須

-

親となる共有フォルダのUID

レスポンス:

型: String

作成されたフォルダのUID。

使用例

フォルダの更新

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

folder_uid

String

必須

-

更新対象フォルダのUID

new_name

String

必須

-

新しいフォルダ名

レスポンス:

型: void

指定したフォルダの名前を変更します。

使用例

フォルダの削除

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

folder_uid

String

必須

-

削除対象のフォルダUID

force

Boolean

任意

false

trueの場合、フォルダと内容物をすべて削除。falseの場合、空のフォルダのみ削除

レスポンス:

型: void

指定したフォルダをボルトから削除します。

使用例

キャッシュ

シークレットをローカルにキャッシュすることで、パフォーマンスを向上できます。

CachingStorageの使用

組み込みの災害復旧キャッシュ

KeeperSecretsManager::CachingPostFunction は、ドロップインの custom_post_function です。成功した各APIレスポンスを暗号化済みローカルキャッシュファイルに保存し、ネットワーク不可時にはそのキャッシュへ自動フォールバックします。Python、Java、JavaScript、.NET SDKにある災害復旧キャッシュのパターンと同等です。

キャッシュファイルの場所のデフォルトは ./ksm_cache.bin です。別ディレクトリへ移す場合は、環境変数 KSM_CACHE_DIR を設定します。

キャッシュを直接管理する場合:

custom_post_function によるカスタムキャッシュ

custom_post_function は、読み取り専用の get_secret および get_folders の処理でのみ呼び出されます (作成、更新、削除では常にSDK標準の通信を使います)。呼び出し形式は call(url, transmission_key, encrypted_payload, verify_ssl_certs) です。戻り値は生のレスポンス本文ではなく、 Dto::KSMHttpResponse (status_code:data:、任意の http_response:) です。

エラー処理

SDKには、エラー状況ごとに専用の例外クラスがあります。

一般的なエラーシナリオ

高度な構成

カスタムホスト名

SSL証明書検証

カスタムロギング

HTTPプロキシ

初期化時に proxy_url: を渡すと、SDKのすべての通信 (API呼び出し、ファイルアップロード、ファイルダウンロード) をHTTPまたはHTTPSプロキシ経由にできます。認証付きプロキシは、URLに認証情報を埋め込んで指定します。

proxy_url: を指定しない場合、SDKは環境変数 HTTPS_PROXY および https_proxy を自動的に確認します。

不正な proxy_url (不正な形式のURL、またはホスト欠落) は、初期化時に説明付きの ArgumentError を発生させます。

すべての構成オプション

フィールドタイプヘルパー

型付きフィールドを作成するための任意の便利メソッドです。

ダイナミックレコードアクセス

Ruby SDKでは、method_missing を利用してJavaScriptのような動的フィールドアクセスを実現しています。

最終更新