envファイルへのパスワードコピペ代わりに1Password Cliの認証処理を活用してみる

よくあるenvファイルへのパスワード埋め込みの代わりに、1Password Cliを通してのパスワード読み込みを試してみました。
2023.09.07

使い捨てのスクリプト内でログイン処理を書く時には、.envファイル内に1Passwordからコピーしたパスワードを埋め込んだ上で環境変数経由で取り込んでいました。

ですが、今の1Passwordはcliを通してスクリプトへセキュアにパスワードを渡すことが可能です。滅多に行う機会がないため忘れがちですが、実際にはどのようにやればいいのか備忘録として書いてみました。

1Password Cli のインストール

手順は1PasswordのDevelopersサイトに掲載されています。

Macの場合は事前にHomebrewをインストールしておきましょう。

Cliからの読み込み手続き

Cliに保管庫内のパスワードパスを渡します。このパスワードパスはValut、アイテム名、アイテム内セクションで構成されています。例えば以下の図の組み合わせだとします。

この場合の読み込みパスは以下のとおりです。

op://Private/Developers.IO/app_password

ポイントはアカウント名を必要としないことです。

読み込み手段は幾つもありますが、わかりやすい手続きとしては以下の通り。

AWS_SECRET_ACCESS_KEY=op://prod/aws/secret-key
AWS_ACCESS_KEY_ID=op://prod/aws/access-key
op run --env-file yourscript.env -- yourscript.sh

これはenvファイルを経由していますが、経由せずに直接読み込むものとしては以下の例もあります。

#!/bin/bash

export AWS_SECRET_ACCESS_KEY=$(op read op://prod/aws/secret-key)
export AWS_ACCESS_KEY_ID=$(op read op://prod/aws/access-key-id)
aws sts get-caller-identity

ここで察せられるかもしれませんが、読み込みパスに日本語やスペースを含まないようにしたほうが動作確認は容易いでしょう。Cli用のValutを用意するのも手です。

他にも読み込み例が1Password Developerに幾つも掲載されています。

実行してみる

上記の例に上げた処理を実行すると、TouchIDによる認証を適用している場合は以下のダイアログが表示されます。

TouchIDでの認証を通すと完了します。

あとがき

習慣でenvファイルへ直接埋めることは多いのですが、折角の機能として活用する際の手続きを調べてみました。

Cliがインストールしてある前提であれば、ローカルから実行する場合には共通のプロセスとして利用できることでしょう。