JavaScript SDK

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

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

NPMによるインストール

npm install @keeper-security/secrets-manager-core

ソースコード

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

SDKの使用

ストレージの初期化

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

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

initializeStorage(storage:KeyValueStorage, clientKey:String? = null, hostName:String? = null)
パラメータ
必須
デフォルト
説明

storage

KeyValueStorage

はい

保存場所

clientKey

string

オプション

null

Keeperシークレットマネージャーに接続するためのトークン

hostName

string

オプション

null

シークレットを取得するサーバーの場所。 何も指定しない場合は、keepersecurity.com (米国) が使用されます

使用例

const { getSecrets, initializeStorage, localConfigStorage } = require('@keeper-security/secrets-manager-core')

const getKeeperRecords = async () => {

    // oneTimeTokenはストレージの初期化に一度だけ使用
    // 初回実行以降の呼び出しでは、ksm-config.txtを使用
    const oneTimeToken = "<One Time Access Token>";
    
    const storage = localConfigStorage("ksm-config.json")
    
    await initializeStorage(storage, oneTimeToken)
    // トークンのみを使用して(後で使用するために)設定を生成するには
    // トークンをバインドするアクセス操作が少なくとも1回必要です
    //await getSecrets({storage: storage})
    
    const {records} = await getSecrets({storage: storage})
    console.log(records)

    const firstRecord = records[0]
    const firstRecordPassword = firstRecord.data.fields.find(x => x.type === 'password')
    console.log(firstRecordPassword.value[0])
}

getKeeperRecords().finally()

シークレットの取得

getSecrets(options:SecretsManagerOptions, recordsFilter:List<String> = emptyList()):KeeperSecrets
パラメータ
必須
デフォルト
説明

storage

KeyValueStorage

はい

保存場所

recordsFilter

string[]

オプション

空のリスト

取得するUIDレコード

レスポンス

型:KeeperSecrets

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

使用例

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

const storage = inMemoryStorage() // see initialization example
val secrets = getSecrets(storage)

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

// 一致するレコードをすべて取得
getSecretsByTitle = async (options:SecretManagerOptions, recordTitle: string):Promise<KeeperRecord[]>

// 最初に一致したレコードだけを取得
getSecretByTitle = async (options:SecretManagerOptions, recordTitle: string):Promise<KeeperRecord>
パラメータ
必須
説明

options

SecretsManagerOptions

はい

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

recordTitle

string

はい

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

使用例

const {
    getSecretByTitle,
    localConfigStorage,
} = require('@keeper-security/secrets-manager-core')

const getKeeperRecord = async () => {
    const options = { storage: localConfigStorage("ksm-config.json") 
    const {myCredential} = await getSecretByTitle(options, "My Credential")
}

getKeeperRecord().finally()

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

パスワードを取得

secret.data.fields.find(x => x.type === 'password')

フィールドはタイプで検索されます。フィールドタイプの一覧は、レコードタイプのドキュメントをご参照ください。

Keeper表記法を使用して他のフィールドを取得

getValue(secrets:KeeperSecrets, query: string): any

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

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

secrets

KeeperSecrets

はい

照会するシークレット

query

string

はい

Keeper表記法を使用したクエリ

  • この表記を使用したクエリのUIDレコードは、secretsパラメータで指定したシークレットのレコードである必要があります。そうでないと、クエリに何も返されません。

戻り値

型: any

ドット記法を使用したクエリで指定された位置のフィールドに値が存在する場合はその値 (存在しない場合は不定)

TOTPコードを取得

getTotpCode(url: string): string

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

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

url

string

はい

TOTP Url

  • この表記を使用したクエリのUIDレコードは、secretsパラメータで指定したシークレットのレコードである必要があります。そうでないと、クエリに何も返されません。

戻り値

型: any

ドット記法を使用したクエリで指定された位置のフィールドに値が存在する場合はその値 (存在しない場合は不定)

シークレットを更新

updateSecret(options, record)

パラメータ

必須

デフォルト

説明

options

SecretManagerOptions

はい

record

KeeperRecord

はい

戻り値

型:Promise<void>

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

generatePassword(length, lowercase, uppercase, digits, specialCharacters)
パラメータ
必須
デフォルト

length

int

オプション

64

lowercase

int

オプション

0

uppercase

int

オプション

0

digits

int

オプション

0

specialCharacters

int

オプション

0

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

戻り値

型:String

ファイルのダウンロード

downloadFile(file:KeeperFile):ByteArray
パラメータ
必須
デフォルト
説明

file

KeeperFile

はい

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

レスポンス

型:Promise<Uint8Array>

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

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

downloadThumbnail(file:KeeperFile):ByteArray
パラメータ
必須
デフォルト
説明

file

KeeperFile

はい

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

レスポンス

型:Promise<Uint8Array>

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

ファイルのアップロード

ファイルのアップロード:

uploadFile = async (options:SecretManagerOptions, ownerRecord:KeeperRecord, file:KeeperFileUpload):Promise<string>
パラメータ
必須
説明

options

SecretsManagerOptions

はい

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

ownerRecord

KeeperRecord

はい

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

file

KeeperFileUpload

はい

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

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

type KeeperFileUpload = {
    name: string
    title: string
    type?: string
    data:Uint8Array
}
パラメータ
必須
説明

name

string

はい

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

title

string

はい

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

type

string

オプション

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

data

Uint8Array

はい

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

使用例

// ファイルを添付するレコードを取得
const {records} = await getSecrets({storage: storage}, ['XXX'])
const ownerRecord = records[0]

// アップロードするファイルデータを取得
const fileData = fs.readFileSync('./assets/my-file.json')

// 選択したレコードにファイルをアップロード
await uploadFile(options, ownerRecord, {
    name: 'my-file.json',
    title:'Sample File',
    type: 'application/json',
    data: fileData
})

シークレットの作成

前提条件:

  • 共有フォルダのUID

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

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

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

  • 作成されたレコードとレコードのフィールドは正しく書式設定されている必要があります

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

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

シークレットマネージャーSDKで作成したKeeperのレコードは、現時点ではファイル添付をサポートしていません

createSecret(options, folderUid, record)
パラメータ
必須
デフォルト

options

SecretManagerOptions

はい

folderUid

string

はい

record

JSON Object

はい

シークレットの削除

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

deleteSecret(smOptions, recordUids);
パラメータ
必須

smOptions

SecretManagerOptions

はい

recordUids

string[]

はい

キャッシュ

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

SecretManagerOptionsqueryFunction: cachingPostFunctionを追加

使用例:

const options:SecretManagerOptions = {    
    storage: kvs,
    queryFunction: cachingPostFunction // Import `cachingPostFunction`
}

フォルダ

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

追加のパラメータ (バッチ処理の高速化などに有効なKeeperFolderのリスト) を指定できるメソッドもあります。パラメータが見つからないか空の場合は、呼び出されるたびに完全なフォルダメタデータをそれぞれダウンロードします。

フォルダの読み取り

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

getFolders = async (options:SecretManagerOptions):Promise<KeeperFolder[]>

レスポンス

型:KeeperFolder[]

使用例

const storage = localConfigStorage("ksm-config.json")
const folders = await getFolders({storage: storage})

フォルダの作成

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

createFolder = async (options:SecretManagerOptions, createOptions:CreateOptions, folderName: string):Promise<string>
パラメータ
必須
説明

options

SecretsManagerOptions

はい

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

createOptions

CreateOptions

はい

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

folderName

string

はい

フォルダ名

type CreateOptions = {
    folderUid: string
    subFolderUid?: string
}

使用例

const storage = localConfigStorage("ksm-config.json")
const folderUid = await createFolder({storage: storage}, {folderUid: "[SHARED_FOLDER_UID]"}, "new_folder")

フォルダの更新

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

updateFolder = async (options:SecretManagerOptions, folderUid: string, folderName: string):Promise<void>
パラメータ
必須
説明

options

SecretsManagerOptions

はい

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

folderUid

string

はい

フォルダのUID

folderName

string

はい

新しいフォルダ名

使用例

const storage = localConfigStorage("ksm-config.json")
await updateFolder({storage: storage}, "[FOLDER_UID]", "new_folder_name")

フォルダの削除

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

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

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

deleteFolder = async (options:SecretManagerOptions, folderUids: string[], forceDeletion?: boolean):Promise<SecretsManagerDeleteResponse>
パラメータ
必須
デフォルト
説明

options

SecretsManagerOptions

はい

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

folderUids

string[]

はい

フォルダUIDリスト

forceDeletion

bool

いいえ

false

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

使用例

const storage = localConfigStorage("ksm-config.json")
await deleteFolder({storage: storage}, ["[FOLDER_UID1]", "[FOLDER_UID2]"], true)

最終更新