ダウンロードとインストール
MavenまたはGradleを使用したインストール
Gradle Maven
コピー repositories {
mavenCentral()
}
dependencies {
implementation 'com.keepersecurity.secrets-manager:core:16.6.6+'
implementation("org.bouncycastle:bc-fips:1.0.2.4")
}
コピー < dependency >
< groupId >com.keepersecurity.secrets-manager</ groupId >
< artifactId >core</ artifactId >
< version >[16.6.6,)</ version >
</ dependency >
暗号化プロバイダ
KeeperシークレットマネージャーSDK では、開発者が必要とされる暗号化プロバイダを使用することが想定されています。特定のプロバイダが追加されない限り、Javaランタイムのデフォルトの暗号化モジュールを使用します。本ページの例では、BouncyCastle FIPSプロバイダを使用しています。
ソースコードで、プロバイダがセキュリティコンテキストにロードされていることを確認します。
コピー fun main() {
Security . addProvider ( BouncyCastleFipsProvider() )
...
カスタムセキュリティプロバイダーの使用方法については、こちらのページ のCryptoUtilsTest.kt
ファイルをご参照ください。
ソースコード
Java/Kotlinのソースコードは、GitHubリポジトリ で入手できます。
ストレージの初期化
(後で使用するために) トークンのみを使用して新しい構成を生成するには、トークンをバインドしてconfig.json
に完全に読み込むために、少なくとも1回の読み取り操作が必要となります。
シークレットを取得するには、まずマシンのローカルストレージを初期化する必要があります。
コピー initializeStorage(storage : KeyValueStorage , clientKey : String ? = null , hostName : String ? = null )
使用例
コピー import static com . keepersecurity . secretsManager . core . SecretsManager . initializeStorage ;
import com . keepersecurity . secretsManager . core . LocalConfigStorage ;
import com . keepersecurity . secretsManager . core . SecretsManagerOptions ;
import java . security . Security ;
import org . bouncycastle . jcajce . provider . BouncyCastleFipsProvider ;
// oneTimeTokenはストレージの初期化に一度だけ使用
// 初回実行以降の呼び出しでは「ksm-config.txt」ファイルを使用
String oneTimeToken = "[One Time Access Token]" ;
LocalConfigStorage storage = new LocalConfigStorage( "ksm-config.txt" ) ;
try {
initializeStorage(storage , oneTimeToken) ;
SecretsManagerOptions options = new SecretsManagerOptions(storage) ;
// トークンのみを使用して(後で使用するために)設定を生成するには
// トークンをバインドするアクセス操作が少なくとも1回必要です
//getSecrets(options)
} catch ( Exception e) {
System . out . println ( e . getMessage ());
}
シークレットの取得
コピー getSecrets(options : SecretsManagerOptions , recordsFilter :List< String > = emptyList()) :KeeperSecrets
レスポンス
型: KeeperSecrets
すべてのKeeperレコード、または指定したフィルタ条件に一致するレコードを含むオブジェクト
使用例
すべてのシークレットを取得
コピー import com . keepersecurity . secretsManager . core . SecretsManagerOptions ;
import com . keepersecurity . secretsManager . core . SecretsManager ;
import com . keepersecurity . secretsManager . core . KeeperRecord ;
import com . keepersecurity . secretsManager . core . KeeperSecrets ;
import java . security . Security ;
import org . bouncycastle . jcajce . provider . BouncyCastleFipsProvider ;
// セキュリティプロバイダがロードされていることを確認
Security . addProvider ( new BouncyCastleFipsProvider() );
// シークレットを取得
SecretsManagerOptions options = new SecretsManagerOptions(storage) ;
KeeperSecrets secrets = SecretsManager . getSecrets (options);
// シークレットからレコードを取得
List < KeeperRecord > records = secrets . getRecords ();
UIDで1つのシークレットを取得
コピー import com . keepersecurity . secretsManager . core . SecretsManagerOptions ;
import com . keepersecurity . secretsManager . core . SecretsManager ;
import com . keepersecurity . secretsManager . core . KeeperRecord ;
import com . keepersecurity . secretsManager . core . KeeperSecrets ;
import java . security . Security ;
import org . bouncycastle . jcajce . provider . BouncyCastleFipsProvider ;
// セキュリティプロバイダがロードされていることを確認
Security . addProvider ( new BouncyCastleFipsProvider() );
// シークレットを取得
SecretsManagerOptions options = new SecretsManagerOptions(storage) ;
KeeperSecrets secrets = SecretsManager . getSecrets (options);
// シークレットを取得するための1つまたは複数のUIDレコードを指定
List < String > uidFilter = List . of ( "[XXX]" );
// フィルタを使用してシークレットを取得
KeeperSecrets secrets = SecretsManager . getSecrets (options , uidFilter);
// シークレットからレコードを取得
List < KeeperRecord > records = secrets . getRecords ();
タイトルでシークレットを取得
コピー // 一致するレコードをすべて取得
getSecretsByTitle(recordTitle : String) :List< KeeperRecord >
// 最初に一致したレコードだけを取得
getSecretByTitle(recordTitle : String) :KeeperRecord
使用例
コピー import com . keepersecurity . secretsManager . core . * ;
import java . util . List ;
public class KSMSample {
public static void main ( String [] args){
// セキュリティプロバイダがロードされていることを確認
Security . addProvider ( new BouncyCastleFipsProvider() );
// 事前に初期化されたストレージを取得
KeyValueStorage storage = new LocalConfigStorage( "ksm-config.json" ) ;
try {
SecretsManagerOptions options = new SecretsManagerOptions(storage) ;
// 取得するレコードのタイトル
String recordTitle = "My Credentials" ;
// タイトルでレコードを検索
KeeperRecord myCredentials = secrets . getRecords () . getSecretByTitle (recordTitle);
// レコードの詳細を出力
System . out . println ( "Record UID: " + myCredentials . getRecordUid ());
System . out . println ( "Title: " + myCredentials . getData () . getTitle ());
} catch ( Exception e) {
System . out . println ( e . getMessage ());
}
}
}
シークレットから値を取得
パスワードを取得
シークレットをKeeperシークレットマネージャーから取得すると、このショートカットでそのシークレットのパスワードを取得します。
パスワードを取得 使用例
コピー import com . keepersecurity . secretsManager . core . SecretsManagerOptions ;
import com . keepersecurity . secretsManager . core . SecretsManager ;
import com . keepersecurity . secretsManager . core . KeeperRecord ;
import com . keepersecurity . secretsManager . core . KeeperSecrets ;
import java . security . Security ;
import org . bouncycastle . jcajce . provider . BouncyCastleFipsProvider ;
// セキュリティプロバイダがロードされていることを確認
Security . addProvider ( new BouncyCastleFipsProvider() );
// シークレットを取得
SecretsManagerOptions options = new SecretsManagerOptions(storage) ;
KeeperSecrets secrets = SecretsManager . getSecrets (options);
// 最初のレコードを取得
List < KeeperRecord > records = secrets . getRecords () . get ( 0 );
// 最初のレコードからパスワードを取得
firstRecord . getPassword ()
フィールドを取得
フィールドを取得 使用例
コピー secret . getData () . getField ( < FIELD_TYPE > )
コピー import com . keepersecurity . secretsManager . core . SecretsManagerOptions ;
import com . keepersecurity . secretsManager . core . SecretsManager ;
import com . keepersecurity . secretsManager . core . KeeperRecord ;
import com . keepersecurity . secretsManager . core . KeeperSecrets ;
import java . security . Security ;
import org . bouncycastle . jcajce . provider . BouncyCastleFipsProvider ;
// セキュリティプロバイダがロードされていることを確認
Security . addProvider ( new BouncyCastleFipsProvider() );
// シークレットを取得
SecretsManagerOptions options = new SecretsManagerOptions(storage) ;
KeeperSecrets secrets = SecretsManager . getSecrets (options);
// 最初のレコードを取得
List < KeeperRecord > records = secrets . getRecords ();
KeeperRecord firstRecord = secrets . getRecords () . get ( 0 );
// 最初のレコードからパスワードを取得
KeeperRecordField pwd = firstRecord . getData () . getField ( Password . class )
フィールド値を取得するには、戻り値を対応するフィールドタイプのクラス にキャストする必要があります。フィールドタイプの一覧については、レコードタイプ ページをご参照ください。
Keeper表記法
値を取得 使用例
コピー Notation . getValue (secret , "<query>" );
// クエリの例 「<RECORD UID>/field/login」
コピー import static com . keepersecurity . secretsManager . core . SecretsManager . *
import static com . keepersecurity . secretsManager . core . Notation . * ;
import java . security . Security ;
import org . bouncycastle . jcajce . provider . BouncyCastleFipsProvider ;
// セキュリティプロバイダがロードされていることを確認
Security . addProvider ( new BouncyCastleFipsProvider() );
// シークレットを取得
KeeperSecrets secrets = getSecrets(options) ;
// ドット記法でログインを取得
String login = getValue(secrets , "BediNKCMG21ztm5xGYgNww/field/login" ) ;
TOTPコードを取得
TOTPコードを取得 Example Usage
コピー TotpCode . uriToTotpCode (url)
コピー import static com . keepersecurity . secretsManager . core . Notation . * ;
import static com . keepersecurity . secretsManager . core . TotpCode . * ;
import java . security . Security ;
import org . bouncycastle . jcajce . provider . BouncyCastleFipsProvider ;
...
// シークレットを取得
KeeperSecrets secrets = getSecrets(options) ;
// レコードからTOTP urlを取得
String url = getValue(secrets , "BediNKCMG21ztm5xGYgNww/field/oneTimeCode" ) ;
// TOTPコードを取得
TotpCode totp = uriToTotpCode(url) ;
シークレットの値を更新
レコード更新コマンドが成功しても、ローカルのデータ (特にレコードのリビジョン情報) は更新されません。そのため、同じレコードを続けて更新しようとすると、リビジョンが一致しないため失敗します。これを防ぐには、レコードを更新した後に、必ずそのレコードを再読み込みしてください。
シークレットを更新
シークレットを更新 使用例 トランザクション更新
コピー updateSecret(options : SecretsManagerOptions , recordToUpdate : KeeperRecord) ;
コピー import com . keepersecurity . secretsManager . core . KeeperRecord ;
import com . keepersecurity . secretsManager . core . KeeperSecrets ;
import com . keepersecurity . secretsManager . core . SecretsManagerOptions ;
import static com . keepersecurity . secretsManager . core . SecretsManager . * ;
// セキュリティプロバイダがロードされていることを確認
Security . addProvider ( new BouncyCastleFipsProvider() );
// シークレットを取得
SecretsManagerOptions options = SecretsManagerOptions(storage) ;
KeeperSecrets secrets = getSecrets(options) ;
// 最初のレコードを更新
KeeperRecord recordToUpdate = secrets . getRecords () . get ( 0 );
// パスワードを更新
recordToUpdate . updatePassword ( "aP1$t367QOCvL$eM$bG#" );
// 変更を保存
updateSecret(options , recordToUpdate) ;
コピー import com . keepersecurity . secretsManager . core . KeeperRecord ;
import com . keepersecurity . secretsManager . core . KeeperSecrets ;
import com . keepersecurity . secretsManager . core . SecretsManagerOptions ;
import static com . keepersecurity . secretsManager . core . SecretsManager . * ;
...
// シークレットを取得
SecretsManagerOptions options = SecretsManagerOptions(storage) ;
KeeperSecrets secrets = getSecrets(options) ;
// 最初のレコードを更新
KeeperRecord record = secrets . getRecords () . get ( 0 );
// レコードのパスワードをローテーション
record . updatePassword ( "aP1$t367QOCvL$eM$bG#" );
// トランザクションを開始
updateSecret(options , record , transactionType = UpdateTransactionType . GENERAL ) ;
// リモートホストでパスワードをローテーション
boolean success = rotateRemoteSshPassword( "aP1$t367QOCvL$eM$bG#" ) ;
// トランザクション完了 (コミットかロールバック)
completeTransaction(options , record . recordUid , rollback = ! success) ;
UpdateSecretを使用して、シークレットに加えた変更を保存します。 UpdateSecretが正常に実行されると、変更がKeeperボルトに反映されます。
パスワードを更新
パスワードを更新 使用例
コピー recordToUpdate . updatePassword (password : String);
SecretsManager . updateSecret (options , recordToUpdate);
コピー import static com . keepersecurity . secretsManager . core . SecretsManager ;
import com . keepersecurity . secretsManager . core . SecretsManagerOptions ;
import com . keepersecurity . secretsManager . core . KeeperRecord ;
import com . keepersecurity . secretsManager . core . KeeperSecrets ;
// シークレットを取得
SecretsManagerOptions options = SecretsManagerOptions(storage) ;
KeeperSecrets secrets = getSecrets(options) ;
// 最初のレコードを更新
KeeperRecord recordToUpdate = secrets . getRecords () . get ( 0 );
// パスワードを更新
recordToUpdate . updatePassword ( "aP1$t367QOCvL$eM$bG#" );
// 変更を保存
SecretsManager . updateSecret (options , recordToUpdate);
他のフィールドを更新
値を設定 使用例
コピー // 形式
RecordField . getValue () . set (index , value)
// 例 - ログインフィールド
recordLogin . getValue () . set ( 0 , "New Login" );
コピー // 編集するフィールドを取得
Login recordLogin = (Login) recordToUpdate . getData () . getField ( Login . class );
// フィールド値を更新
recordLogin . getValue () . set ( 0 , "New Login" );
// 変更を保存
SecretsManager . updateSecret (options , recordToUpdate);
レコードの各フィールドタイプは、クラスに相当します。 フィールドの値に正しくアクセスするために、フィールドを対応するクラスにキャストします。 フィールドタイプについては、レコードタイプ のページご確認ください。
フィールドには複数の値を設定でき、リストでアクセスします。 この例では、1つの値のみを指定するログインフィールドを更新するため、値リスト内の1つの値を更新します。
ランダムなパスワードを生成
パスワード生成 使用例
コピー generatePassword(length : int , lowercase : int , uppercase : int , digits : int , specialCharacters : int )
コピー import com . keepersecurity . secretsManager . core . CryptoUtils ;
// セキュリティプロバイダがロードされていることを確認
Security . addProvider ( new BouncyCastleFipsProvider() );
// 編集するフィールドを取得
Password recordPassword = (Password) recordToUpdate . getData () . getField ( Password . class );
// ランダムなパスワードを生成
String password = CryptoUtils . generatePassword ();
// フィールド値を更新
recordPassword . getValue () . set ( 0 , password);
// 変更を保存
SecretsManager . updateSecret (options , recordToUpdate);
各パラメータは、使用する文字の種類の最小数を示します。たとえば、「uppercase」は、使用する大文字の最小数を示します。
ファイルのダウンロード
ファイルのダウンロード 使用例
コピー SecretsManager . downloadFile (file) :ByteArray
コピー import static com . keepersecurity . secretsManager . core . SecretsManager ;
import com . keepersecurity . secretsManager . core . KeeperRecord ;
import com . keepersecurity . secretsManager . core . KeeperFile ;
// セキュリティプロバイダがロードされていることを確認
Security . addProvider ( new BouncyCastleFipsProvider() );
// 最初のレコードから最初のファイルをダウンロード
KeeperRecord firstRecord = secrets . getRecords () . get ( 0 );
KeeperFile file = firstRecord . getFileByName ( "acme.cer" );
byte [] fileBytes = SecretsManager . downloadFile (file);
// ファイルをディスクに書き込む
try ( FileOutputStream fos = new FileOutputStream( file . getData() . getName()) ) {
fos . write (fileBytes);
} catch ( IOException ioException){
ioException . printStackTrace ();
}
レスポンス
型: ByteArray
ダウンロード用のファイルのバイト配列
サムネイルのダウンロード
サムネイルのダウンロード 使用例
コピー SecretsManager . downloadThumbnail (file) :ByteArray
コピー import static com . keepersecurity . secretsManager . core . SecretsManager ;
import com . keepersecurity . secretsManager . core . KeeperRecord ;
import com . keepersecurity . secretsManager . core . KeeperFile ;
// セキュリティプロバイダがロードされていることを確認
Security . addProvider ( new BouncyCastleFipsProvider() );
// 最初のレコードから最初のファイルをダウンロード
KeeperRecord firstRecord = secrets . getRecords () . get ( 0 );
KeeperFile file = firstRecord . getFileByName ( "acme.cer" );
byte [] fileBytes = SecretsManager . downloadThumbnail (file);
// ファイルをディスクに書き込む
try ( FileOutputStream fos = new FileOutputStream( file . getData() . getName()) ) {
fos . write (fileBytes);
} catch ( IOException ioException){
ioException . printStackTrace ();
}
レスポンス
型: ByteArray
ダウンロード用サムネイルのバイト配列
ファイルのアップロード
ファイルのアップロード
コピー uploadFile(options : SecretsManagerOptions , ownerRecord : KeeperRecord , file : KeeperFileUpload) :String
Keeperファイルアップロードオブジェクトを作成
コピー KeeperFileUpload (
val name: String ,
val title: String ,
val type: String ?,
val data : ByteArray
)
アップロード後にKeeperに格納されるファイルの名前
アップロード後にKeeperに格納されるファイルのタイトル
ファイルのデータのMIMEタイプ。何も指定しない場合は、「application/octet-stream」が使用されます
使用例
コピー import com . keepersecurity . secretsManager . core . * ;
import java . io . File ;
import java . io . FileInputStream ;
import java . util . Arrays ;
public class KSMSample {
public static void main ( String [] args){
// セキュリティプロバイダがロードされていることを確認
Security . addProvider ( new BouncyCastleFipsProvider() );
// 事前に初期化されたストレージを取得
KeyValueStorage storage = new LocalConfigStorage( "ksm-config.json" ) ;
try {
SecretsManagerOptions options = new SecretsManagerOptions(storage) ;
// 必要なレコードのUIDを含むフィルタを作成
List < String > uidFilter = List . of ( "XXX" );
// フィルタを使用してシークレットを取得
KeeperSecrets secrets = SecretsManager . getSecrets (options , uidFilter);
// ファイルのアップロード先のシークレットを取得
KeeperRecord ownerRecord = secrets . getRecords () . get ( 0 );
// アップロードするファイルからバイトを取得
File file = new File( "./myFile.json" ) ;
FileInputStream fl = new FileInputStream(file) ;
byte [] fileBytes = new byte [( int ) file . length ()];
fl . read (fileBytes);
fl . close ();
// アップロードするKeeperファイルを作成
KeeperFileUpload myFile = new KeeperFileUpload(
"myFile.json" ,
"My File" ,
"application/json" ,
fileBytes
)
// 選択したレコードにファイルをアップロード
SecretsManager . uploadFile (options , ownerRecord , myFile);
} catch ( Exception e) {
System . out . println ( "KSM ran into an problem: " + e . getMessage ());
}
}
}
シークレットの作成
要件
共有フォルダのUID
共有フォルダには、シークレットマネージャーアプリケーションからアクセスできる必要があります。
ユーザーとシークレットマネージャーアプリケーションには編集権限が必要です。
共有フォルダには、少なくとも1つのレコードが存在する必要があります。
作成されたレコードとレコードのフィールドは正しく形式である必要があります。
レコードタイプごとの適切なフィールド形式については、こちらのページ をご参照ください。
TOTPフィールドには、KSM SDK以外で生成されたURLのみを指定できます。
レコードを作成 サブフォルダにレコードを作成 ログインレコードの例 カスタムタイプの例
コピー SecretsManager . createSecret (options , folderUid , newRecordData , secrets);
Keeperサーバーから新たに取得したすべてのシークレットのリスト
コピー SecretsManager . createSecret2 (options , createOptions , newRecordData , folders);
Keeperサーバーから新たに取得したすべてのフォルダのリスト
この例では、ログイン値と生成されたパスワードを含むログインタイプのレコードを作成します。
例にある「[FOLDER UID]
」をシークレットマネージャーアプリケーションがアクセスできる共有フォルダのUIDに置き換えます。
コピー import com . keepersecurity . secretsManager . core . * ;
KeeperRecordData newRecordData = new KeeperRecordData(
"Sample KSM Record:Java" ,
"login" ,
Arrays . asList(
new Login( "My Username" ) ,
new Password( CryptoUtils . generatePassword())
) ,
null ,
"This is a \nmultiline\n\n\tnote"
) ;
String recordUid = SecretsManager . createSecret (options , folderUid , newRecordData);
この例では、カスタムレコードタイプのレコードを作成します。
例にある「[FOLDER UID]
」をシークレットマネージャーアプリケーションがアクセスできる共有フォルダのUIDに置き換えます。
コピー import com . keepersecurity . secretsManager . core . * ;
KeeperRecordData newRecordData = new KeeperRecordData(
"Sample Custom Type KSM Record:Java" ,
"Custom Login" , // レコードタイプの名前
Arrays . asList(
new Hosts(
"My Custom Host lbl" , // ラベル
true , // 必須
false , // プライベートスクリーン
List . of( new Host( "127.0.0.1" , "8000" ))) ,
// または new Hosts(new Host("127.0.0.1", "8000"))
new Login( "My Custom Login lbl" ,
true ,
false ,
List . of( "login@email.com" )) ,
// または new Login("username@email.com")
new Password( "My Custom Password lbl" ,
true ,
false ,
List . of( CryptoUtils . generatePassword())) ,
// または new Password(CryptoUtils.generatePassword())
new Url( "My Login Page" ,
true ,
false ,
List . of( "http://localhost:8080/login" )) ,
// または new Url("http://localhost:8080/login")
new SecurityQuestions(
"My Question 1" ,
true ,
false ,
List . of( new SecurityQuestion( "What is one plus one (write just a number)" , "2" ))) ,
// または new SecurityQuestions(new SecurityQuestion("What is one plus one (write just a number)", "2"))
new Phones( "My Phone Number" ,
true ,
false ,
List . of( new Phone( "US" , "510-444-3333" , "2345" , "Mobile" ))) ,
// または new Phones(new Phone("US", "510-444-3333", "2345", "Mobile"))
new Date( "My Date Lbl" ,
true ,
false ,
List . of( 1641934793000L )
) ,
// または new Date(1641934793000L),
new Names( "My Custom Name lbl" ,
true ,
false ,
List . of( new Name( "John" , "Patrick" , "Smith" ))) ,
// または new Names(new Name("John", "Patrick", "Smith"))
new OneTimeCode( "My TOTP" ,
true ,
false ,
List . of( "otpauth://totp/Example:alice@google.com?secret=JBSWY3DPEHPK3PXP&issuer=Example" ))
// または new OneTimeCode("otpauth://totp/Example:alice@google.com?secret=JBSWY3DPEHPK3PXP&issuer=Example")
) ,
Arrays . asList(
new Phones( new Phone( "US" , "(510) 123-3456" )) ,
new Phones( new Phone( "US" , "510-111-3333" , "45674" , "Mobile" ))
) ,
"\tThis custom type record was created\n\tvia KSM Java Document Example"
) ;
String recordUid = SecretsManager . createSecret (options , "[FOLDER UID]" , newRecordData);
シークレットの削除
Java/Kotlin KSM SDKでKeeperボルトのレコードを削除できます。
シークレットの削除 使用例
コピー deleteSecret(smOptions , recordUids) ;
コピー // シークレットマネージャーを設定
val storage = LocalConfigStorage( "ksm-config.json" )
//initializeStorage(storage, "<One Time Access Token>")
val smOptions = SecretsManagerOptions(storage)
// UIDレコードで特定のシークレットを削除
deleteSecret(smOptions , List . of( "EG6KdJaaLG7esRZbMnfbFA" )) ;
キャッシュ
ネットワークアクセスが失われたときにシークレットにアクセスできない状況を避けるため、Java SDKを使用してシークレットを暗号化されたファイルを使用してローカルマシンにキャッシュできます。
キャッシュの設定と構成
Java SDKでキャッシュを設定するには、SecretsManagerOptions
オブジェクトをインスタンス化するときに、2番目の引数としてキャッシュポスト関数を指定します。
Java SDKには、クエリをキャッシュしてファイルに保存するデフォルトのキャッシュ関数cachingPostFunction
が含まれています。
コピー // キャッシュオプションを作成
SecretsManagerOptions options = new SecretsManagerOptions(storage , SecretsManager :: cachingPostFunction) ;
// 例すべてのシークレットを取得
SecretsManager . getSecrets (options)
フォルダ
フォルダは完全なCRUD (作成、読み取り、更新、削除操作) をサポートしています。
フォルダの読み取り
フォルダの完全な階層構造をダウンロードします。
コピー getFolders(options : SecretsManagerOptions) :List< KeeperFolder >
レスポンス
型: List<KeeperFolder>
使用例
コピー import com . keepersecurity . secretsManager . core . * ;
SecretsManagerOptions options = new SecretsManagerOptions( new LocalConfigStorage( "ksm-config.json" )) ;
List < KeeperFolder > folders = SecretsManager . getFolders (options);
フォルダの作成
CreateOptions
とフォルダ名の指定が必要です。CreateOptions
はフォルダのUIDパラメータ (共有フォルダのUID) が必須ですが、サブフォルダのUIDはオプションであり、指定されていない場合は、通常の新しいフォルダが親 (共有フォルダ) の直下に作成されます。サブフォルダは、親の共有フォルダの直接の下位オブジェクトである必要はありません。親フォルダから何階層も深い位置にサブフォルダを作成することができます。
コピー createFolder(options : SecretsManagerOptions , createOptions : CreateOptions , folderName : String , folders :List< KeeperFolder > = getFolders(options)) :String
CreateOptionsで作成した親とサブフォルダの検索に使用するフォルダのリスト
コピー data class CreateOptions constructor (
val folderUid: String ,
val subFolderUid: String ? = null ,
)
コピー data class KeeperFolder (
val folderKey: ByteArray ,
val folderUid: String ,
val parentUid: String ? = null ,
val name: String
)
使用例
コピー import com . keepersecurity . secretsManager . core . * ;
SecretsManagerOptions options = new SecretsManagerOptions( new LocalConfigStorage( "ksm-config.json" )) ;
CreateOptions co := new CreateOptions( "[SHARED_FOLDER_UID]" ) ;
String folderUid = SecretsManager . createFolder (options , co , "new_folder" );
フォルダの更新
フォルダのメタデータ (現在はフォルダ名のみ) を更新します。
コピー updateFolder(options : SecretsManagerOptions , folderUid : String , folderName : String , folders :List< KeeperFolder > = getFolders(options))
使用例
コピー import com . keepersecurity . secretsManager . core . * ;
SecretsManagerOptions options = new SecretsManagerOptions( new LocalConfigStorage( "ksm-config.json" )) ;
SecretsManager . updateFolder (options , "[FOLDER_UID]" , "new_folder_name" );
フォルダの削除
フォルダのリストを削除します。空でないフォルダを削除するには、forceDeletion
フラグを使用します。
forceDeletion
を使用する場合は、親フォルダと子フォルダのUIDを一緒に送信しないようにしてください。削除する順序によっては、エラーが発生する可能性があります。たとえば、親が子を先に強制削除した場合などです。リストが必ずしもFIFO順で処理される保証はありません。
ボルトに存在しないフォルダのUIDやKSMアプリケーションで共有されていないフォルダのUIDはエラーになりません。
コピー deleteFolder(options : SecretsManagerOptions , folderUids :List< String > , forceDeletion : Boolean = false ) :SecretsManagerDeleteResponse
使用例
コピー import com . keepersecurity . secretsManager . core . * ;
SecretsManagerOptions options = new SecretsManagerOptions( new LocalConfigStorage( "ksm-config.json" )) ;
SecretsManager . deleteFolder (options , Arrays . asList ( "[FOLDER_UID1]" , "[FOLDER_UID2]" ) , true );