LogoLogo
KeeperPAMとシークレットマネージャー
KeeperPAMとシークレットマネージャー
  • KeeperPAM
  • 特権アクセス管理
    • セットアップ手順
    • クイックスタート (Sandbox)
    • はじめに
      • アーキテクチャ
        • アーキテクチャ図
        • ボルト (保管庫) のセキュリティ
        • ルータのセキュリティ
        • ゲートウェイのセキュリティ
        • 接続とトンネルのセキュリティ
      • KeeperPAMのライセンス
      • 強制適用ポリシー
      • ボルトの構造
      • レコードリンク
      • アプリケーション
      • デバイス
      • ゲートウェイ
        • ゲートウェイの作成
        • Dockerにインストール
        • Linuxにインストール
        • Windowsにインストール
        • 自動アップデータ
        • 高度な設定
          • AWS KMSでのゲートウェイ構成
          • カスタムフィールドを使用したゲートウェイ構成
      • PAM構成
        • AWS環境のセットアップ
        • Azure環境のセットアップ
        • ローカル環境のセットアップ
      • PAMリソース
        • PAMマシン
          • Linuxマシンの例
          • Azure仮想マシンの例
        • PAMデータベース
          • MySQLデータベースの例
          • PostgreSQLデータベースの例
          • Microsoft SQL Serverデータベースの例
        • PAMディレクトリ
        • PAMリモートブラウザ
        • PAMユーザー
      • アクセス制御
      • ジャストインタイムアクセス (JIT)
    • パスワードローテーション
      • ローテーションの概要
      • ローテーションの活用事例
        • ローカルネットワーク
          • Active DirectorユーザーまたはOpenLDAPユーザー
          • Windowsユーザー
          • Linuxユーザー
          • macOSユーザー
          • データベース
            • ネイティブMySQL
            • ネイティブMariaDB
            • ネイティブPostgreSQL
            • ネイティブMongoDB
            • ネイティブMS SQL Server
            • ネイティブOracle
        • Azure
          • Azure ADユーザー
          • Azure VMユーザーアカウント
          • Azureマネージドデータベース
            • Azure SQL
            • Azure MySQL - シングル/フレキシブルデータベース
            • Azure MariaDBデータベース
            • Azure PostgreSQL - シングル/フレキシブルデータベース
          • Azureアプリケーションシークレットローテーション
        • AWS
          • IAMユーザーのパスワード
          • Managed Microsoft ADユーザー
          • EC2仮想マシンユーザー
          • IAMユーザーのアクセスキー
          • マネージドデータベース
            • AWS RDS for MySQL
            • AWS RDS for SQL Server
            • AWS RDS for PostgreSQL
            • AWS RDS for MariaDB
            • AWS RDS for Oracle
        • SaaSローテーションプラグイン
        • カスタムスクリプト
          • Oktaユーザー
          • Snowflakeユーザー
          • REST APIを使用した認証情報のローテーション
          • Cisco IOS XE
          • Cisco Meraki
      • サービス管理
      • ポストローテーションスクリプト
        • 入力と出力
        • スクリプトの添付
        • コード例
    • 接続 (コネクション)
      • はじめに
      • セッションプロトコル
        • SSH接続
        • RDP接続
        • MySQL接続
        • SQL Server接続
        • PostgreSQL接続
        • VNC接続
        • Telnet接続
        • Kubernetes
        • RBI接続
      • 具体例
        • SSHプロトコル - Linuxマシン
        • RDPプロトコル - Azure仮想マシン
        • MySQLプロトコル - MySQLデータベース
        • PostgreSQLプロトコル - PostgreSQLデータベース
    • トンネル
      • トンネルの設定
    • リモートブラウザ分離
      • リモートブラウザ分離の設定
        • URLパターンとリソースURLパターン
        • ブラウザの自動入力
    • セッションのレコーディングと再生
    • SSHエージェント
      • Gitとの統合
    • 検出 (ディスカバリー)
      • 検出の基本
      • コマンダーを使用した検出
      • ボルトを使用した検出
    • KeeperAI
    • オンプレミス用コネクションマネージャー
    • 参考資料
      • ポートマッピング
      • SSHの設定
      • WinRMを設定
      • ゲートウェイネットワーク構成
      • SQL Serverのセットアップ
      • データベースのインポートとエクスポート
      • Linuxへのsqlcmdのインストール
      • LinuxでのDockerインストール
      • ローテーション用のKSMアプリの作成
      • Active Directoryの最小権限
      • イベントレポート
      • PAMレコードのインポート
      • CLIによるローテーション管理
      • ITSMとの統合
      • ベンダー特権アクセス管理
      • Commander SDK
      • Cron式で自動ローテーション設定
      • プレビュー版へのアクセス方法
  • エンドポイント特権マネージャー
    • 概要
  • セットアップ
  • デプロイメント (展開)
  • コレクション
  • ポリシー
    • ポリシーの例
  • リクエストの管理
  • ベストプラクティス
  • よくある質問
  • シークレットマネージャー
    • 概要
    • クイックスタートガイド
    • Keeperシークレットマネージャー (KSM) について
      • アーキテクチャ
      • 用語
      • セキュリティと暗号化モデル
      • ワンタイムアクセストークン
      • シークレットマネージャーの構成
      • Keeper表記法
      • イベントレポート
      • フィールド/レコードタイプ
    • シークレットマネージャーCLI
      • profileコマンド
      • initコマンド
      • secretコマンド
      • folderコマンド
      • syncコマンド
      • execコマンド
      • configコマンド
      • versionコマンド
      • 各種コマンド
      • Dockerコンテナ
      • カスタムのレコードタイプ
    • パスワードローテーション
    • 開発者用SDK
      • Python SDK
      • Java/Kotlin SDK
        • レコードフィールドクラス
      • JavaScript SDK
      • .NET SDK
      • Go SDK
        • レコードフィールドクラス
      • PowerShell
      • ボルトのSDK
    • 統合機能
      • Ansible
        • Ansibleプラグイン
        • Ansible Tower
      • AWS CLI認証プロセス
      • AWSシークレットマネージャー同期
      • AWS KMSでの暗号化
      • Azure DevOps拡張機能
      • Azure Key Vaultとの同期
      • Azure Key Vaultでの暗号化
      • Bitbucketプラグイン
      • Dockerイメージ
      • Dockerランタイム
      • Docker Writerイメージ
      • Entrust HSM
      • Git - SSHでコミットに署名
      • GitHub Actions
      • GitLab
      • Google Cloud Secret Managerとの同期
      • Google Cloud Key Managementでの暗号化
      • Hashicorp Vault
      • Heroku
      • Jenkinsプラグイン
      • Keeperコネクションマネージャー
      • Kubernetes外部シークレットオペレータ
      • Kubernetes
      • Linux Keyring
      • AIエージェント向けModel Context Protocol (MCP) – Docker版
      • AIエージェント向けModel Context Protocol (MCP) – Node版
      • Octopus Deploy
      • Oracle Key Vaultでの暗号化
      • PowerShellプラグイン
      • ServiceNow
      • TeamCity
      • Teller
      • Terraformプラグイン
        • Terraformレジストリ
      • Windows資格情報マネージャー
      • XSOAR
    • トラブルシューティング
  • コマンダーCLI
    • コマンダーの概要
    • インストールとセットアップ
      • WindowsでのCLIインストール
      • MacでのCLIインストール
      • LinuxでのCLIインストール
      • Python開発者用セットアップ
      • .NET開発者用セットアップ
      • PowerShellモジュール
      • ログイン
      • 設定と使用法
        • AWS Secrets Manager
        • AWS Key Management Service
      • Windowsタスクによる自動化
      • AWS Lambdaで自動化
      • アンインストール
    • コマンドリファレンス
      • データのインポートとエクスポート
        • インポート/エクスポートコマンド
        • CyberArkからのインポート
        • LastPassデータのインポート
        • Delinea/Thycotic Secret Serverインポート
        • Keepassインポート
        • ManageEngineインポート
        • Mykiインポート
        • Proton Passインポート
        • CSVインポート
        • JSONインポート
      • レポート作成コマンド
        • レポートの種類
      • エンタープライズ管理コマンド
        • ユーザーの作成と招待
        • コンプライアンスコマンド
        • Breachwatchコマンド
        • SCIMプッシュ配信設定
      • レコードに関するコマンド
        • レコードタイプに関するコマンド
        • レコードタイプの作成
      • 共有コマンド
      • KeeperPAMコマンド
      • 接続コマンド
        • SSH
        • SSHエージェント
        • RDP
        • connectコマンド
        • SFTP同期
      • シークレットマネージャーコマンド
      • MSP管理コマンド
      • 各種コマンド
      • パスワードローテーション
        • パスワードローテーションコマンド
        • AWSプラグイン
        • Azureプラグイン
        • Microsoft SQL Serverのプラグイン
        • MySQLプラグイン
        • Oracleプラグイン
        • PostgreSQLプラグイン
        • PSPasswdプラグイン
        • SSHプラグイン
        • Unix Passwdプラグイン
        • Windowsプラグイン
        • Active Directoryプラグイン
        • 自動実行
    • サービスモードREST API
    • トラブルシューティング
GitBook提供
このページ内
  • 概要
  • インストール
  • 認証
  • 初期化
  • すべてのシークレットを取得
  • 個々のシークレットを取得
  • レコードタイトルでシークレットを取得
  • レコードUIDでシークレットを取得
  • パスワードを取得
  • 添付ファイルのダウンロード
  • 添付ファイルのアップロード
  • TOTPコードを取得
  • パスワードの更新
  • パスワードの生成
  • シークレットの作成
  • シークレットの削除
  • スクリプトの実装
  • ボルトおよび管理者用SDK
GitHubで編集
  1. シークレットマネージャー

開発者用SDK

Keeperシークレットマネージャー用のサンプルコードとSDKの実装ガイド

前へパスワードローテーション次へPython SDK

最終更新 7 日前

概要

KeeperシークレットマネージャーSDKは、すべての主要なプログラミング言語からシークレット管理機能にシンプル・高速・効率的にアクセスできるよう特別に設計されています。

インストール

Mavenのスナップショットリポジトリを参照 repositories { mavenCentral() maven { url "https://s01.oss.sonatype.org/content/groups/public/" } }

プロジェクトに以下の依存関係を追加

  • com.keepersecurity.secrets-manager:core:16.6.4

Java SDKではJDKバージョン8から13.02+8がサポートされています。

mavenのスナップショットリポジトリを参照 repositories { mavenCentral() maven("https://s01.oss.sonatype.org/content/groups/public/") }

プロジェクトに以下の依存関係を追加

  • com.keepersecurity.secrets-manager:core:16.0.1-SNAPSHOT

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

JavaScript SDKでは、Nodeバージョン11から16.12.0までがサポートされています。

pip3 install -U keeper-secrets-manager-core

Python SDKではPythonバージョン3.6から3.10がサポートされています。

dotnet add package Keeper.SecretsManager

.Net SDKでは.Netバージョン4.7から4.8

または.Net Coreバージョン2.1以降がサポートされています。

import (
	ksm "github.com/keeper-security/secrets-manager-go/core"
	klog "github.com/keeper-security/secrets-manager-go/core/logger"
)

GoLang SDKではGoLangバージョン1.13以降がサポートされています。

認証

シークレットマネージャーSDKは、ボルトへの認証にワンタイムアクセストークンまたはローカル構成ファイル内の生成済みキーのいずれかを使用します。 Commander CLIでワンタイムアクセストークンを1つまたは複数生成するには、secrets-manager client addコマンドを使用します。

$ keeper shell

... login ...

My Vault> secrets-manager client add --app MyApplication --unlock-ip

初期化

シークレットマネージャーSDKは、接続トークンや設定情報を保持するために構成ファイルを使用します。以下のコード例は、シークレットマネージャーSDKとワンタイムアクセストークンを使用して設定ファイルを作成します。

import com.keepersecurity.secretsManager.core.*;
import static com.keepersecurity.secretsManager.core.SecretsManager.*;

public class KSMSample {

    public static void main(String[] args){
        // oneTimeTokenはストレージの初期化に一度だけ使用
        // 初回実行以降の呼び出しでは、ksm-config.jsonを使用
        String oneTimeToken = "[ONE TIME TOKEN]";
        KeyValueStorage storage = new LocalConfigStorage("ksm-config.json");
        try {
            // 初回の実行後、この行は削除可能
            initializeStorage(storage, oneTimeToken);

            SecretsManagerOptions options = new SecretsManagerOptions(storage);
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
        
        // `options`を使用する他のコード
    }
}
const {
    getSecrets,
    initializeStorage,
    localConfigStorage,
    downloadFile,
    updateSecret
} = require('@keeper-security/secrets-manager-core')

const oneTimeToken = '[One Time Access Token]'

const getKeeperRecords = async () => {
    const storage = localConfigStorage("ksm-config.json")
    await initializeStorage(storage, oneTimeToken)
    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()
from keeper_secrets_manager_core import SecretsManager
from keeper_secrets_manager_core.storage import FileKeyValueStorage

oneTimeToken = "[One Time Access Token]"

secrets_manager = SecretsManager(
    # ワンタイムトークンは一度しか使用できません - 以後は、生成された設定ファイルを使用します
    token=oneTimeToken,
    config=FileKeyValueStorage('ksm-config.json')
)

# すべてのパスワードレコードを取得(設定も初期化)
records = secrets_manager.get_secrets()
using System;
using SecretsManager;

var oneTimeToken = "[One Time Access Token]";
var storage = new LocalConfigStorage("ksm-config.json");
try {
    // ワンタイムトークンは一度しか使用できません - 以後は、生成された設定ファイルを使用します
    SecretsManagerClient.InitializeStorage(storage, oneTimeToken);
    var options = new SecretsManagerOptions(storage);
    
    // すべてのパスワードレコードを取得(設定も初期化)
    var records = (await SecretsManagerClient.GetSecrets(options)).Records;
    Console.WriteLine($"Received {records.Length} record(s)");
    
    // 最初のレコードからパスワードを取得
    var firstRecord = records[0];
    var password = records[0].FieldValue("password").ToString();
    Console.WriteLine($"Password: {password}");
} catch (Exception e) {
    Console.WriteLine(e);
}
package main

// Secrets Managerのインポート
import ksm "github.com/keeper-security/secrets-manager-go/core"

func main() {

	onetimeAccessCode := "[One Time Access Token]"

	options := &ksm.ClientOptions{
		// ワンタイムトークンは一度しか使用できません - 以後は、生成された設定ファイルを使用します
		Token:  onetimeAccessCode,
		Config: ksm.NewFileKeyValueStorage("ksm-config.json")}

	sm := ksm.NewSecretsManager(options)

	// すべてのパスワードレコードを取得(設定も初期化)
	allRecords, _ := sm.GetSecrets([]string{})

	// 最初のレコードからパスワードを取得:

	firstRecord := allRecords[0]

	firstRecordPassword := firstRecord.Password()

	print("Password: [", firstRecordPassword, "]")
}

構成ファイルを初期化した後、ワンタイムアクセストークンはコードから削除しておきます。

この初期化コードでは、以下のキーを含むJSON構成ファイルがデバイスのローカルストレージに作成されます。

キー

説明

hostname

自社テナントが配置されている宛先ホスト:

  • keepersecurity.com

  • keepersecurity.eu

  • keepersecurity.com.au

  • govcloud.keepersecurity.us

clientID

ハッシュ化されたclientKey、ここでclientKeyはクライアントデバイスの一意の識別子

privateKey

クライアントデバイスの秘密鍵

serverPublicKeyId

Keeperインフラストラクチャの公開鍵のID

appKey

アプリケーションの秘密鍵

appOwnerPublicKey

アプリケーション所有者の公開鍵

以下は生成された構成ファイルの例です。

ksm-config.json
{
  "hostname": "keepersecurity.com",
  "clientId": "ab2x3z/Acz0QFTiilm8UxIlqNLlNa25KMj=TpOqznwa4Si-h9tY7n3zvFwlXXDoVWkIs3xrMjcLGwgu3ilmq7Q==",
  "privateKey":"MLSHAgABCDEFGyqGSM49AEGCCqGSM49AwEHBG0wawIWALTARgmcnWx/DH+r7cKh4kokasdasdaDbvHmLABstNbqDwaCWhRANCAARjunta9SJdZE/LVXfVb22lpIfK4YMkJEDaFMOAyoBt0BrQ8aEhvrHN5/Z1BgZ/WpDm9dMR7E5ASIQuYUiAw0t9",
  "serverPublicKeyId":"10",
  "appKey":"RzhSIyKxbpjNu045TUrKaNREYIns+Hk9Kn8YtT+CtK0=",
  "appOwnerPublicKey":"Sq1W1OAnTwi8V/Vs/lhsin2sfSoaRfOwwDDBqoP+EO9bsBMWCzQdl9ClauDiKLXGmlmyx2xmSAdH+hlxvBRs6kU="
}

構成ファイル作成のその他の方法については、構成ファイルのページをご参照ください。

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

import com.keepersecurity.secretsManager.core.*;
import static com.keepersecurity.secretsManager.core.SecretsManager.*;
import java.io.FileOutputStream;

public class KSMSample {
  
  public static void main(String[] args){
    // 事前に初期化されたストレージを取得
    KeyValueStorage storage = new LocalConfigStorage("ksm-config.json");
    try { 
        SecretsManagerOptions options = new SecretsManagerOptions(storage);
        
        // 使用可能なすべてのシークレットを取得
        KeeperSecrets secrets = SecretsManager.getSecrets(options);
        
        // レコードの詳細を出力
        System.out.println(secrets.getRecords());
      } catch (Exception e) {
        System.out.println(e.getMessage());
      } 
    }
}
const {
    getSecrets,
    initializeStorage,
    localConfigStorage,
    downloadFile,
    updateSecret
} = require('@keeper-security/secrets-manager-core')

const oneTimeToken = '[One Time Access Token]'

const getKeeperRecords = async () => {
    const storage = localConfigStorage("ksm-config.json")
    await initializeStorage(storage, oneTimeToken)
    const {records} = await getSecrets({storage: storage})
}

getKeeperRecords().finally()
from keeper_secrets_manager_core import SecretsManager
from keeper_secrets_manager_core.storage import FileKeyValueStorage

secrets_manager = SecretsManager(
    config=FileKeyValueStorage('ksm-config.json')
)

all_records = secrets_manager.get_secrets()

# すべてのレコードのJSONデータを出力
for record in all_records:
    # record.print () # 記録をSTDOUTに出力
    print(record.uid + " - " + record.title)
    print("\tLogin: " + record.field('login')[0])
    print("\tPassword: " + record.field('password')[0])
using System;
using System.Threading.Tasks;
using SecretsManager;

private static async Task retrieveAllSecrets()
{
    // 事前に初期化されたストレージを取得
    var storage = new LocalConfigStorage("ksm-config.json");
    var options = new SecretsManagerOptions(storage);
            
    // 使用可能なすべてのシークレットを取得
    var records = (await SecretsManagerClient.GetSecrets(options)).Records;
    foreach (var record in records)
    {
        Console.WriteLine(record.RecordUid + " - " + record.Data.title);
        foreach (var field in record.Data.fields)
        {
            Console.WriteLine("\t" + field.label + " (" + field.type + "): [" + String.Join(", ", field.value) + "]");
        }
    }
}
package main

// Secrets Managerのインポート
import ksm "github.com/keeper-security/secrets-manager-go/core"

func main() {

	options := &ksm.ClientOptions{
		// ワンタイムトークンは一度しか使用できません - 以後は、生成された設定ファイルを使用します
		Config: ksm.NewFileKeyValueStorage("ksm-config.json")}

	sm := ksm.NewSecretsManager(options)

	// すべてのパスワードレコードを取得(設定も初期化)
	allRecords, _ := sm.GetSecrets([]string{})

	for _, record := range allRecords {
		println("UID", record.Uid, ", title [", record.Title(), "]")
	}
}

個々のシークレットを取得

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

import com.keepersecurity.secretsManager.core.*;
import java.util.List;

public class KSMSample {
    public static void main(String[] args){
        // 事前に初期化されたストレージを取得
        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());
        }
    }
}
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()
from keeper_secrets_manager_core import SecretsManager
from keeper_secrets_manager_core.storage import FileKeyValueStorage

secrets_manager = SecretsManager(
    config=FileKeyValueStorage('ksm-config.json')
)

record_title = "My Record"

record = secrets_manager.get_secret_by_title(record_title)

if record:
    print(record.uid + " - " + record.title)
    print("\tLogin: " + record.field('login')[0])
    print("\tPassword: " + record.field('password')[0])
else:
    print("No record found with title: " + record_title)
using System;
using System.Threading.Tasks;
using SecretsManager;

private static async Task getOneIndividualSecret()
{
    var storage = new LocalConfigStorage("ksm-config.json");
    var options = new SecretsManagerOptions(storage);
    var records = (await SecretsManagerClient.GetSecretsByTitle(
            options, "My Credentials")
        ).Records;
    foreach (var record in records)
    {
        Console.WriteLine(record.RecordUid + " - " + record.Data.title);
        foreach (var field in record.Data.fields)
        {
            Console.WriteLine("\t" + field.label + " (" + field.type + "): [" + String.Join(", ", field.value) + "]");
        }
    }
}
package main

// シークレットマネージャーのインポート
import ksm "github.com/keeper-security/secrets-manager-go/core"

func main() {

	options := &ksm.ClientOptions{
		// ワンタイムトークンは一度しか使用できません - 以後は、生成された設定ファイルを使用します
		Config: ksm.NewFileKeyValueStorage("ksm-config.json")}

	sm := ksm.NewSecretsManager(options)

	// タイトルで個々のレコードを取得
	allRecords, _ := ksm.GetSecretsByTitle("My Credentials")

	for _, record := range allRecords {
		println("UID", record.Uid, ", title [", record.Title(), "]")
	}
}

レコードUIDでシークレットを取得

この例では、レコードUIDはXXXになっています。

import com.keepersecurity.secretsManager.core.*;
import java.util.List;

public class KSMSample {
    public static void main(String[] args){
        // 事前に初期化されたストレージを取得
        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 myCredentials = secrets.getRecords().get(0);

            // レコードの詳細を出力
            System.out.println("Record UID: " + myCredentials.getRecordUid());
            System.out.println("Title: " + myCredentials.getData().getTitle());
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }
}
const {
    getSecretsByTitle,
    localConfigStorage,
} = require('@keeper-security/secrets-manager-core')

const oneTimeToken = '[One Time Access Token]'

const getKeeperRecord = async () => {
    const options = { storage: localConfigStorage("config.json") 
    const {myCredential} = await getSecrets(options, ["XXX"]
}

getKeeperRecord().finally()
from keeper_secrets_manager_core import SecretsManager
from keeper_secrets_manager_core.storage import FileKeyValueStorage

secrets_manager = SecretsManager(
    config=FileKeyValueStorage('ksm-config.json')
)

UID_FILTER = ['RECORD_UID']

record = secrets_manager.get_secrets(UID_FILTER)[0]

print(record.uid + " - " + record.title)
print("\tLogin: " + record.field('login')[0])
print("\tPassword: " + record.field('password')[0])

シークレットを取得すると、シークレットから個々のフィールドを取得できます。

# 標準テンプレートフィールドを取得
login = record.field('login', single=True)

# APIキーなどのカスタムフィールドを取得
api_key = record.custom_field('API Key', single=True)
using System;
using System.Threading.Tasks;
using SecretsManager;

private static async Task getOneIndividualSecret()
{
    var storage = new LocalConfigStorage("ksm-config.json");
    var options = new SecretsManagerOptions(storage);
    var records = (await SecretsManagerClient.GetSecrets(
            options, new[] { "XXX" })
        ).Records;
    foreach (var record in records)
    {
        Console.WriteLine(record.RecordUid + " - " + record.Data.title);
        foreach (var field in record.Data.fields)
        {
            Console.WriteLine("\t" + field.label + " (" + field.type + "): [" + String.Join(", ", field.value) + "]");
        }
    }
}
package main

// Secrets Managerのインポート
import ksm "github.com/keeper-security/secrets-manager-go/core"

func main() {

	options := &ksm.ClientOptions{
		// ワンタイムトークンは一度しか使用できません - 以後は、生成された設定ファイルを使用します
		Config: ksm.NewFileKeyValueStorage("ksm-config.json")}

	sm := ksm.NewSecretsManager(options)

	// UIDで個々のレコードを取得(設定も初期化)
	allRecords, _ := sm.GetSecrets([]string{"[Record UID]"})

	for _, record := range allRecords {
		println("UID", record.Uid, ", title [", record.Title(), "]")
	}
}

パスワードを取得

個々のレコードのパスワードフィールドを取得する例。

この例では、レコードUIDはXXXになっています。

import com.keepersecurity.secretsManager.core.*;
import java.util.List;

public class KSMSample {
    public static void main(String[] args){
        // 事前に初期化されたストレージを取得
        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 myCredentials = secrets.getRecords().get(0);

            // パスワードを取得して出力
            String pwd = myCredentials.getPassword();
            System.out.println("Password from Keeper: " + pwd);
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }
}
secret.data.fields.find(x => x.type === 'password')
from keeper_secrets_manager_core import SecretsManager
from keeper_secrets_manager_core.storage import FileKeyValueStorage

secrets_manager = SecretsManager(
    config=FileKeyValueStorage('ksm-config.json')
)

# UIDで個々のシークレットを取得
UID_FILTER = 'XXX'
secret = secrets_manager.get_secrets([UID_FILTER])[0]

# シークレットからパスワードを取得
secret.field('password', single=True)
using System;
using System.Threading.Tasks;
using SecretsManager;

private static async Task retrieveAPassword()
{
    var storage = new LocalConfigStorage("ksm-config.json");
    var options = new SecretsManagerOptions(storage);
    var records = (await SecretsManagerClient.GetSecrets(
            options, new[] { "XXX" })
        ).Records;
    foreach (var record in records)
    {
        // 「password」フィールドを取得
        var passwordVal = record.FieldValue("password");
            
        Console.WriteLine(record.RecordUid + " - " + record.Data.title + " - password=[" + passwordVal + "]");
    }
}
package main

// Secrets Managerのインポート
import ksm "github.com/keeper-security/secrets-manager-go/core"

func main() {

	options := &ksm.ClientOptions{
		// ワンタイムトークンは一度しか使用できません - 以後は、生成された設定ファイルを使用します
		Config: ksm.NewFileKeyValueStorage("ksm-config.json")}

	sm := ksm.NewSecretsManager(options)

	// すべてのレコードを取得(設定も初期化)
	allRecords, _ := sm.GetSecrets([]string{})

	for _, record := range allRecords {
		passwordMethod1 := record.Password()
		//passwordMethod2 := record.GetFieldValueByType("password") // フィールドにアクセスしてパスワードを取得
		println("UID", record.Uid, ", Password [", passwordMethod1, "]")
	}
}

添付ファイルのダウンロード

import com.keepersecurity.secretsManager.core.*;

import java.io.FileOutputStream;
import java.util.List;

public class KSMSample {
    public static void main(String[] args){
        // 事前に初期化されたストレージを取得
        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 myCredentials = secrets.getRecords().get(0);

            // レコードからファイル名によるファイル参照を取得
            KeeperFile file = myCredentials.getFileByName("acme.cer");

            // ファイルをダウンロード
            byte[] fileBytes = SecretsManager.downloadFile(file);
            String filename = file.getData().getName();
            FileOutputStream fos = new FileOutputStream(filename);
            fos.write(fileBytes);
            System.out.println("Downloaded File: " + filename);
        } catch (Exception e) {
            System.out.println("KSM ran into an problem: " + e.getMessage());
        }
    }
}
const file = firstRecord.files.find(x => x.data.name === 'acme.cer')
if (file) {
    const fileBytes = await downloadFile(file)
    fs.writeFileSync(file.data.name, fileBytes)
}
from keeper_secrets_manager_core import SecretsManager
from keeper_secrets_manager_core.storage import FileKeyValueStorage

secrets_manager = SecretsManager(
    config=FileKeyValueStorage('ksm-config.json')
)

# UIDで個々のシークレットを取得
UID_FILTER = 'XXX'
secret = secrets_manager.get_secrets([UID_FILTER])[0]

# すべてのファイルを/tmpフォルダに保存(存在しない場合はフォルダを作成)
for file in secret.files:
    print("file: %s" % file)
    file.save_file("/tmp/" + file.name, True)
using System;
using System.IO;
using System.Threading.Tasks;
using SecretsManager;

private static async Task downloadAFileAttachment()
{
    var storage = new LocalConfigStorage("ksm-config.json");
    var options = new SecretsManagerOptions(storage);
    
    // UIDでレコードを取得
    var records = (await SecretsManagerClient.GetSecrets(
            options, new[] { "XXX" })
        ).Records;
    foreach (var record in records)
    {
        // 最初のレコードからファイルをダウンロード
        var file = record.GetFileByName("acme.cer");
        if (file != null)
        {
            var fileBytes = SecretsManagerClient.DownloadFile(file);
            // ディスクにバイトを書き込む
            await File.WriteAllBytesAsync(file.Data.name, fileBytes);
        }            
    }
}
package main

// Secrets Managerのインポート
import ksm "github.com/keeper-security/secrets-manager-go/core"

func main() {

	options := &ksm.ClientOptions{
		// ワンタイムトークンは一度しか使用できません - 以後は、生成された設定ファイルを使用します
		Config: ksm.NewFileKeyValueStorage("ksm-config.json")}

	sm := ksm.NewSecretsManager(options)

	// すべてのパスワードレコードを取得(設定も初期化)
	allRecords, _ := sm.GetSecrets([]string{"[Record UID]"})

	for _, record := range allRecords {

		// タイトルでファイルを検索
		file := record.FindFileByTitle("[FILE TITLE]")

		// 配列からインデックスでファイルを取得
		//file := record.Files[0]

		// ファイルをディスクに保存
		file.SaveFile("/tmp/"+file.Name, true)
	}
}

添付ファイルのアップロード

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){
        // 事前に初期化されたストレージを取得
        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());
        }
    }
}
import * as fs from "fs";
import {getSecrets, uploadFile} from "@keeper-security/secrets-manager-core";

// ファイルを添付するレコードを取得
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
})
from keeper_secrets_manager_core import SecretsManager
from keeper_secrets_manager_core.storage import FileKeyValueStorage
from keeper_secrets_manager_core.core import KeeperFileUpload

secrets_manager = SecretsManager(
    config=FileKeyValueStorage('ksm-config.json')
)

# UIDによって個々のシークレットを取得し、ファイルを添付
UID_FILTER = 'XXX'
owner_record= secrets_manager.get_secrets([UID_FILTER])[0]

# アップロード用のファイルデータを準備
my_file = KeeperFileUpload.from_file("./myFile.json", "myfile.json", "My File") 

# 所有者のレコードに添付されたファイルをアップロード
upload_file(owner_record, file: my_file)
using System;
using System.IO;
using System.Threading.Tasks;
using SecretsManager;

private static async Task uploadFile()
{
    // ストレージとオプションを初期化
    var storage = new LocalConfigStorage("ksm-config.json");
    var options = new SecretsManagerOptions(storage);
    
    // ファイルを添付するレコードを取得
    var records = (await SecretsManagerClient.GetSecrets(
            options, new[] { "XXX" })
        ).Records;
        
    var ownerRecord = records[0];
    
    // アップロードするファイルデータを取得
    var bytes = await File.ReadAllBytesAsync("my-file.json");
    var myFile = new KeeperFileUpload(
        "my-file1.json",
        "My File",
        null,
        bytes
    );
       
    // 選択したレコードにファイルをアップロード                     
    await SecretsManagerClient.UploadFile(options, firstRecord, myFile);
    
}
package main

// Secrets Managerのインポート
import ksm "github.com/keeper-security/secrets-manager-go/core"

func main() {

	options := &ksm.ClientOptions{
		// ワンタイムトークンは一度しか使用できません - 以後は、生成された設定ファイルを使用します
		Config: ksm.NewFileKeyValueStorage("ksm-config.json")}

	sm := ksm.NewSecretsManager(options)

	// ファイルをアップロードするレコードを取得
	allRecords, _ := sm.GetSecrets([]string{"[Record UID]"})
	ownerRecord := allRecords[0]
	
	// ファイルのデータを取得してアップロードを準備
	dat, err := ioutil.ReadFile("/myFile.json")
	var myFile := KeeperFileUpload{
		Name: "myFile.json",
		Title:"My File",
		Type: "application/json",
		Data: dat
	}
	
	// 選択したレコードにファイルをアップロード
	sm.UploadFile(ownerRecord, myFile)
}

TOTPコードを取得

import com.keepersecurity.secretsManager.core.*;

public class KSMSample {
    public static void main(String[] args){
        // 事前に初期化されたストレージを取得
        KeyValueStorage storage = new LocalConfigStorage("ksm-config.json");
        try {
            SecretsManagerOptions options = new SecretsManagerOptions(storage);

            // シークレットを取得
            KeeperSecrets secrets = SecretsManager.getSecrets(options);

            // 目的のシークレットからtotp urlを取得
            String totpUrl = Notation.getValue(secrets, "XXX/field/oneTimeCode");

            // TOTPコードを取得
            TotpCode totpCode = TotpCode.uriToTotpCode(totpUrl);
            System.out.println("TOTP: " + totpCode.getCode());
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }
}
const url = getValue(secrets, `keeper://${record.recordUid}/field/oneTimeCode`)
let totp = await getTotpCode(url)
from keeper_secrets_manager_core import SecretsManager
from keeper_secrets_manager_core.storage import FileKeyValueStorage
# TOTPユーティリティのインポート
from keeper_secrets_manager_core.utils import get_totp_code

secrets_manager = SecretsManager(
    config=FileKeyValueStorage('ksm-config.json')
)

# UIDで個々のシークレットを取得
UID_FILTER = 'XXX'
secret = secrets_manager.get_secrets([UID_FILTER])[0]

# シークレットからTOTP URLを取得
url = secret.get_standard_field_value('oneTimeCode', True)

# シークレットのTOTPフィールドからワンタイムトークンを取得
code, _, _ = get_totp_code(url)
using System;
using System.Threading.Tasks;
using SecretsManager;

private static async Task retrieveTOTPCodes()
{
    var storage = new LocalConfigStorage("ksm-config.json");
    var options = new SecretsManagerOptions(storage);
    
    // UIDでレコードを取得
    var records = (await SecretsManagerClient.GetSecrets(
            options, new[] { "XXX" })
        ).Records;
    foreach (var record in records)
    {

        // レコードからQR/TOTPコードを取得
        string totpUrl = record.FieldValue("oneTimeCode").ToString();
        
        // KSM組み込み関数を使用してTOTP URIを変換
        var totp = CryptoUtils.GetTotpCode(totpUrl);

        Console.WriteLine("QR Code: [" + totp.Code + "]");
        Console.WriteLine("Expire in: [" + totp.TimeLeft + "]"); 
        Console.WriteLine("Total time interval: [" + totp.Period + "]");
    }
}
package main

// シークレットマネージャーのインポート
import ksm "github.com/keeper-security/secrets-manager-go/core"

func main() {

	options := &ksm.ClientOptions{
		// ワンタイムトークンは一度しか使用できません - 以後は、生成された設定ファイルを使用します
		Config: ksm.NewFileKeyValueStorage("ksm-config.json")}

	sm := ksm.NewSecretsManager(options)

	// すべてのパスワードレコードを取得(設定も初期化)
	allRecords, _ := sm.GetSecrets([]string{"[Record UID]"})

	for _, record := range allRecords {
		totpUrl := record.GetFieldValueByType("oneTimeCode")
		totpCode, _ := ksm.GetTotpCode(totpUrl)

		println("QR Code: [", totpCode.Code, "]")
		println("Expire in: [", totpCode.TimeLeft, "]")
		println("Total time interval: [", totpCode.Period, "]")
	}
}

パスワードの更新

import com.keepersecurity.secretsManager.core.*;
import java.util.List;

public class KSMSample {
    public static void main(String[] args){
        // 事前に初期化されたストレージを取得
        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 myCredentials = secrets.getRecords().get(0);

            // パスワードを更新し、変更をレコードに保存
            myCredentials.updatePassword("aP1$t367QOCvL$eM$bG#");
            SecretsManager.updateSecret(options, myCredentials);

        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }
}
// 最初のレコードのパスワードを更新
firstRecordPassword.value[0] = 'aP1$t367QOCvL$eM$bG#'
await updateSecret({storage: storage}, firstRecord)
from keeper_secrets_manager_core import SecretsManager
from keeper_secrets_manager_core.storage import FileKeyValueStorage

secrets_manager = SecretsManager(
    config=FileKeyValueStorage('ksm-config.json')
)

# UIDで個々のシークレットを取得
UID_FILTER = ['XXX']
record = secrets_manager.get_secrets(UID_FILTER)[0]

# 新しいパスワードをシークレットに設定
record.set_standard_field_value('password', 'NewPassword123')

# シークレットの変更をKeeperボルトに保存
secrets_manager.save(record)
using System.Threading.Tasks;
using SecretsManager;

private static async Task updateAPassword()
{
    var storage = new LocalConfigStorage("ksm-config.json");
    var options = new SecretsManagerOptions(storage);
    var records = (await SecretsManagerClient.GetSecrets(
            options, new[] { "XXX" })
        ).Records;
    foreach (var record in records)
    {
        // 「password」フィールドに新しい値を設定
        record.UpdateFieldValue("password", "NewP4$$w0Rd");
        
        // フィールドの新しい値をKeeperバックエンドに反映
        await SecretsManagerClient.UpdateSecret(options, record);
    }
}
package main

// シークレットマネージャーのインポート
import ksm "github.com/keeper-security/secrets-manager-go/core"

func main() {

	options := &ksm.ClientOptions{
		// ワンタイムトークンは一度しか使用できません - 以後は、生成された設定ファイルを使用します
		Config: ksm.NewFileKeyValueStorage("ksm-config.json")}

	sm := ksm.NewSecretsManager(options)

	// すべてのパスワードレコードを取得(設定も初期化)
	allRecords, _ := sm.GetSecrets([]string{"[Record UID]"})

	for _, record := range allRecords {
		
		record.SetPassword("NewP4$$w0Rd")					// 新しいパスワードをシークレットに設定

		record.RawJson = ksm.DictToJson(record.RecordDict) 		// JSONをサーバーに送信するため設定が必要

		sm.Save(record)							// シークレットの変更をKeeperボルトに保存
	}
}

パスワードの生成

import com.keepersecurity.secretsManager.core.*;
import java.util.List;
import java.util.Arrays;

public class KSMSample {
    public static void main(String[] args){
        // 事前に初期化されたストレージを取得
        KeyValueStorage storage = new LocalConfigStorage("ksm-config.json");
        try {
            SecretsManagerOptions options = new SecretsManagerOptions(storage);

            // 必要なレコードのUIDを含むフィルタを作成
            List<String> uidFilter = Arrays.asList("XXX");

            // フィルタを使用してシークレットを取得
            KeeperSecrets secrets = SecretsManager.getSecrets(options, uidFilter);

            // 取得結果から目的のシークレットを取得
            KeeperRecord myCredentials = secrets.getRecords().get(0);

            // 新しいパスワードを作成
            String password = CryptoUtils.generatePassword();

            // 新しいパスワードをレコードに設定
            myCredentials.updatePassword(password);
            
            // パスワードをKeeperに保存
            SecretsManager.updateSecret(options, myCredentials);

        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }
}
// ランダムなパスワードを生成
let password = await generatePassword()
// 最初のレコードのパスワードを更新
firstRecordPassword.value[0] = password
await updateSecret({storage: storage}, firstRecord)
from keeper_secrets_manager_core import SecretsManager
from keeper_secrets_manager_core.storage import FileKeyValueStorage
# ユーティリティからgenerate_passwordをインポート
from keeper_secrets_manager_core.utils import generate_password

secrets_manager = SecretsManager(
    config=FileKeyValueStorage('ksm-config.json')
)

# UIDで個々のシークレットを取得
UID_FILTER = ['XXX']
secret = secrets_manager.get_secrets(UID_FILTER)[0]

# ランダムなパスワードを生成
password = generate_password()

# 新しいパスワードをシークレットに設定
record.set_standard_field_value('password', password)

# シークレットの変更をKeeperボルトに保存
secrets_manager.save(record)
using System.Threading.Tasks;
using SecretsManager;

private static async Task generateNewPassword()
{
    var storage = new LocalConfigStorage("ksm-config.json");
    var options = new SecretsManagerOptions(storage);
    var records = (await SecretsManagerClient.GetSecrets(
            options, new[] { "XXX" })
        ).Records;
    foreach (var record in records)
    {
        // 新しいランダムなパスワードを生成
        var password = CryptoUtils.GeneratePassword();
        
        // 「password」フィールドに新しい値を設定
        record.UpdateFieldValue("password", password);
        
        // フィールドの新しい値をKeeperバックエンドに反映
        await SecretsManagerClient.UpdateSecret(options, record);
    }
}
package main

// シークレットマネージャーのインポート
import ksm "github.com/keeper-security/secrets-manager-go/core"

func main() {

	options := &ksm.ClientOptions{
		// ワンタイムトークンは一度しか使用できません - 以後は、生成された設定ファイルを使用します
		Config: ksm.NewFileKeyValueStorage("ksm-config.json")}

	sm := ksm.NewSecretsManager(options)

	// すべてのパスワードレコードを取得(設定も初期化)
	allRecords, _ := sm.GetSecrets([]string{"[Record UID]"})

	for _, record := range allRecords {
		newPassword, _ := ksm.GeneratePassword(64, 10, 10, 10, 10) 	// 新しいランダムなパスワードを生成
		record.SetPassword(newPassword)					// 新しいパスワードをシークレットに設定
		sm.Save(record)							// シークレットの変更をKeeperボルトに保存
	}
}

シークレットの作成

シークレットマネージャーSDKでは、Keeperのボルト内にレコードを作成することができます。

レコードを作成するには、シークレットマネージャーアプリケーションがアクセスできる共有フォルダのUIDが必要です。また、その共有フォルダ内での編集権限を持っている必要があり、そのフォルダ内に既存のレコードが1件以上存在している必要もあります。新しいレコードは、そのフォルダ内に作成されます。

以下の例では、[FOLDER UID]を対象の共有フォルダのUIDに置き換えてください。

import com.keepersecurity.secretsManager.core.*;

import java.util.List;

public class KSMSample {
    // 新しいレコードが格納されるフォルダ
    static String folderUid = "[FOLDER UID]";

    public static void addLoginRecord(){
        LocalConfigStorage storage = new LocalConfigStorage("ksm-config.txt");
        SecretsManagerOptions options = new SecretsManagerOptions(storage);

        KeeperSecrets secrets = SecretsManager.getSecrets(options);

        KeeperRecordData newRecordData = new KeeperRecordData(
                "Sample Example KSM Record",
                "login",
                List.of(
                        new Login("username@email.com"),
                        new Password("Pa$$word123")
                ),
                null,
                "\tThis record was created\n\tvia KSM Documentation Java Example"
        );

        SecretsManager.createSecret(options, folderUid, newRecordData, secrets);
    }

    public static void main(String[] args) {
        addLoginRecord();
    }
}
// ログインのレコードとフィールドを作成
let newRec = {
    "title":"My JavaScript Record 1",
    "type": "login",
    "fields": [
        {
            "type": "login", "value": [ "My Username" ]
        },
        {
            "type": "password", "value": [ await generatePassword() ]
        }
    ],
    "notes":"This record was createdvia KSM"
}
// 新しいレコードをKeeperボルトに保存
let newRecUid = await createSecret(options, "[FOLDER UID]", newRec)
from keeper_secrets_manager_core import SecretsManager
from keeper_secrets_manager_core.storage import FileKeyValueStorage
# RecordCreateメソッドのインポート
from keeper_secrets_manager_core.dto.dtos import RecordCreate

# 新しいログインレコードを作成
new_login_record = RecordCreate('login', "Sample KSM Record")
# ログインフィールドとパスワードフィールドに入力
new_login_record.fields = [
    RecordField(field_type='login', value='username@email.com'),
    RecordField(field_type='password', value=generate_password())
]
# メモに入力
new_login_record.notes = 'This is a Python record creation example'
# 新しいレコードを作成 
secrets_manager.create_secret('[FOLDER UID]', new_login_record)
using System;
using System.Threading.Tasks;
using SecretsManager;

private static async Task createASecret()
{
    var folderUid = "[FOLDER UID]";
    
    var storage = new LocalConfigStorage("ksm-config.json");
    var options = new SecretsManagerOptions(storage);

    // 新しいログインレコードを作成
    var newRecord = new KeeperRecordData();
    newRecord.type = "login";
    newRecord.title = "Sample KSM Record from Docs Example (C#)";
    
    // レコードフィールドに値を入力
    newRecord.fields = new[]
    {
        new KeeperRecordField { type = "login", value = new[] { "username@email.com" } },
        new KeeperRecordField { type = "password", value = new[] { CryptoUtils.GeneratePassword() } },
    };
    
    // レコードのメモに入力
    newRecord.notes = "This record was created via KSM .NET Example";
    
    // 新しいレコードをKeeperボルトに保存
    var recordUid = await SecretsManagerClient.CreateSecret(options, folderUid, newRecord);
    
    Console.WriteLine("New record UID = [" + recordUid + "]");
}
package main

// Secrets Managerのインポート
import ksm "github.com/keeper-security/secrets-manager-go/core"

func main() {

	folderUid := "[FOLDER UID]"

	options := &ksm.ClientOptions{
		// ワンタイムトークンは一度しか使用できません - 以後は、生成された設定ファイルを使用します
		Config: ksm.NewFileKeyValueStorage("ksm-config.json")}

	sm := ksm.NewSecretsManager(options)

	// 新しいログインレコードを作成
	newLoginRecord := ksm.NewRecordCreate("login", "Sample KSM Record from Docs Example (GoLang)")
	// ログインフィールドとパスワードフィールドに入力
	password, _ := ksm.GeneratePassword(32, 0, 0, 0, 0)
	newLoginRecord.Fields = append(newLoginRecord.Fields,
		ksm.NewLogin("username@email.com"),
		ksm.NewPassword(password))

	// メモに入力
	newLoginRecord.Notes = "This record was created via KSM GoLang Example"

	// 新しいレコードをKeeperボルトに保存
	recordUid, _ := sm.CreateSecretWithRecordData("", folderUid, newLoginRecord)

	println("New record UID = [", recordUid, "]")
}

その他のシークレット作成機能やレコードタイプとレコードフィールドの検証は、Keeperシークレットマネージャーの今後のリリースで対応予定です。

シークレットの削除

シークレットマネージャーを使用して、Keeperのボルトからレコードを削除することができます。

レコードを削除するには、シークレットマネージャーアプリケーションがそのレコードが属する共有フォルダにアクセスできること、および編集権限を持っていることが必要です。また、レコードを削除するには、シークレットマネージャーSDKにレコードのUIDを指定する必要があります。

// シークレットマネージャーを設定
val storage = LocalConfigStorage("ksm-config.json")
//initializeStorage(storage, "<One Time Access Token>")
val smOptions = SecretsManagerOptions(storage)

// レコードUIDで特定のシークレットを削除
deleteSecret(smOptions, List.of("EG6KdJaaLG7esRZbMnfbFA"));
// シークレットマネージャーを設定
const smOptions = { storage: localConfigStorage("ksm-config.json") 

// レコードUIDで特定のシークレットを削除
await deleteSecret(smOptions, ["EG6KdJaaLG7esRZbMnfbFA"]);
from keeper_secrets_manager_core import SecretsManager
from keeper_secrets_manager_core.storage import FileKeyValueStorage

# シークレットマネージャーを設定
secrets_manager = SecretsManager(
    token='<One Time Access Token>',
    config=FileKeyValueStorage('ksm-config.json')
)

# レコードUIDで特定のシークレットを削除
secret = secrets_manager.delete_secret('EG6KdJaaLG7esRZbMnfbFA')
using SecretsManager;

// シークレットマネージャーを設定
var storage = new LocalConfigStorage("ksm-config.json");
//SecretsManagerClient.InitializeStorage(storage, "<One Time Access Token>");
var smOptions = new SecretsManagerOptions(storage);

// レコードUIDで特定のシークレットを削除
await SecretsManagerClient.DeleteSecret(smOptions, new string[] {"EG6KdJaaLG7esRZbMnfbFA"});
import ksm "github.com/keeper-security/secrets-manager-go/core"

func main() {
	// シークレットマネージャーを設定
	options := &ksm.ClientOptions{
		// Token:  "<One Time Access Token>",
		Config: ksm.NewFileKeyValueStorage("ksm-config.json")}
	secretsManager := ksm.NewSecretsManager(options)
	
	// レコードUIDで特定のシークレットを削除
	secrets, err = secretsManager.DeleteSecrets([]string{"EG6KdJaaLG7esRZbMnfbFA"})
}

スクリプトの実装

KeeperシークレットマネージャーCLIは、任意のシステムコマンドを実行するラッパー関数を提供しており、その中で使用される環境変数をKeeperのボルトから取得した値に置き換えることができます。

Secrets Manager CLI Execコマンド

ボルトおよび管理者用SDK

ボルトおよび管理レベルでの高度な機能については、各種開発ツールへのリンクを含むボルトSDKのページをご覧ください。

ボルトのSDK

これらの例では、シークレットマネージャーの構成ファイルがすでに初期化されていることを前提としています。構成ファイルの初期化方法については、初期化のページをご参照ください。

これらの例では、シークレットマネージャーの構成ファイルがすでに初期化されていることを前提としています。構成ファイルの初期化方法については、初期化のページをご参照ください。

これらの例では、シークレットマネージャーの構成ファイルがすでに初期化されていることを前提としています。構成ファイルの初期化方法については、初期化のページをご参照ください。

これらの例では、シークレットマネージャーの構成ファイルがすでに初期化されていることを前提としています。構成ファイルの初期化方法については、初期化のページをご参照ください。

これらの例では、シークレットマネージャーの構成ファイルがすでに初期化されていることを前提としています。構成ファイルの初期化方法については、初期化のページをご参照ください。

これらの例では、シークレットマネージャーの構成ファイルがすでに初期化されていることを前提としています。構成ファイルの初期化方法については、初期化のページをご参照ください。

これらの例では、シークレットマネージャーの構成ファイルがすでに初期化されていることを前提としています。構成ファイルの初期化方法については、初期化のページをご参照ください。