Windows資格情報マネージャー
Windows資格情報マネージャーにシークレットを保存して取得

概要
Windows資格情報マネージャーはネイティブのWindowsユーティリティで、パスワードやシークレットなどの機密情報を保存し、アプリケーションが安全にアクセスできるようにします。
KeeperではWindows資格情報ユーティリティを用意しており、このユーティリティを使用してネイティブWindows APIと連携し、Windows資格情報マネージャーのシークレットを保存および取得できます。また、あらゆる統合、プラグイン、コードベースで使用でき、Windows資格情報マネージャーの資格情報、シークレット、パスワードをシンプルかつネイティブに保存および取得できます。
Windows資格情報ユーティリティのコードベースは、以下の場所にあります。
上記のユーティリティを使用するために必要なバイナリは、以下の場所にあります。
Windows資格情報ユーティリティを使用するには、以下のいずれかを実行します。
リリースページからビルド済みのバイナリをデプロイする
コードベースにインポートする
両方の使用例について以下で説明します。
使用方法 - 実行ファイル
実行ファイルのダウンロード
リリースページから最新バージョンの実行ファイルをダウンロードし、必要に応じてPATHに追加して開始します。
実行ファイルの使用
実行ファイルで2つのコマンドがサポートされています。
setget
どちらのコマンドも、最初の引数としてアプリケーションname (Windows資格情報マネージャーに保存される資格情報の名前) が必要です。
set
setsetでは保存するシークレットの2番目の引数が必要となり、以下のいずれかとなります。
BASE64文字列
JSON文字列
既存のJSONファイルへのパス
シークレットが Windows資格情報マネージャーに保存される際、まずBASE64形式にエンコードされます (まだ BASE64 文字列でない場合)。これにより保存形式が標準化され、Keeperの統合機能および製品での利用が容易になります。
get
getgetは、保存されているBASE64でエンコードされた構成をstdoutに返し、0の終了コードで終了します。要求元の統合では、出力をキャプチャして使用できます。構成の取得中にエラーが発生した場合、non-zeroの終了コードが返され、stderrに書き込まれます。
例
# シークレットを保存
wcu set APPNAME eyJ1c2VybmFtZSI6ICJnb2xsdW0iLCAicGFzc3dvcmQiOiAiTXlQcmVjaW91cyJ9
# or
wcu set APPNAME config.json
# シークレットを取得
wcu get APPNAME使用方法 - コードベースへのインポート
このユーティリティは、Nuget経由でコードベースにインストールできます。
dotnet add package Keeper.WindowsCredentialManager以下のように、コードベースにインポートできます。
using WindowsCredentialManagerset
setWindows資格情報マネージャーに書き込むには、CredentialManagerオブジェクトのWriteCredentialメソッドを使用できます。これにより、現在のユーザーの資格情報マネージャーのシークレットが書き込まれ、上書きされます。
資格情報マネージャーにシークレットを正常に追加するには、3つの引数を指定する必要があります。
まず、アプリケーション名 (シークレットの参照に使用)、ユーザーのユーザー名の文字列表現、シークレット自体で、以下のいずれかになります。
BASE64文字列
JSON文字列
既存のJSONファイルへのパス
シークレットが Windows資格情報マネージャーに保存される際、まずBASE64形式にエンコードされます (まだ BASE64 文字列でない場合)。これにより保存形式が標準化され、Keeperの統合機能および製品での利用が容易になります。
var secret = Parsing.ParseConfig(configArg); // Returns a BASE64 sring
CredentialManager.WriteCredential("MY_APP_NAME", Environment.UserName, secret);get
get資格情報マネージャーからシークレットを取得するには、アプリケーション名をReadCredentialメソッドに渡します。これにより、保存されているBASE64でエンコードされたシークレットが返されます。
var cred = CredentialManager.ReadCredential("MY_APP_NAME");最終更新

