secretコマンド
Keeperボルトからシークレットとファイル添付を取得
secret
コマンド
secret
コマンド説明: ボルトからシークレットを取得し、レスポンスを解析します。
パラメータ
実行するサブコマンド
形式: ksm secret <サブコマンド>
サブコマンド
list
アプリケーションに関連付けられているすべてのシークレットを一覧で表示します
get
ボルトのシークレットまたはシークレットの特定のフィールドを取得します
add
ボルトに新しいシークレットを追加します
update
既存のシークレット内のフィールドを更新します
delete
ボルトからシークレットを削除します
upload
既存のシークレットに添付ファイルをアップロードします
download
ボルトのシークレットのファイル添付を名前でダウンロードします
template
レコードタイプのテンプレートを表示します
notation
exec
コマンドのテンプレート化環境変数をテストします
totp
シークレットのTOTPフィールドからパスコードを生成します
password
パスワードを生成します
list
アプリケーションに関連付けられているすべてのシークレットを一覧で表示します。
ksm secret list
オプションパラメータ
--json
JSON形式で返します。--uid <レコードUID>
レコードUIDで特定のレコードを取得します。-t, --title <REGEX>
正規表現に一致するタイトルのレコードを取得します。-f, --folder <フォルダUID>
選択したフォルダー UID 内のレコードのみを一覧表示します。-r, --recursive
すべてのサブフォルダーを含む、選択したフォルダー UID 内のすべてのレコードを再帰的に一覧表示します。-q, --query <JSONパスクエリ>
JSONパスクエリに一致するレコードのみを一覧表示します。-v, --show-value
JSON パスクエリを使用する場合は、レコードタイトルの代わりに一致する値を出力します。
例1: 表形式
$ ksm secret list
UID Record Type Title
----------------------- -------------------- -------------------------
SNzjw8tM1HsXEzXERCJrNQ login Stripe API Key
8f8I-OqPV58o2r91wVgZ_A databaseCredentials Production MySQL Database
hDFhwSUe6pTWdkJDSRmtBg login Amazon AWS
例2: JSON形式
$ ksm secret list --json
[
{
"uid":"SNzjw8tM1HsXEzXERCJrNQ",
"title":"Stripe API Key",
"record_type": "login"
},
{
"uid":"8f8I-OqPV58o2r91wVgZ_A",
"title":"Production MySQL Database",
"record_type": "databaseCredentials"
},
{
"uid": "hDFhwSUe6pTWdkJDSRmtBg",
"title":"Amazon AWS",
"record_type": "login"
}
]
例3: フォルダでフィルタリングしながらタイトルで検索します。
$ ksm secret list --recursive --folder=KOx3pRkAnODGVWyDuK7ttw -t Stripe
UID Record Type Title
----------------------- -------------------- --------------
SNzjw8tM1HsXEzXERCJrNQ login Stripe API Key
例4: JSONPathを使用してフィールド属性で検索します。
$ ksm secret list --query=$.custom_fields[?(@.type==text)].value
UID Record Type Title
----------------------- -------------------- --------------
SNzjw8tM1HsXEzXERCJrNQ login Stripe API Key
$ ksm secret list -v --query=$.custom_fields[?(@.type==text)].value
UID Record Type Value
----------------------- -------------------- ---------------
SNzjw8tM1HsXEzXERCJrNQ login <API_Key_Value>
get
ボルトのシークレットまたはシークレットの特定のフィールドを取得します。
ksm secret get <レコードUID>
以下のパラメータの少なくとも1つが必要です。
<レコードUID>
レコードを1つ取得する場合は、レコードUIDをコマンドライン引数に含めることができます。-u、--uid <レコードUID>
IDで特定のレコードを取得します。-uを複数使用して、複数のレコードを取得できます。-t、--title <RECORD TITLE>
タイトルで特定のレコードを取得します。
オプションパラメータ
-f、--field <Field Type or Custom Field Label>
ラベルまたはタイプによって特定のフィールドの値を返します。-q、--query <JSONPath Query>
シークレット内の特定のフィールドを取得します。--json
JSON形式で返します (--queryを使用する場合に必須)。--raw
結果から引用符を削除します。--force-array
結果が1つしかない場合でも結果を配列として返します。--unmask
テーブルビューでパスワード値を表示します。--inflate/--deflate
デフォルトでは、他のレコードへの参照はレコードに読み込まれます。--deflateを使用すると、参照レコードはレコードに読み込まれません。
例1: シークレットを表形式でコンソールに出力します。
$ ksm secret get 8f8I-OqPV58o2r91wVgZ_A
Record:8f8I-OqPV58o2r91wVgZ_A
Title:Production MySQL Database
Record Type: databaseCredentials
Field Value
--------- ----------------------------------------------
text MySQL
host [{"hostName":"192.168.1.24", "port":"3306"}]
login user
password ****
例2: シークレットを表形式でパスワードを隠さずにコンソール出力します。
$ ksm secret get --unmask --uid 8f8I-OqPV58o2r91wVgZ_A
Record:8f8I-OqPV58o2r91wVgZ_A
Title:Production MySQL Database
Record Type: databaseCredentials
Field Value
--------- ----------------------------------------------
text MySQL
host [{"hostName":"192.168.1.24", "port":"3306"}]
login user
password ksv#$0sbnb7W@b3VGCHb
例3: シークレットからパスワードフィールドを取得します。これには2つの異なる方法があります。
# フィールド検索の使用
$ ksm secret get -u SNzjw8tM1HsXEzXERCJrNQ -f password
# クエリ構文の使用
$ ksm secret get -u 8f8I-OqPV58o2r91wVgZ_A \
--json --query '$.fields[?(@.type=="password")].value'
# 複雑な値にクエリ構文を使用
$ ksm secret get -u SNzjw8tM1HsXEzXERCJrNQ \
--json --query '$.fields[?(@.type=="keyPair")].value[0].publicKey'
例4: 特定のカスタムフィールド値を取得します。これには2つの異なる方法があります。
# フィールド検索の使用
$ ksm secret get -u SNzjw8tM1HsXEzXERCJrNQ -f "API Key"
# クエリ表記法の使用
$ ksm secret get --uid SNzjw8tM1HsXEzXERCJrNQ \
--json --query '$.custom_fields[?(@.label=="API Key")].value'
例5: 個々のシークレットの生JSONを取得します。
$ ksm secret get --unmask --uid 8f8I-OqPV58o2r91wVgZ_A --json
{
"uid":"8f8I-OqPV58o2r91wVgZ_A",
"title":"Production MySQL Database",
"type": "databaseCredentials",
"fields": [
{
"type": "text",
"value": [
"MySQL"
]
},
{
"type": "host",
"value": [
{
"hostName":"192.168.1.24",
"port":"3306"
}
]
},
{
"type": "login",
"value": [
"user"
]
},
{
"type": "password",
"value": [
"ksv#$0sbnb7W@b3VGCHb"
]
},
{
"type": "fileRef",
"value": []
}
],
"custom_fields": [],
"files": []
}
add
ボルトにレコードを追加します。シークレットレコードを追加する方法は、GUI操作のエディタ、ファイル、フィールド引数の3つがあります。
editor
editorコマンドで、プレースホルダ値を含むレコードでエディタアプリケーションを起動します。プレースホルダの値を置き換えるか、値をすべて削除します。エディタアプリケーションはksm config editor
で設定するか、またはEDITOR環境変数で指定されたエディタを使用します。エディタが設定されていない場合、CLIはインストールされているエディタの検索を試みます。
UIを搭載したエディタを設定できます。WindowsおよびMac OSの場合、エディタから、レコードのテンプレートにプレースホルダが残っていると警告がある場合は、ブロッキングを有効にする必要があります。ブロッキングしない場合、編集が完了する前にCLIがレコードを処理しようとするためです。
Mac OSでは、ブロッキングが有効な場合、アプリケーションが完全に終了するまで待機してからレコードデータを処理します。完全に終了するというのは、アプリケーションが閉じられてドックに表示されなくなったことを意味し、エディタウィンドウが閉じられたことを意味するものではありません。
Windowsでは、ブロッキングが有効な場合、エディタのプロセスがタスクリストから消えるまで待機します。アプリケーションが.batファイルまたは.cmdファイルを使用して起動された場合、プロセス名は起動されたアプリケーションとは異なります。これを適切に処理するには、ksm config editor
を使用してエディタを設定します。
ksm secret add editor --sf <共有フォルダUID> --rt <レコードタイプ> [--title "TITLE"] [--notes "NOTES"] [-p] [-o yaml | json]
必須パラメータ
--shared-folder-uid、--sf
新しいシークレットレコードが作成される共有フォルダのUID。
--record-type、--rt
シークレットレコードのレコードタイプ。
オプションパラメータ
--title, -t
シークレットレコードのタイトル。
--notes, -n
シークレットレコードに関連付けられたメモ。
--password-generate, -p
値が設定されていないパスワードフィールドのパスワードを生成します。
--output-format, -o
エディタのテンプレートの出力形式。JSONまたはYAMLのいずれかを指定できます。デフォルトはJSONです。
--editor, -e
エディタを上書きします。このパラメータを使用する場合、エディタがブロックします。
例
プレースホルダ値を持つログインレコードでエディタを起動します。値を設定するか、値をすべて置換してファイルを保存し、ブラウザを終了させます。
ksm secret add editor --sf XXXXXX --rt login -o yaml
<in the editor>
version: v3
kind:KeeperRecord
data:
- recordType: login
title: '<#ADD:The title of record here.This is required.>'
notes: '<#ADD:Add some notes or remove.>'
...
<save and exit from editor>
The following is the new record UID ...
["Ai9iFYWf6EOE0T9fV-ynBg"]
file
fileコマンドはeditorコマンドに似ていますが、2つの手順で実行するところが違います。最初の手順では、ksm secret templateコマンドを使用して、プレースホルダレコードファイルを取得します。次に、プレースホルダ値を置き換え、このコマンドを使用してそのファイルを読み込み、レコードを作成します。
このコマンドを使用すると、一度に複数のレコードを作成できます。
ksm secret add file --sf <共有フォルダUID> -f <テンプレートファイル> [-p]
必須パラメータ
--shared-folder-uid、--sf
新しいシークレットレコードが作成される共有フォルダのUID。
--file, -f
レコードテンプレートファイルのパスと名前。
オプションパラメータ
--password-generate, -p
値が設定されていないパスワードフィールドのパスワードを生成します。
例
プレースホルダ値を含む銀行口座レコードタイプを保存します。お気に入りのエディタで編集して保存します。次に、ksm secret add file
コマンドを使用して追加します。また、空白のパスワードフィールドがあれば、パスワードも生成されます。
ksm secret template bankAccount -f new_bank_account_record.json
<edit new_bank_account_record.json in favortite editor>
ksm secret add file --sf XXXX -f new_bank_account_record.json -p
field
fieldコマンドは、キー/値の引数をコマンドに渡して、レコードの値を設定します。
ksm secret add field <--sf 共有フォルダUID> <--rt レコードタイプ> <--title "タイトル"> [--notes "<メモ>"] [-p] <"フィールド" ...>
必須パラメータ
--shared-folder-uid、--sf
新しいシークレットレコードが作成される共有フォルダのUID。
--record-type、--rt
シークレットレコードのレコードタイプ。
--title, -t
シークレットレコードのタイトル。
FIELDS
フィールドとその値からなるキー/値のペア。複数のフィールドを指定できます。
オプションパラメータ
--notes, -n
シークレットレコードに関連付けられたメモ。
--password-generate, -p
値が設定されていないパスワードフィールドのパスワードを生成します。
例
ksm secret add field --sf XXXX --rt bankAccount \
-t "My Bank Account" -n "My Checking Account" -p \
"f.bankAccount.accountType=Checking" \
"f.bankAccount.routingNumber=ROUT123" \
"f.bankAccount.accountNumber=ACC456" \
'f.name={"first":"John", "last":"Smith"}' \
"login=jsmith" \
"url=http://mybank.com" \
"c.text[Bank Hours]=7:00AM to 5:00PM" \
'c.phone=[{"number":"5551234567", "type":"Home"}, {"number":"5550987654"}]'
The following is the new record UID ...
Ai9iFYWf6EOE0T9fV-ynBg
field
の構造は、[field section .
]<field type
>[[field label]
][. value key
]<=value
>となります。
field section
は、フィールドを設定する場所です。「f」は標準フィールド、「c」はカスタムフィールドです。設定しない場合、デフォルトで標準フィールドになります。
field type
は必須となります。標準フィールドセクションの場合、フィールドタイプはレコードタイプスキーマの一部である必要があります。存在しないフィールドを追加しようとすると、エラーが表示されます。ユーザー設定フィールドセクションの場合、どのフィールドタイプでも追加できます。追加順に配列されます。
field label
はオプションです。フィールドラベルは、field type
の直後に[]
で囲みます。カスタムフィールドセクションでは、ラベルが設定されていない場合、レコードフィールドタイプがUIで使用されます。
value key
は、phone
、bankAccount
、name
などの複合値を持つフィールドタイプのオプションです。value key
を使用すると、値をJSON値として設定する代わりに、別々に作成できます。
value
は、「=」文字の後から始まります。値が複雑な場合は、JSONが値として設定されます。JSONを使用する場合は、フィールドを適切に引用符で囲んでください。JSONで二重引用符を使用する場合は、フィールドを一重引用符で囲みます。両方が必要な場合は、引用符をバックスラッシュ (\) でエスケープする必要があります。
ルール
標準フィールドの場合、フィールドの設定順序は重要ではありません。フィールドは、レコードタイプスキーマによって並べ替えられます。レコードタイプスキーマ標準フィールドに存在しないフィールドは、標準フィールドに追加できません。
カスタムフィールドの場合、フィールドはフィールド引数の順序と同じ並びになります。
同じタイプのフィールドが複数ある場合は、field label
を指定して一意にする必要があります。
値キー
値キーを使用した値の設定は、1つのフィールドを設定する場合に便利ですが、同じタイプの別のフィールドを設定する場合や、フィールドに複数の値 (電話番号) を指定する場合にはルールがあります。
同じタイプのフィールドを複数設定する場合、field label
を使用して、フィールドを一意にします。
ksm secret add field --sf XXXX --rt "Custom Record" \
"name[My Doctor].first=Jane" \
"name[My Doctor].last=Smith" \
"name[My Lawyer].first=John" \
"name[My Lawyer].last=Doe"
field label
を使用しないと、前の値が既存の値を上書きします。
JSON値
値はJSON値に設定できます。複数の値を指定できるフィールドの場合、JSON値を設定すると、完全な値と見なされます。つまり、value key
がJSON値の後に来ると、そのフィールドに新たな値が追加されます。以下の例では、2つの値を持つ電話番号フィールドを作成します。
ksm secret add field --sf XXXX --rt "Custom Record" \
'c.phone={"number":"5551234567"}' \
"c.phone.number=5551111111"
JSON値がJSONオブジェクトの配列である場合、このフィールドはすべて揃ったフィールドと見なされます。つまり、フィールドに新たな値を追加することはできません。以下では、最後のフィールドが一意でないというエラーが発生します。フィールドを一意にするには、field label
を追加します。
ksm secret add field --sf XXXX --rt "Custom Record" \
'c.phone=[{"number":"5551234567"}, {"number":"55599999999"}]',
"c.phone.number=5551111111"
ksm had a problem:Cannot add this field due to it not being unique.To make unique add a label to the field or make sure the label is not being duplicated.
delete
アプリケーションに関連付けられたシークレットを削除します。
ksm secret delete
--uid <レコードUID>
レコードUIDでレコードを削除します。
オプションパラメータ
--json
JSON形式で返します。
例1: 表形式
$ ksm secret delete -u AAAAAAAAAAAAAAAAAAAAAA -u SNzjw8tM1HsXEzXERCJrNQ
UID Response Code Error
----------------------- -------------------- ---------
AAAAAAAAAAAAAAAAAAAAAA n/a Not Found
SNzjw8tM1HsXEzXERCJrNQ ok
例2: JSON形式
$ ksm secret delete --json -u AAAAAAAAAAAAAAAAAAAAAA -u riEeV5KUeiGqXXSidg47Zw
[
{
"uid": "AAAAAAAAAAAAAAAAAAAAAA",
"responseCode": "n/a",
"error": "Not found"
},
{
"uid": "riEeV5KUeiGqXXSidg47Zw",
"responseCode": "ok",
"error": null
}
]
clone
clone
コマンドで、新しいタイトルを設定するオプションを使用して、既存のレコードのデータを使用して新しいレコードを作成します。
ksm secret add clone --uid <レコードUID> --title "タイトル"
必須パラメータ
--uid, -u
既存のレコードのレコード UID。
オプションパラメータ
--title, -t
新しいレコードのタイトル。
例
ksm secret add clone --uid XXXX --title NewTitle
The following is the new record UID ...
Ai9iFYWf6EOE0T9fV-ynBg
update
既存のシークレット内の既存のフィールドを更新します。
ksm secret update --uid <レコードUID>
オプションパラメータ
--field
シークレットの特定の標準フィールドの値を更新します。--custom-field
シークレットの特定のカスタムフィールドの値を更新します。--field-json
JSONを使用して、特定の標準フィールドの値を更新します。複合フィールド値に使用します。--custom-field-json
JSONを使用して、特定のカスタムフィールドの値を更新します。複合フィールド値に使用します。--title, -t
- シークレットのタイトルを更新します。--notes, -n
- シークレットのメモを更新します。
更新は、既存のフィールドラベルとカスタムフィールドラベルのキーと照合します。「=」文字の後に表示されるものはすべて値と見なされます。パラメータ値を引用符で囲む場合を除き、値をエスケープする必要はありません。
例1: 基本的な使用事例
# シークレットのパスワードを更新
$ ksm secret update --uid XXXXX --field password=xxxxxxxxxxx
# カスタムフィールドの値を更新
$ ksm secret update --uid XXXXX --custom-field "My Custom Label=XXXXX"
例2: キーまたはフィールドの値にスペースが含まれている場合は、パラメータ値全体を引用符で囲む必要があります。値に引用符が含まれている場合は、パラメータ値を別の引用符で囲む必要があります。たとえば、値にJSONが含まれている場合は、パラメータ値を一重引用符で囲みます。
$ ksm secret update --uid XXXXX --custom-field "My Base64=SElUSEVSRQo="
$ ksm secret update --uid XXXXX --field-json 'name={"first":"John", "middle":"X", "last":"Doe"}'
upload
ボルト内の既存のシークレットに添付ファイルをアップロードします。
ksm secret upload -u <レコードUID> --file "<ファイル名>" --title "<ファイルのタイトル>"
パラメータ:
-u, --uid <レコードUID>
アップロード先のシークレットの UID (必須)-f, --file <ファイル名>
アップロードするファイルへのファイルパス(必須)-t, --title
<ファイルのタイトル>
(指定されていない場合はファイル名 (パスなし) がデフォルトになります (オプション)
例
$ ksm secret download -u oxhtLx9qrQIzeSXBtvQj2Q \
--name "SSHKey.pem" --file-output SSHKey.pem
download
ボルトのシークレットからSSH鍵などの添付ファイルをダウンロードします。
ksm secret download -u <レコードUID> --name "<ファイル名>" --file-output "<ファイル出力先>"
オプションパラメータ
-u、--uid <レコードUID>
ダウンロードするシークレットのUID (必須)--name <ファイル名>
ダウンロードするファイルの名前 (必須)--file-output <ファイル名 | STDOUT | STDERR>
ファイルの内容を書き込む場所 (必須)--create-folders
ファイル名のパスのフォルダを作成します。
例
$ ksm secret download -u oxhtLx9qrQIzeSXBtvQj2Q \
--name "SSHKey.pem" --file-output SSHKey.pem
template
レコードまたはフィールドタイプのテンプレート情報を表示します。
record
レコードタイプスキーマテンプレートとレコードタイプリストを取得します。
ksm secret template record [-l] [-o json | yaml] [-f 出力ファイル] [レコードタイプ]
以下のいずれかのパラメータが必要です。
--show-list, -l
利用可能なすべてのレコードタイプを一覧表示します。
RECORD TYPE
このレコードタイプのスキーマテンプレートを取得します。
オプションパラメータ
--output-format, -o
スキーマをJSONまたはYAMLとして出力します。デフォルトはJSONです。
--output-file, -f
スキーマをファイルに出力します。
例1: レコードタイプの一覧を取得します。
$ ksm secret template record -l
Record Type
------------------------
login
bankAccount
address
...
例2: YAMLのbankAccount
レコードタイプのスキーマを取得します。
ksm secret template record -o yaml bankAccount
version: v3
kind:KeeperRecord
data:
- recordType: bankAccount
title: '<#ADD:The title of record here.This is required.>'
notes: '<#ADD:Add some notes or remove.>'
fields:
- type: bankAccount
value:
accountType: '<#ADD:Checking | Other | Savings>'
otherType: '<#ADD:Other Type Description>'
routingNumber: '<#ADD:Routing Number>'
accountNumber: '<#ADD:Account Number>'
privacyScreen: false
- type: name
value:
first: '<#ADD:First Name>'
middle: '<#ADD:Middle name>'
last: '<#ADD:Last Name>'
privacyScreen: false
- type: login
value: '<#ADD:Insert a str>'
privacyScreen: false
- type: password
value: '<#ADD:Password or Remove If Generating>'
privacyScreen: false
enforceGeneration: false
complexity:
length:64
caps:0
lowercase:0
digits:0
special:0
- type: url
value: '<#ADD:Insert a str>'
privacyScreen: false
- type: cardRef
value: '<#ADD:Record UID of PaymentCard record.>'
privacyScreen: false
- type: fileRef
value: '<#ADD:Record UID of File record.>'
privacyScreen: false
- type: oneTimeCode
value: '<#ADD:URL starting with otpauth://>'
privacyScreen: false
field
フィールドタイプスキーマとフィールドタイプリストを取得します。
以下のいずれかのパラメータが必要です。
--show-list, -l
利用可能なすべてのフィールドタイプを一覧表示します。
FIELD TYPE
このフィールドタイプのスキーマを取得します。
オプションパラメータ
--output-format, -o
スキーマをJSONまたはYAMLとして出力します。デフォルトはJSONです。
例1: フィールドタイプの一覧を取得します。
$ ksm secret template field -l
Field Type
----------------
accountNumber
address
addressRef
...
例2: デフォルトのJSONのフィールドタイプのスキーマを取得します。
$ ksm secret template field securityQuestion
{
"type": "securityQuestion",
"value": {
"question": "<#ADD:Security Question>",
"answer": "<#ADD:Answer To The Question>"
},
"privacyScreen": false
}
notation
ksm exec
コマンドの環境変数置換をテストします。
ksm secret notation <NOTATION FIELD PATH>
このサブコマンドを使用すると、keeper://
テンプレートURLを使用してフィールド値を返すことにより、環境変数置換メソッドをテストできます。
例
$ ksm secret notation keeper://8f8I-OqPV58o2r91wVgZ_A/field/password
ksv#$0sbnb7W@b3VGCHb
$ ksm secret notation keeper://oxhtLx9qrQIzeSXBtvQj2Q/field/password
H=cBcl(u6%Ouv]mXpkPU>u]C;P0>E%yrcML
環境変数置換の詳細については、Execコマンドをご参照ください。
totp
ボルトのシークレットのTOTPフィールドから有効なパスコードを生成します。
ksm secret totp <レコードUID>
必須パラメータ
<レコードUID>
TOTPフィールドを含むシークレットのUID
例
$ ksm secret totp oxhtLx9qrQIzeSXBtvQj2Q
123456
password
ランダムなパスワードを生成します。
ksm secret password --length <パスワードの長さ> --lc <小文字の数> --uc <大文字の数> -d <数字の数> --sc <記号の数>
オプションパラメータ
合計長。文字グループの値は、その長さから自動的に均等に分割されます。
--length, -l
パスワードの長さ。これにより、小文字、大文字、数字、記号の間でこの長さが分割されます。
文字グループ
-lc
= 小文字の数。-uc
= 大文字の数。-d
= 数字の数。-sc
= 記号の数。
例
$ ksm secret password
j.th,D,X92[B;d<F{2IkxuWS={#G4g7=b39kA16v6p44lqBU=v.Y6?MH5}$H3pG4
$ ksm secret password --length 32
5N=%B6ytb9No3w[F7WYgN0V@"+2j!u1#%
$ ksm secret password -lc 10
qaytxkwdwb
$ ksm secret password -lc 2 -uc 2 -digits 2 -sc 0
4keD0V
「-」で始まるレコードUID
レコードUIDが「-」(ダッシュ/ハイフン)で始まる場合、KSM CLIで使用するには、先頭に「--」を付ける必要があります。
例
ksm secret get -- -id8QpE2ZAkdd4KlCfoWQ
*この例のUIDは実際のレコードUIDではありません。
詳細については、トラブルシューティングをご参照ください。
最終更新