1Password CLIでバイオメトリクス認証(Touch ID)を使ってAWSのワンタイムパスワードを取得する

2022.03.16

こんにちは、CX事業本部 IoT事業部の若槻です。

今日見かけたこちらのエントリを読んですごく便利そうだったので、MacのTouch ID認証による1Password CLIでのAWSのワンタイムパスワード(OTP)取得を自分自身でも試してみました。

前提

Touch IDが利用可能なMacBookを使用します。

$  sw_vers
ProductName:	macOS
ProductVersion:	11.6
BuildVersion:	20G165

AWSのMFAデバイスのOTPはすでに設定済みです。

1Passwordには、AWSダッシュボードへのサインインでMFAコード含む情報が自動入力できるアイテムを登録済みです。

セットアップ

1Password CLIのインストール

brew install --cask 1password/tap/1password-cli

1Password 8 for Mac betaの導入

私のMacBook上の現在の1PasswordアプリはVersion 7.9.2だったので、8 betaを導入します。

8 betaは下記からダウンロード出来ます。

ダウンロードしたインストーラーを実行すると、version 8.6の1Passwordアプリを導入できました。

すでに7以前のアプリがある場合は共存するようです。不要な場合は古いアプリをアンインストールをしてください。

Biometric unlock for 1Password CLIの有効化

1Passwordアプリで[Preference]-[Developer]-[1Password CLI 2]でBiometric Unlock for 1Password CLIにチェックを入れます。

1Password CLIへのサインイン

op vault ls

実行するとサインインアドレス(hgoe.1password.comみたいなやつ)、メールアドレス、シークレットキーを求められるので、正しく指定できたらサインインできます。

以降、このサインインを実施済みの環境では、1Password CLIのコマンド実行時にはTouch IDを求められます。一度Touch IDの認証を行えばセッションが切れるまでの期間は認証なしでコマンドを実行可能です。

AWSアカウントのOTPを取得してみる

まずop item listを実行して1Passwordに格納しているアイテムの一覧を出力します。

$  op item list
ID                            TITLE                               VAULT              EDITED
xxxxxxxxxxxxxxxxxxxxxxxxxx    hogeアプリ(DEV) 管理者                Private            1 day ago
...

その中でOTPを取得したいアカウントのIDを控えます。

op item get <ID>を実行すると、そのアイテムの詳細を取得できます。

$  op item get xxxxxxxxxxxxxxxxxxxxxxxxxx
ID:          xxxxxxxxxxxxxxxxxxxxxxxxxx
Title:       AWSアカウント(IAMユーザー)
Vault:       Private (xxxxxxxxxxxxxxxxxxxxxxxxxx)
Created:     2 years ago
Updated:     1 day ago by 若槻龍太
Favorite:    false
Tags:        社内
Version:     14
Category:    LOGIN
Fields:
  password:        xxxxxxxxxxxxxxxxxx
  username:        hoge-wakatsuki
  :                123456
  アカウントID:    XXXXXXXXXXXX
URLs:
  - aws.amazon.com (primary)

op item get <ID> -otpを実行すると、OTPだけを取得することができました!

$  op item get xxxxxxxxxxxxxxxxxxxxxxxxxx --otp
123456

注意点

1Passwordアプリ自体のアップデート機能だと7.Xまでしかアップデートできない

少しハマったのですが、1Passwordアプリ自体のアップデート機能だと7.Xまでしかアップデートできないようです。

1Passwordアプリ(version 7)の[設定]-[アップデート]で、[ベータビルドを含む]にチェックを入れ[今確認]をクリック。

確かに7.9のbetaまでしかアップデートできないようですね。

よって前述の通り1PasswordのWebサイトから8 betaのインストーラーを直接ダウンロードする必要がありました。

おわりに

MacのTouch ID認証による1PasswordからのAWSのワンタイムパスワード(OTP)取得を試してみました。

これによりOTPが必要なAWSアカウントの認証であっても、op vault lsop item get <ID> --otpをスクリプトに組み込めばスムーズに認証が行えそうです。

参考

以上