Linux Keyring

Linux Keyringからシークレットを保存および取得

概要

Keyring (キーリング) はLinuxのセキュリティ機能で、パスワードやシークレットなどの機密情報を保存し、アプリケーションから安全にアクセスできるようにします。

Keeperからは、Linuxキーリングユーティリティというユーティリティがご利用になれます。このユーティリティは、ネイティブLinux APIと対話し、Secret Service APIを使用してキーリングからシークレットを保存および取得します。このユーティリティは、あらゆる統合、プラグイン、コードベースで使用でき、あらゆるLinuxキーリングに認証情報、シークレット、パスワードを簡単に保存および取得できます。

Linuxキーリングユーティリティのコードベースは、以下から入手できます。

上記のユーティリティを使用するために必要なバイナリは、以下から入手できます。

Linuxキーリングユーティリティを使用するには、以下の方法があります。

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

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

Linuxキーリングユーティリティ

Linuxキーリングユーティリティは、D-Busシークレットサービスを使用して、Linuxキーリング内のシークレットを取得および設定します。

Linuxキーリングユーティリティは、GNOME KeyringおよびKDE Wallet Managerでテスト済みで、D -Bus Secrets Serviceのどの実装でも動作するはずです。

インタフェース

dbus_secretssecret_collectionの2 つのパッケージがあります。secret_collectionオブジェクトはdbus_secretsの関数を使用します。このオブジェクトは、D-Busの接続、セッション、コレクションサービスオブジェクトを統合し、CLIが利用するシンプルな「取得 (get) / 設定 (set) / 削除 (delete)」インターフェースがご利用になれます。

使用方法 - コードベースへのインポート

Go言語APIにはGet()Set()Delete()の各メソッドが用意されています。最初の2つのメソッドはstringデータを受け取り、返します。

例 (get)

.DefaultCollection()は、デフォルトのエイリアスが参照するコレクションを返します。デフォルトのエイリアスが設定されていない場合はエラーが発生します。通常はログインキーリングを指します。ほとんどのLinuxキーリングインターフェイスでは、ユーザーが設定できます。

.NamedCollection(string)メソッドでは、名前によってコレクションへのアクセスします。

例 (Set)

Setはデータをパラメータとして受け取り、エラーまたは成功した場合nilのみを返します。シークレットデータの内容や長さに制限はありません。

使用方法 - バイナリインターフェイス (CLI)

Linuxバイナリでは以下の3つのサブコマンドがサポートされています。

  1. get

  2. set

  3. del

getdelは1つのパラメータ (name) を必要とします。これパラメータは、 D-Bus API用語ではシークレットラベルを指します。

delは1つ以上のシークレットラベルを受け取り、それらをすべて削除します。エラーが発生した場合はその時点で処理を停止します。

set では第2パラメータとしてデータを単一の文字列で指定する必要があります。たとえば、set foo bar bazはエラーを引き起こしますが、set foo 'bar baz'は正常に動作します。文字列として-を指定した場合、標準入力から文字列を読み込みます。

Base64エンコード

getsetには、-b または --base64 フラグがあり、Base64エンコーディングを自動的に処理します。このフラグを使用すると、setは入力を保存する前にエンコードし、get は出力する前にデコードします。

注意点として、Base64エンコードされていないシークレットに対して get -b を使用するとエラーが発生します。

エラー

エラー出力はstderrに送られるので、コマンドの末尾に2>/dev/nullを追加するとエラーが抑制されます。

キーリングがない

ログインコレクションが存在しない理由は、キーリング自体が存在しないためです。KDEでは、GNOMEのようにloginではなくkdewalletが作成される場合があります。

一致するシークレットがない

同じラベルのシークレットが存在する場合でも、シークレットが返されない場合があります。シークレットがlkruで作成されていない場合は、「Agent」、「Application」、「ID」のような属性が一致していない可能性があります。

D-Busセッションが存在しない

シークレットサービスをホストする D-Busセッションが存在しない可能性があります。ユーザーがGUIにログインしていない場合に発生します。

D-Busが存在しない

システムがD-Busをホストしていない可能性があります。一部の軽量Linuxディストリビューションは、デフォルトでD-Busなしで出荷されます。

最終更新