2要素認証を必須にしたAWSのswitch roleで、temporary credentialsをCLIで取得したかった。 TOTPの数字を毎回調べるのが面倒で、簡単にできないか調べたところ、1Password CLIというのがあった。1Passwordユーザなので、これを利用する。 ただし、当然のことだが、2要素認証のデバイスとして、1Passwordが利用されている状況とする。
1Password CLIの初期設定
1Password CLI を利用できるようにする。 1Password CLIのGetting Startedを見て、初期設定する。
$ op signin _1password_url_ _signin_address_
... # Secret Key, Password, (設定していればTOTPの6-digit)を聞かれる
短縮形が _1password_url_
から自動的に決まるが、どうしても指定したい場合には、 --shorthand
オプションで指定する。
TOTPの取得
通常の1password appのように、30minアクセスがなければ、ロックされるため、パスワードの入力が必要。
1passwordのURLが example.1password.com
であれば、
$ eval $(op signin example)
として、再認証する。
環境変数 OP_SESSION_example
に認証したときのsession情報が載る。(--session
オプションで各コマンドごとに渡しても良い)
TOTPを取得するには、以下のコマンドを実行する。
$ op get totp "UUID or Name"
UUIDで指定したい場合には、 op list items --categories Login
の結果をjqなどで調べて、取得する。
終わり
以上で概ねやりたかった、CLIでTOTPを取得することができるようになった。 最近1PasswordはLinux Desktop向けのアプリを出していたりしているので、もう少し真面目に使っていきたい所存。
ちなみに、複数のプロファイルの切り替えなどで便利なように、 99designs/aws-vaultというのもあるらしいが、特に使わずに自前シェルスクリプトで使っている。
comments powered by Disqus