secretコマンド

Keeperボルトからシークレットとファイル添付を取得

secretコマンド

**説明:**ボルトからシークレットを取得し、レスポンスを解析します。

パラメータ:

実行するサブコマンド

形式: ksm secret <sub-command>

サブコマンド:

list

アプリケーションに関連付けられているすべてのシークレットを一覧で表示します

ksm secret list

  • --json json形式で返します

  • --uid <RECORD UID(s)> UID記録で特定の記録を取得します

例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"
    }
]

get

ボルトのシークレットまたはシークレットの特定のフィールドを取得します

ksm secret get <RECORD UID>

以下のパラメータの少なくとも1つが必要です。

  • <RECORD UID> - 記録を1つ取得する場合は、UID記録をコマンドライン引数に含めることができます。

  • -u、--uid <RECORD 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を使用すると、参照記録は記録に読み込まれません

UID記録がダッシュ(「-」)で始まる場合は、「--」を前に付加してその記録を取得します ksm secret get -- <RECORD UID>

--queryスイッチは、XPathをベースにしたクエリ構文であるJSONPathを使用します https://tools.ietf.org/id/draft-goessner-dispatch-jsonpath-00.html

例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'

例4: 特定のカスタムフィールド値を取得。これには2つの異なる方法があります。

# フィールド検索の使用
$ ksm secret get -u SNzjw8tM1HsXEzXERCJrNQ -f "API Key"

# クエリ表記法の使用
$ ksm secret get --uid SNzjw8tM1HsXEzXERCJrNQ \
  --json --query '$.custom_fields[?(@.label=="API Key")].value'

このクエリ構文は非常に柔軟で、JSONオブジェクトを検索してあらゆる種類の目的のレスポンスを見つけるために使用できます。リクエストにカスタムフィールド値を入力するときは、「\」と「=」文字を「\」文字でエスケープしてください。

例5: 個々のシークレットのraw 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

ボルトに記録を追加します。シークレット記録を追加する方法は、次の3つがあります。GUI操作のエディタ、ファイル、フィールド引数。

記録が正常に追加されると、標準出力にUID記録が出力されます。その他のテキストが表示される場合がありますが、これは標準エラーです。

editor

editorコマンドは、プレースホルダ値を含む記録でエディタアプリケーションを起動します。プレースホルダの値を置き換えるか、値をすべて削除します。エディタアプリケーションはksm config editorで設定するか、またはEDITOR環境変数で指定されたエディタを使用します。エディタが設定されていない場合、CLIはインストールされているエディタの検索を試みます。

UIを搭載したエディタを設定できます。WindowsおよびMacOSの場合、エディタから、記録のテンプレートにプレースホルダが残っているとすぐさま警告される場合は、ブロックを有効にする必要があります。これは、ブロックしないと、編集が完了する前にCLIが記録を処理しようとするためです。

MacOSのブロックは、アプリケーションが完全に終了するまで待機してから記録データを処理します。完全に終了するというのは、アプリケーションが閉じられてドックに表示されなくなったことを意味し、エディタウィンドウが閉じられたことを意味するものではありません。

Windowsのブロックは、エディタのプロセスがタスクリストから消えるまで待機します。アプリケーションが.batファイルまたは.cmdファイルを使用して起動された場合、プロセス名は起動されたアプリケーションとは異なります。これを適切に処理するには、ksm config editorを使用してエディタを設定します。

エディタがブロックせず、テンプレートマーカーに関するメッセージが表示された場合は、rと入力してファイルを再検査できます。これは、記録の編集が完了して保存されたときに実行できます。

ksm secret add editor --sf <SHARED FOLDER UID> --rt <RECORD TYPE> [--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コマンドは、2つの手順で実行されることを除くと、editorコマンドに似ています。最初の手順では、ksm secret templateコマンドを使用して、プレースホルダ記録ファイルを取得します。次に、プレースホルダ値を置き換え、このコマンドを使用してそのファイルを読み込み、記録を作成します。

このコマンドを使用すると、一度に複数の記録を作成できます。

ksm secret add file --sf <SHARED FOLDER UID> -f <TEMPLATE FILE> [-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 SHARED FOLDER UID> <--rt RECORD TYPE> <--title "TITLE>"> [--notes "<NOTES>"] [-p] <"FIELDS" ...>

必須パラメータ:

--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は、phonebankAccountnameなどの複合値を持つフィールドタイプのオプションです。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.

update

既存のシークレット内の既存のフィールドを更新します。

一部のフィールドタイプは複合的です。これは、値に配列や値の連想配列が含まれることを意味します。複合的なフィールドタイプを使用している場合は、--field-json--custom-field-jsonを使用して、値を設定する必要があります。JSON構造については、こちらをご参照ください。

ksm secret update --uid <RECORD UID>

オプションパラメータ:

  • --field - シークレットの特定の標準フィールドの値を更新します。

  • --custom-field - シークレットの特定のカスタムフィールドの値を更新します。

  • --field-json - JSONを使用して、特定の標準フィールドの値を更新します。複合フィールド値に使用します。

  • --custom-field-json - JSONを使用して、特定のカスタムフィールドの値を更新します。複合フィールド値に使用します。

更新は、既存のフィールドラベルとカスタムフィールドラベルのキーと照合します。「=」文字の後に表示されるものはすべて値と見なされます。パラメータ値を引用符で囲む場合を除き、値をエスケープする必要はありません。

例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"}'

download

ボルトのシークレットからSSH鍵などの添付ファイルをダウンロードします

ksm secret download -u <RECORD UID> --name "<FILENAME>" --file-output "<OUTFILE>"

オプションパラメータ:

  • -u、--uid <RECORD UID> ダウンロードするシークレットのUID(必須)

  • --name <FILENAME> ダウンロードするファイルの名前(必須)

  • --file-output <FILENAME | 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 OUTPUT FILE] [RECORD TYPE]

以下のいずれかのパラメータが必要です。

--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

フィールド

フィールドタイプスキーマとフィールドタイプリストを取得します。

以下のいずれかのパラメータが必要です。

--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コマンドをご参照ください。

UID記録がダッシュ(「-」)で始まる場合は、UIDの前に「--」を追加し、notationでフィールドを取得します ksm secret notation -- <RECORD UID>/field/password

totp

ボルトのシークレットのTOTPフィールドから有効なパスコードを生成します。

ksm secret totp <RECORD UID>

必須パラメータ:

  • <RECORD UID> TOTPフィールドを含むシークレットのUID

例:

$ ksm secret totp oxhtLx9qrQIzeSXBtvQj2Q
123456

password

ランダムなパスワードを生成します。

ksm secret password --length <PASSWORD LENGTH> --lc <# OF LOWERCASE CHARS> --uc <# OF UPPCASE CHARS> -d <# OF DIGITS> --sc <# OF SPECIAL CHARACTERS>

オプションパラメータ:

--lengthまたは文字グループカウント(--lc, --uc, --digits, --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記録ではありません

詳細は、トラブルシューティングセクションをご参照ください

最終更新