1Password CLIでシークレット参照を使う

1Passwordマニュアル|1Password CLIを使って、シークレット参照で安全に情報を環境へ読み込む方法を詳しく解説します。

1Password CLIを使うと、シークレット参照arrow-up-rightを使用して、プレーンテキスト(平文)でシークレットを公開することなく、1Passwordに保存されている情報を環境変数、構成ファイル、スクリプトに安全に読み込むことができます。

シークレット参照のURIには、1Passwordアカウントでシークレットが保存されるvault、アイテム、セクション、フィールドの名前が含まれます。

$ op://<①vault-name>/<②item-name>/[③section-name/]<④field-name>

シークレット参照を実行時に参照するシークレットに置き換えるには、op readarrow-up-rightop runarrow-up-right、またはop injectarrow-up-rightコマンドを使います。

circle-check

必要条件

1Password CLIでシークレット参照を使って安全にシークレットをロードするには、以下のことが必要です:

1Passwordにサインアップするarrow-up-right

1Password CLIをインストールするarrow-up-right

③参照したいシークレットを1Passwordアカウントに保存する。

ステップ1:シークレット参照を取得する

シークレット参照を取得するにはいくつかのやり方があります。

ステップ2:平文のシークレットをシークレット参照で置き換える

シークレット参照を作成したら、それをコード中の平文のシークレットの代わりに使ってください。

以下の例では、GitHubの環境ファイルに、平文のトークンではなく、1Password内のGitHub Personal Access Tokenが保存されている場所を指すシークレット参照を指定しています。

ステップ3:シークレット参照を解決する

シークレット参照をランタイムに実際のシークレットで置き換えるには3つの方法があります。

op readコマンドで出力するarrow-up-right

op readarrow-up-right コマンドとシークレット参照を使ってシークレットを標準出力(stdout)に出力できます。

chevron-right結果の例:hashtag

ghp_WzgPAEutsFRZH9uxWYtw

シークレットをstdoutではなくファイルに書き込むには、新しいファイルへのパスとともに--out-fileフラグ(または -o)を含めます。例えば、GitHub personal access tokenを含むファイルtoken.txtを作成するには、次のようにします。

また、シークレット参照を指定したop readコマンドを使って、シークレットをスクリプトに読み込むarrow-up-rightこともできます。例えば、docker loginコマンドでDockerユーザー名とパスワードの代わりにシークレット参照を使うには、次のようにします。

Query parameters クエリーパラメーターarrow-up-rightを含むシークレット参照を使用して、アイテムに関する詳細情報を取得できます。 アイテムフィールドまたはファイル添付に関する情報を取得するには、取得する属性とともにattribute(またはattr)クエリーパラメーターを含めて命令します。

この方法でフィールドの次の属性を照会できます: typevaluetitleidpurposeotp

さらに照会できる、ファイル添付ファイルの属性は次のとおりです: content, size, id, name, type.

例えば、 GitHubアイテムのワンタイムパスワードフィールドからワンタイムパスワードを取得するには、次のようにします。

chevron-right結果の例:hashtag

359836

OpenSSH形式でSSHキーのプライベートキーを取得するには、SSHキーのprivate keyフィールドのシークレット参照に、値openssh を持つssh-formatクエリーパラメーターを含めます。

chevron-right結果の例:hashtag

-----BEGIN OPENSSH PRIVATE KEY----- b3BlbnNzaC1rZXktdjEAAAAACmFlczI1Ni1jdHIAAAAGYmNyeXB0AAAAGAAAABD3rRrf8J ruD0CxZTYfpbTYAAAAEAAAAAEAAAAzAAAAC3NzaC1lZDI1NTE5AAAAIJ5B/GnxX6t9jMwQ G7QE7r5daJLkMKTZhNZhWfvzK2y+AAAAkLgQAivYu/+12/YrZhK5keIAZf4ZgsZsZ2JI2q qbx23PqgO93oGy1iCxXe3kngQL4cM6lwOZPsZPKCinkN6KxEr6RnXqFRHJbMpOiGeZhTuD rjeo77HqFdxDqDeckB77XCKL0Ew28H5JlM/WO31XR3Z4VBAgTe+BQLjrFV8WU5UX38hpBJ PMJyRsK72ZUDDaGQ== -----END OPENSSH PRIVATE KEY-----

circle-info

次のステップ

シークレットをスクリプトに安全にロードする方法arrow-up-rightについて詳しく学習します。

op runコマンドで出力する

op runは、環境変数をスキャンしてシークレット参照を探し、1Passwordから対応する値をロードし、サブプロセスの実行中は環境変数としてシークレットを使用できるようにして、指定されたコマンドをサブプロセスで実行します。

シークレットをアプリケーションまたはスクリプトに渡すarrow-up-right

実行時にスクリプトまたはアプリケーションにシークレットを渡すには、コマンドをop runで囲みます。

例えば、データベースに接続するために資格情報を必要とするNode.js アプリを次に示します。

この例では、DB_USERDB_PASSWORD環境変数をシークレット参照に設定できます。

次に、op runコマンドを使って、シークレットをnode app.jsコマンドに渡します。

環境ファイルと一緒にop runコマンドを使う

環境ファイルでop runコマンドを使うこともできます。これを行うには、環境ファイルでプレーンテキストのシークレットの代わりにシークレット参照を使います

次に、--env-fileフラグを指定してop runコマンドを使います。

マスクなしでシークレットをプリントする

op runで使われるサブプロセスがstdoutにシークレットを出力する場合、そのシークレットはデフォルトでは隠されます。--no-maskingフラグを追加すると値を出力できます。

サンプルの環境変数DB_PASSWORDをシークレット参照にエクスポートするには次のように書きます:

op runprintenvコマンドと一緒に使うと、隠蔽されたシークレットを出力できます:

結果を見る...

--no-maskingフラグをつけるとシークレットそのものを出力します:

結果の例(訳注:マスクがない):

circle-info

次のステップ

テンプレート変数を使用してさまざまな環境のさまざまなシークレット セットを切り替える方法arrow-up-rightなど、op run を使用して環境にシークレットをロードする方法について詳しく学習します。

op injectコマンドで出力するarrow-up-right

op injectarrow-up-rightコマンドを使うと、スクリプトまたはファイル内のシークレット参照を、それらが参照するシークレットに置き換えることができます。

デフォルトでは、op injectstdinからの入力を受け入れ、stdout に出力します。その代わりにファイルから入力を読み込ませるには--in-fileフラグ(または -i)を使い、出力を書き込む場所を指定するには--out-fileフラグ(または -o)を使います。

op injectを使い簡単なコマンドでシークレットを解決するには:

chevron-right結果の例:hashtag

here is my GitHub token: ghp_WzgPAEutsFRZH9uxWYtw

出力をカレントディレクトリーのtoken.txtファイルに書き込むよう指定するには:

設定ファイルと一緒に使う

op injectを使うと、シークレット参照でテンプレート化された設定ファイルを渡して、解決されたシークレットを含めた設定ファイルを出力できます。プレーンテキストのシークレットの代わりにシークレット参照を使う設定ファイルは、Gitに安全にチェックインできます。

コードの例:

circle-info

次のステ

ップ テンプレート変数を使用してさまざまな環境のさまざまなシークレット セットを切り替える方法など、op inject を使用してシークレットを構成ファイルに読み込むarrow-up-right方法について詳しく学習します。

より深く学習するにはarrow-up-right

Last updated