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

Java/Kotlin SDK

Keeperシークレットマネージャー用JavaとKotlin SDKの詳細

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

MavenまたはGradleを使用したインストール

詳細についてはhttps://central.sonatype.com/artifact/com.keepersecurity.secrets-manager/coreをご参照ください。

暗号プロバイダーに関する注意事項

KeeperシークレットマネージャーSDKでは、BouncyCastleは必須ではありません。以下の暗号プロバイダーを利用できます。

  • BouncyCastle FIPS ( bc-fips:2.1.1、上記のインストール手順で使用しているバージョン )

  • Javaの標準暗号プロバイダー

  • JCE互換の暗号プロバイダー

本ドキュメント内のサンプルでは、説明を目的としてBouncyCastle FIPSを使用しています。

暗号化プロバイダ

KeeperシークレットマネージャーSDK では、開発者が必要とされる暗号化プロバイダを使用することが想定されています。特定のプロバイダが追加されない限り、Javaランタイムのデフォルトの暗号化モジュールを使用します。本ページの例では、BouncyCastle FIPSプロバイダを使用しています。

ソースコードで、プロバイダがセキュリティコンテキストにロードされていることを確認します。

カスタムセキュリティプロバイダーの使用方法については、こちらのページの CryptoUtilsTest.kt ファイルをご参照ください。

ソースコード

Java/Kotlinのソースコードは、GitHubリポジトリで入手できます。

SDKの使用

ストレージの初期化

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

シークレットを取得するには、まずマシンのローカルストレージを初期化する必要があります。

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

storage

KeyValueStorage

はい

ストレージの実装

oneTimeToken

String

はい

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

hostName

String

オプション

null

カスタムホスト名

使用例

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

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

シークレットの取得

パラメータ

型

必須

デフォルト

説明

options

SecretsManagerOptions

はい

ストレージとクエリの設定

recordsFilter

List<String>

オプション

空のリスト

レコードの検索フィルタ

レスポンス

型: KeeperSecrets

すべてのKeeperレコード、または指定したフィルタ条件に一致するレコードを含むオブジェクト

使用例

すべてのシークレットを取得

UIDで1つのシークレットを取得

タイトルでシークレットを取得

パラメータ
型
必須
説明

recordTitle

String

はい

検索するレコードタイトル

使用例

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

パスワードを取得

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

フィールドを取得

フィールド値を取得するには、戻り値を対応するフィールドタイプのクラスにキャストする必要があります。フィールドタイプの一覧については、レコードタイプをご参照ください。

Keeper表記法

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

パラメータ
型
必須
説明

secrets

KeeperSecrets

はい

表記法の解決対象となるシークレットのコレクション

query

String

はい

目的フィールドのドット記法クエリ

TOTPコードを取得

パラメータ
型
必須
説明

url

String

はい

TOTP Url

PAMレコードタイプ

PAMレコードは record.getType() で識別できます。

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

リンク済み認証情報

PAMリソースレコードとリンク済み認証情報を含めて取得するには、QueryOptions で requestLinks = true を指定します。各リンクは KeeperRecordLink として返り、対象レコードのUIDや権限・許可操作 (isAdminUser()、isLaunchCredential()、allowsRotation()、allowsConnections() など) を型付きアクセサで参照できます。詳しくはPAMレコードのリンク済み認証情報をご参照ください。

QueryOptionsのパラメータ

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

recordsFilter

List<String>

いいえ

空

レコードUIDでフィルタリング

foldersFilter

List<String>

いいえ

空

フォルダUIDでフィルタリング

requestLinks

Boolean?

いいえ

null

リンク取得時は true。null / false の場合はリンクなし

リンク済み認証情報の取得手順の概要は、リンク済み認証情報をご参照ください。

シークレットの値を更新

シークレットを更新

updateSecret を使用して、シークレットに加えた変更を保存します。正常に実行されると、変更がKeeperボルトに反映されます。

KeeperRecord.isEditable は、シークレットマネージャーアプリケーションの共有に設定されている書き込み権限を反映します。書き込みを行う前に読み取り専用レコードを検出したい場合は、updateSecret を呼び出す前にこの値を確認してください。SDKはこのフィールドを強制しないため、読み取り専用レコードへの書き込みはサーバー側で失敗します。

パラメータ

型

必須

説明

options

SecretsManagerOptions

はい

ストレージとクエリの設定

recordToUpdate

KeeperRecord

はい

更新するレコード

transactionType

UpdateTransactionType

いいえ

2段階更新を開始する場合に設定し、completeTransactionで完了させます

パスワードを更新

パラメータ
型
必須
説明

password

String

はい

設定する新しいパスワード

他のフィールドを更新

レコードの各フィールドタイプは、クラスに相当します。 フィールドの値に正しくアクセスするために、フィールドを対応するクラスにキャストします。 フィールドタイプについては、レコードタイプのドキュメントをご参照ください。

フィールドには複数の値を設定でき、リストでアクセスします。 この例では、1つの値のみを指定するログインフィールドを更新するため、値リスト内の1つの値を更新します。

ランダムなパスワードを生成

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

minLength

Int

オプション

32

生成するパスワードの最小長

lowercase

Int

オプション

null

小文字の最小数 (0以下の場合は正確な個数として扱う)

uppercase

Int

オプション

null

大文字の最小数 (0以下の場合は正確な個数として扱う)

digits

Int

オプション

null

数字の最小数 (0以下の場合は正確な個数として扱う)

specialCharacters

Int

オプション

null

特殊文字の最小数 (0以下の場合は正確な個数として扱う)

specialCharacterSet

String

オプション

"!@#$%()+;<>=?[]{}^.,

特殊文字の取得に使うカスタム文字セット

各パラメータは、使用する文字の種類の最小数を示します。たとえば、「uppercase」は、使用する大文字の最小数を示します。

ファイルのダウンロード

パラメータ
型
必須
説明

file

KeeperFile

はい

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

レスポンス

型: ByteArray

ダウンロード用のファイルのバイト配列

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

パラメータ
型
必須
説明

file

KeeperFile

はい

ダウンロードするサムネイル付きファイル

レスポンス

型: ByteArray

ダウンロード用サムネイルのバイト配列

ファイルのアップロード

ファイルのアップロード

パラメータ
型
必須
説明

options

SecretsManagerOptions

はい

ストレージとクエリの設定

ownerRecord

KeeperRecord

はい

アップロードされたファイルを添付するレコード

file

KeeperFileUpload

はい

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

Keeperファイルアップロードオブジェクトを作成

パラメータ
型
必須
説明

name

string

はい

アップロード後にKeeperに格納されるファイルの名前

title

string

はい

アップロード後にKeeperに格納されるファイルのタイトル

type

string

オプション

ファイルのデータのMIMEタイプ。何も指定しない場合は、「application/octet-stream」が使用されます

data

ByteArray

はい

バイト型のファイルデータ

使用例

レコードからファイルを削除する

必要なSDKバージョン: 17.1.1以上

UpdateOptions クラスの linksToRemove パラメータを使用して、レコードからファイル添付を削除できます。

要件

  • ファイルを含むレコードのUID、または KeeperRecord オブジェクト

  • 削除するファイルのファイルUID

  • 削除対象のファイルがレコード上に存在していること

パラメータ
型
必須
説明

options

SecretsManagerOptions

はい

事前設定されたオプション

record

KeeperRecord

はい

更新対象のレコード

updateOptions

UpdateOptions

はい

削除するファイルを含むオプション

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

transactionType

UpdateTransactionType

いいえ

null

バッチ処理のトランザクションタイプ

linksToRemove

List<String>

はい

削除するファイルUIDのリスト

完全な使用例

シークレットの作成

要件

  • 共有フォルダのUID

    • 共有フォルダには、シークレットマネージャーアプリケーションからアクセスできる必要があります。

    • ユーザーとシークレットマネージャーアプリケーションには編集権限が必要です。

    • 共有フォルダには、少なくとも1つのレコードが存在する必要があります。

  • 作成されたレコードとレコードのフィールドは正しく形式である必要があります。

    • レコードタイプごとの適切なフィールド形式については、ドキュメントをご参照ください。

  • TOTPフィールドには、KSM SDK以外で生成されたURLのみを指定できます。

  • レコード作成後、uploadFile でファイル添付をアップロードできます。

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

options

SecretsManagerOptions

はい

folderUid

String

はい

newRecordData

KeeperRecordData

はい

secrets

KeeperSecrets

オプション

Keeperサーバーから新たに取得したすべてのシークレットのリスト

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

options

SecretsManagerOptions

はい

createOptions

CreateOptions

はい

newRecordData

KeeperRecordData

はい

folders

KeeperFolder[]

オプション

Keeperサーバーから新たに取得したすべてのフォルダのリスト

この例では、ログイン値と生成されたパスワードを含むログインタイプのレコードを作成します。

例にある「[FOLDER UID]」をシークレットマネージャーアプリケーションがアクセスできる共有フォルダのUIDに置き換えます。

この例では、ホスト、ユーザー名、パスワードを含むサーバーログインの serverCredentials レコードを作成します。

例にある <FOLDER UID> を、シークレットマネージャーアプリケーションがアクセスできる共有フォルダのUIDに置き換えます。

databaseCredentialsの例

この例では、接続情報を含むデータベースログインの databaseCredentials レコードを作成します。

例にある <FOLDER UID> を、シークレットマネージャーアプリケーションがアクセスできる共有フォルダのUIDに置き換えます。

sshKeysの例

この例では、ホストとログインを含むSSH鍵ペアの sshKeys レコードを作成します。

例にある <FOLDER UID> を、シークレットマネージャーアプリケーションがアクセスできる共有フォルダのUIDに置き換えます。

シークレットの削除

Java/Kotlin KSM SDKでKeeperボルトのレコードを削除できます。

パラメータ
型
必須

smOptions

SecretsManagerOptions

はい

recordUids

List<String>

はい

キャッシュ

ネットワークアクセスが失われたときにシークレットにアクセスできない状況を避けるため、Java SDKを使用してシークレットを暗号化されたファイルを使用してローカルマシンにキャッシュできます。

キャッシュの設定と構成

Java SDKでキャッシュを設定するには、SecretsManagerOptions オブジェクトをインスタンス化するときに、2番目の引数としてキャッシュポスト関数を指定します。

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

フォルダ

フォルダは完全なCRUD (作成、読み取り、更新、削除操作) をサポートしています。

フォルダの読み取り

フォルダの完全な階層構造をダウンロードします。

レスポンス

型: List<KeeperFolder>

使用例

フォルダの作成

CreateOptions とフォルダ名の指定が必要です。CreateOptions はフォルダのUIDパラメータ (共有フォルダのUID) が必須ですが、サブフォルダのUIDはオプションであり、指定されていない場合は、通常の新しいフォルダが親 (共有フォルダ) の直下に作成されます。サブフォルダは、親の共有フォルダの直接の下位オブジェクトである必要はありません。親フォルダから何階層も深い位置にサブフォルダを作成することができます。

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

options

SecretsManagerOptions

はい

事前に設定されたオプション

createOptions

CreateOptions

はい

親およびサブフォルダのUID

folderName

String

はい

フォルダ名

folders

List<KeeperFolder>

いいえ

List<KeeperFolder>

CreateOptionsで作成した親とサブフォルダの検索に使用するフォルダのリスト

使用例

フォルダの更新

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

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

options

SecretsManagerOptions

はい

事前に設定されたオプション

folderUid

String

はい

フォルダのUID

folderName

String

はい

新しいフォルダ名

folders

List<KeeperFolder>

いいえ

List<KeeperFolder>

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

使用例

フォルダの削除

フォルダのリストを削除します。空でないフォルダを削除するには、forceDeletionフラグを使用します。

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

ボルトに存在しないフォルダのUIDや、KSMアプリケーションに共有されていないフォルダのUIDを指定しても、例外はスローされません。フォルダ単位の失敗を検出するには、返される SecretsManagerDeleteFolderResponse.folders の各要素の responseCode を確認してください。

レスポンス

型: SecretsManagerDeleteFolderResponse

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

options

SecretsManagerOptions

はい

事前に設定されたオプション

folderUids

List<String>

はい

フォルダUIDリスト

forceDeletion

Boolean

いいえ

false

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

使用例

レコードフィールドクラス

各レコードフィールドタイプはクラスで表されます。フィールドの値にアクセスするには、対応するクラスにキャストします。フィールドタイプの一覧は、レコードタイプのドキュメントをご参照ください。

プロキシサポート

SDKの通信をHTTPまたはHTTPSプロキシ経由にするには、SecretsManagerOptions に proxyUrl を設定します。

Java (静的ファクトリメソッド、推奨):

Kotlin (名前付き引数):

認証が必要なプロキシでは、http://user:password@host:port の形式のURLを使用します。パスワードに含まれる予約文字は、たとえば p@ss を p%40ss にするなど、パーセントエンコードしてください。

認証が必要なプロキシとJVMフラグ

Javaでは、HTTPS CONNECTトンネル上でのBasic認証がデフォルトで無効になっています。プロキシの認証情報が設定されている場合、SDKはこの制限を自動的に解除しますが、これはSDKが最初に呼び出しを行う前に、他のHTTPまたはHTTPS通信が HttpURLConnection を読み込んでいない場合に限られます。アプリケーションサーバーやフレームワークは、通常SDKより先にこの読み込みを行うため、注意してください。

認証が必要なプロキシを使用する場合は、アプリケーションが他のHTTPまたはHTTPS通信を行う前に、以下のJVMフラグを設定してください。

コマンドラインまたは JDK_JAVA_OPTIONS (Java 9以降) で指定します。このフラグが設定されていない場合、SDKは単純な407エラーではなく、この対処方法を示す SecretsManagerException をスローします。

アンビエントプロキシ設定

proxyUrl が設定されていない場合、SDKはまずJVMのシステムプロパティ (https.proxyHost/https.proxyPort) を読み取り、続いて HTTPS_PROXY/https_proxy 環境変数を読み取ります。NO_PROXY/no_proxy および http.nonProxyHosts による除外設定も適用されます。

接続タイムアウトと読み取りタイムアウト

SecretsManagerOptions には connectTimeoutMillis (デフォルト5,000ミリ秒) と readTimeoutMillis (デフォルト30,000ミリ秒) があります。応答がないサーバーに対しては、待ち続けるのではなく SocketTimeoutException が発生します。必要な値だけをKotlinの名前付き引数で設定できます。

最終更新