Windows資格情報マネージャー

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

概要

Windows資格情報マネージャーはネイティブのWindowsユーティリティで、パスワードやシークレットなどの機密情報を保存し、アプリケーションが安全にアクセスできるようにします。

Keeperでは、ネイティブ Windows API と連携して Windows 資格情報マネージャーのシークレットを保存および取得するユーティリティであるWindows資格情報ユーティリティを用意しています。このユーティリティは、あらゆる統合、プラグイン、コードベースで使用でき、Windows資格情報マネージャーの資格情報、シークレット、パスワードをシンプルかつネイティブに保存および取得できます。

Windows資格情報ユーティリティのコードベースは、以下の場所にあります。

上記のユーティリティを使用するために必要なバイナリは、以下の場所にあります。

Windows資格情報ユーティリティを使用するには、以下のいずれかを実行します。

  • リリースページからビルド済みのバイナリをデプロイする

  • コードベースにインポートする

両方の使用例について以下で説明します。

使用方法 - 実行ファイル

実行ファイルのダウンロード

リリースページから最新バージョンの実行ファイルをダウンロードし、必要に応じてPATHに追加して開始します。

実行ファイルの使用

実行ファイルで2つのコマンドがサポートされています。

  1. set

  2. get

どちらのコマンドも、最初の引数としてアプリケーションname(Windows資格情報マネージャーに保存される資格情報の名前) が必要です。

set

setでは保存するシークレットの2番目の引数が必要となり、以下のいずれかとなります。

  1. BASE64文字列

  2. JSON文字列

  3. 既存のJSONファイルへのパス

get

getは、保存されている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 WindowsCredentialManager

set

Windows資格情報マネージャーに書き込むには、CredentialManagerオブジェクトのWriteCredentialメソッドを使用できます。これにより、現在のユーザーの資格情報マネージャーのシークレットが書き込まれ、上書きされます。

資格情報マネージャーにシークレットを正常に追加するには、3つの引数を指定する必要があります。

まず、アプリケーション名 (シークレットの参照に使用)、ユーザーのユーザー名の文字列表現、シークレット自体で、以下のいずれかになります。

  1. BASE64文字列

  2. JSON文字列

  3. 既存のJSONファイルへのパス

var secret = Parsing.ParseConfig(configArg); // Returns a BASE64 sring
CredentialManager.WriteCredential("MY_APP_NAME", Environment.UserName, secret);

get

資格情報マネージャーからシークレットを取得するには、アプリケーション名をReadCredentialメソッドに渡します。これにより、保存されているBASE64でエンコードされたシークレットが返されます。

var cred = CredentialManager.ReadCredential("MY_APP_NAME");

最終更新