Linux Keyring
Linux Keyringからシークレットを保存および取得
最終更新
Linux Keyringからシークレットを保存および取得
最終更新
Keyring (キーリング) はLinuxのセキュリティ機能で、パスワードやシークレットなどの機密情報を保存し、アプリケーションから安全にアクセスできるようにします。
Keeperからは、Linuxキーリングユーティリティというユーティリティがご利用になれます。このユーティリティは、ネイティブLinux APIと対話し、Secret Service APIを使用してキーリングからシークレットを保存および取得します。このユーティリティは、あらゆる統合、プラグイン、コードベースで使用でき、あらゆるLinuxキーリングに認証情報、シークレット、パスワードを簡単に保存および取得できます。
Linuxキーリングユーティリティのコードベースは、以下から入手できます。
上記のユーティリティを使用するために必要なバイナリは、以下から入手できます。
Linuxキーリングユーティリティを使用するには、以下の方法があります。
リリースページからビルド済みのバイナリをデプロイする。
コードベースにインポートする。
Linuxキーリングユーティリティは、D-Busシークレットサービスを使用して、Linuxキーリング内のシークレットを取得および設定します。
Linuxキーリングユーティリティは、GNOME KeyringおよびKDE Wallet Managerでテスト済みで、D -Bus Secrets Serviceのどの実装でも動作するはずです。
dbus_secrets
とsecret_collection
の2 つのパッケージがあります。secret_collection
オブジェクトはdbus_secrets
の関数を使用します。このオブジェクトは、D-Busの接続、セッション、コレクションサービスオブジェクトを統合し、CLIが利用するシンプルな「取得 (get) / 設定 (set) / 削除 (delete)」インターフェースがご利用になれます。
Go言語APIにはGet()
、Set()
、Delete()
の各メソッドが用意されています。最初の2つのメソッドはstring
データを受け取り、返します。
.DefaultCollection()
は、デフォルトのエイリアスが参照するコレクションを返します。デフォルトのエイリアスが設定されていない場合はエラーが発生します。通常はログインキーリングを指します。ほとんどのLinuxキーリングインターフェイスでは、ユーザーが設定できます。
.NamedCollection(string)
メソッドでは、名前によってコレクションへのアクセスします。
Setはデータをパラメータとして受け取り、エラーまたは成功した場合nil
のみを返します。シークレットデータの内容や長さに制限はありません。
Linuxバイナリでは以下の3つのサブコマンドがサポートされています。
get
set
del
get
とdel
は1つのパラメータ (name) を必要とします。これパラメータは、 D-Bus API用語ではシークレットラベルを指します。
del
は1つ以上のシークレットラベルを受け取り、それらをすべて削除します。エラーが発生した場合はその時点で処理を停止します。
set
では第2パラメータとしてデータを単一の文字列で指定する必要があります。たとえば、set foo bar baz
はエラーを引き起こしますが、set foo 'bar baz'
は正常に動作します。文字列として-
を指定した場合、標準入力から文字列を読み込みます。
get
とset
には、-b
または --base64
フラグがあり、Base64エンコーディングを自動的に処理します。このフラグを使用すると、set
は入力を保存する前にエンコードし、get
は出力する前にデコードします。
注意点として、Base64エンコードされていないシークレットに対して get -b
を使用するとエラーが発生します。
例
エラー出力はstderr
に送られるので、コマンドの末尾に2>/dev/null
を追加するとエラーが抑制されます。
ログインコレクションが存在しない理由は、キーリング自体が存在しないためです。KDEでは、GNOMEのようにloginではなくkdewalletが作成される場合があります。
同じラベルのシークレットが存在する場合でも、シークレットが返されない場合があります。シークレットがlkru
で作成されていない場合は、「Agent」、「Application」、「ID」のような属性が一致していない可能性があります。
シークレットサービスをホストする D-Busセッションが存在しない可能性があります。ユーザーがGUIにログインしていない場合に発生します。
システムがD-Busをホストしていない可能性があります。一部の軽量Linuxディストリビューションは、デフォルトでD-Busなしで出荷されます。