保存先とプラットフォーム

値は常に、オペレーティングシステム自身の資格情報ストアに保存されます。keygrant 自身のファイルに含まれるのはメタデータだけです。ただし Windows では、あなたのユーザーアカウントに紐づけて暗号化された値も含まれます。

プラットフォーム値ファイル
WindowsDPAPI(あなたの Windows ユーザーに紐づけて暗号化)%APPDATA%\keygrant\
macOSログインキーチェーン(サービス名 keygrant)~/.config/keygrant/
Linuxsecret-tool 経由の Secret Service キーリング~/.config/keygrant/

macOS と Linux では、$XDG_CONFIG_HOME が設定されていれば、フォルダの場所はそれに従います。

ファイル

ファイル内容
vault.jsonシークレットごとに 1 エントリ。説明、作成日時、使用回数、最終使用日時。Windows では DPAPI で暗号化された値も含みます
revocations.jsonkeygrant revoke によって書き込まれる取り消し時刻
cloud.jsonクラウドアカウントの状態(クラウド同期を使う場合のみ)。この中の鍵素材自体も、OS のキーストアを通じて保存されます

macOS と Linux では、vault.json はバックアップしても安全です(値は含まれません)。Windows では、その中の値を復号できるのは、そのマシン上のあなたの Windows アカウントだけです。

プラットフォームごとの注意点

Windows。 インストールが必要なものはありません。承認ダイアログは標準の MessageBox なので、ボタンの表記はシステムの言語に従います(Yes/No、是/否)。

macOS。 keygrant が初めて値を読み込むとき、macOS は security にそのキーチェーン項目へのアクセスを許可するかどうかを尋ねます。このプロンプトは、OS レベルの追加の関門です。「常に許可」を選ぶと、その項目についてはプロンプトが表示されなくなります。

Linux。 secret-tool と、実行中のキーリングデーモン(GNOME Keyring または KWallet の Secret Service)が必要です。また、承認ダイアログのために zenity が必要です。

sudo apt install libsecret-tools zenity      # Debian, Ubuntu
sudo dnf install libsecret zenity            # Fedora
sudo pacman -S libsecret zenity              # Arch

zenity のないヘッドレス環境では、ローカルのダイアログは表示されません。スマートフォン承認を設定していればリクエストはそちらに送られ、設定していなければ拒否されます。

ローカルのマルウェア

あなたの OS ユーザーとして動作しているものは、何であれキーストアにシークレットを要求できます。keygrant はエージェントが触れられる範囲を制限するものであり、すでにあなたとして動作しているマルウェアを防ぐものではありません。