valid,invalid

関心を持てる事柄について

1Password CLIから指紋認証でパスワードやOTPを取得する

1Password CLIから指紋認証でパスワードやOTPを取得する方法について。

1Password CLIは使ったことがなく、Your CLI wish is our command 🪄💫 | 1Passwordを見て興味を持ち、セットアップしたらとても便利だった。

セットアップ手順

1. 1Passwordのセットアップ

まず https://1password.com/downloads/mac/ 1Password 8以上のデスクトップアプリをインストールする*1

2022-03-28時点でApp Storebrew install 1password では7系しかインストールできない。かつ、macOSの1Password 8はbeta扱いなので画面下のほうにある以下のリンクからダウンロードする。

インストールした1Passwordを起動してログインしておく。

2. 1Password CLIのセットアップ

https://developer.1password.com/docs/cli/get-started を参考にすればよい。一応手順を書く。

1Password CLI v2以上をインストールする。

https://1password.com/downloads/command-line/ からダウンロードしてもいいし、brew install 1password-cliしてもよい。brewでもv2をインストールできる。

インストールしたらCLIからアカウントを追加する。

$ op account add
Enter your sign-in address (example.1password.com):
Enter the email address for your account on <sign-in address>: 
Enter the Secret Key for <email address> on <sign-in address>:
Enter the password for <email address> at <sign-in address>:

Vaultにある 1Password Account (<username>) に書いてある内容を移せばOK。

項目 入力事項
sign-in address 個人アカウントなら大抵は my.1password.com でよいはず
email address (1Passwordアカウントのメールアドレス)
Secret Key (1PasswordアカウントのSecret Key)
password (1Passwordアカウントのパスワード)

次に、追加したアカウントにCLIsign inする。

$ eval $(op signin)
Enter the password for <email address> at <sign-in address>:

account addしてもアカウントを追加しただけでsign inはできていないため、このコマンドでsign inする必要がある。ちなみに1Passwordに設定した期間で強制sign outされる。

3. 指紋認証を有効化する

1Passwordのデスクトップアプリで以下の手順を行うことで、パスワード認証ではなく指紋認証sign inできる。

  1. 1Password > Preferences で設定モーダルを開く
  2. Developer > 1Password CLI 2 にある Biometric unlock for 1Password CLI にチェックを入れる

試しにOTP取得してみる

上記のセットアップが完了していれば以下のコマンドにて、1Passwordへの指紋認証を経て各種itemのパスワードやOTPなどを取得することができる。

$ op item get my-item --otp

このOTPをパイプで流し込んだり、aliasを登録しておくとCLIでの多要素認証の手数が減る*2Your CLI wish is our command 🪄💫 | 1Passwordにあるように環境変数を流し込むようなこともできる。

コマンドについて

op item get { <itemName> | <itemID> } --otp

1Passwordに登録されたitemの情報を取得するコマンド。

itemNameに空白等が入っていてCLIとかで扱いにくいな〜ってときにItemIDが使える。

itemIDは op item listop item get で確認できる。

$ op item list
ID                            TITLE          VAULT     EDITED
2nkisfqj3bh2tb6soowptfkooa    my-item        Personal  3 years ago

--otp でOTP文字列を返す。OTP以外のフィールドも取り出し放題で、他にも様々なオプションがあるのでリファレンス参照。

関連ドキュメント

*1:当初、1Password 7で色々ためそうとして失敗した

*2:減ってよいのかどうか?は別議論