1Password CLIでシークレット参照を使う
1Passwordマニュアル|1Password CLIを使って、シークレット参照で安全に情報を環境へ読み込む方法を詳しく解説します。
Last updated
1Passwordマニュアル|1Password CLIを使って、シークレット参照で安全に情報を環境へ読み込む方法を詳しく解説します。
Last updated
1Password CLIを使うと、を使用して、プレーンテキスト(平文)でシークレットを公開することなく、1Passwordに保存されている情報を環境変数、構成ファイル、スクリプトに安全に読み込むことができます。
シークレット参照のURIには、1Passwordアカウントでシークレットが保存されるvault、アイテム、セクション、フィールドの名前が含まれます。
シークレット参照を実行時に参照するシークレットに置き換えるには、、、またはコマンドを使います。
TIP
に従って、を使うことをお勧めします。 各サービスアカウントは、1Password CLIを特定のvaultに制限することをサポートしているので、許可されたターミナルセッションのプロセスが、特定の目的に必要なアイテムにのみアクセスできるようにします。
1Password CLIでシークレット参照を使って安全にシークレットをロードするには、以下のことが必要です:
①。
②。
③参照したいシークレットを1Passwordアカウントに保存する。
ステップ1:シークレット参照を取得する
シークレット参照を取得するにはいくつかのやり方があります。
: アプリからシークレット参照を入手してください。
:コードを編集する際に、1Passwordからシークレット参照を挿入してください。
:op item get
コマンドを使うと、1つまたは複数のフィールドのシークレット参照を取得できます。
:手作業でシークレット参照を書くこともできます。
シークレット参照を作成したら、それをコード中の平文のシークレットの代わりに使ってください。
以下の例では、GitHubの環境ファイルに、平文のトークンではなく、1Password内のGitHub Personal Access Tokenが保存されている場所を指すシークレット参照を指定しています。
シークレット参照をランタイムに実際のシークレットで置き換えるには3つの方法があります。
シークレットをstdout
ではなくファイルに書き込むには、新しいファイルへのパスとともに--out-file
フラグ(または -o
)を含めます。例えば、GitHub personal access tokenを含むファイルtoken.txt
を作成するには、次のようにします。
この方法でフィールドの次の属性を照会できます: type
、value
、title
、id
、purpose
、otp
さらに照会できる、ファイル添付ファイルの属性は次のとおりです: content
, size
, id
, name
, type
.
例えば、 GitHubアイテムのワンタイムパスワードフィールドからワンタイムパスワードを取得するには、次のようにします。
OpenSSH形式でSSHキーのプライベートキーを取得するには、SSHキーのprivate keyフィールドのシークレット参照に、値openssh を持つssh-formatクエリーパラメーターを含めます。
op run
コマンドで出力するop run
は、環境変数をスキャンしてシークレット参照を探し、1Passwordから対応する値をロードし、サブプロセスの実行中は環境変数としてシークレットを使用できるようにして、指定されたコマンドをサブプロセスで実行します。
実行時にスクリプトまたはアプリケーションにシークレットを渡すには、コマンドをop runで囲みます。
例えば、データベースに接続するために資格情報を必要とするNode.js アプリを次に示します。
この例では、DB_USER
とDB_PASSWORD
環境変数をシークレット参照に設定できます。
次に、op run
コマンドを使って、シークレットをnode app.js
コマンドに渡します。
環境ファイルと一緒にop runコマンドを使う
環境ファイルでop run
コマンドを使うこともできます。これを行うには、環境ファイルでプレーンテキストのシークレットの代わりにシークレット参照を使います
次に、--env-file
フラグを指定してop run
コマンドを使います。
マスクなしでシークレットをプリントする
op run
で使われるサブプロセスがstdout
にシークレットを出力する場合、そのシークレットはデフォルトでは隠されます。--no-masking
フラグを追加すると値を出力できます。
サンプルの環境変数DB_PASSWORD
をシークレット参照にエクスポートするには次のように書きます:
op run
をprintenv
コマンドと一緒に使うと、隠蔽されたシークレットを出力できます:
結果を見る...
--no-masking
フラグをつけるとシークレットそのものを出力します:
結果の例(訳注:マスクがない):
デフォルトでは、op inject
は stdin
からの入力を受け入れ、stdout
に出力します。その代わりにファイルから入力を読み込ませるには--in-file
フラグ(または -i
)を使い、出力を書き込む場所を指定するには--out-file
フラグ(または -o
)を使います。
op inject
を使い簡単なコマンドでシークレットを解決するには:
出力をカレントディレクトリーのtoken.txt
ファイルに書き込むよう指定するには:
op injectを使うと、シークレット参照でテンプレート化された設定ファイルを渡して、解決されたシークレットを含めた設定ファイルを出力できます。プレーンテキストのシークレットの代わりにシークレット参照を使う設定ファイルは、Gitに安全にチェックインできます。
コードの例:
コマンドとシークレット参照を使ってシークレットを標準出力(stdout
)に出力できます。
また、シークレット参照を指定したop read
コマンドを使って、こともできます。例えば、docker login
コマンドでDockerユーザー名とパスワードの代わりにシークレット参照を使うには、次のようにします。
Query parameters
を含むシークレット参照を使用して、アイテムに関する詳細情報を取得できます。
アイテムフィールドまたはファイル添付に関する情報を取得するには、取得する属性とともにattribute
(またはattr
)クエリーパラメーターを含めて命令します。
について詳しく学習します。
テンプレート変数を使用してなど、op run を使用して環境にシークレットをロードする方法について詳しく学習します。
コマンドを使うと、スクリプトまたはファイル内のシークレット参照を、それらが参照するシークレットに置き換えることができます。
ップ テンプレート変数を使用してさまざまな環境のさまざまなシークレット セットを切り替える方法など、op inject を使用して方法について詳しく学習します。