1PasswordでTerraformを安全に認証する(ベータ版)

1Passwordマニュアル|Terraformシェルプラグインを活用し、1Passwordで安全にTerraform CLI認証を行う方法を詳しく解説します。

1PasswordでTerraformを安全に認証する(ベータ版)

Terraformシェルプラグインを使うと、1Passwordを使用してTerraform CLIを安全に認証できます。認証情報をプレーンテキストでSaveするのではなく、指紋、Apple Watch、またはシステム認証を使用して、サポートされているプロバイダーに認証情報を送信します。

Terraform プラグインを構成して、AWS や Databricks など、1Password Shell プラグイン エコシステム内の任意のプロバイダーに対して生体認証で認証することができます。

必要条件

次のシェルがサポートされています:

  • Bash

  • Zsh

  • fish

ステップ 1: デフォルトの資格情報

ヒント

1Password アカウントが複数ある場合は、op signinプラグインを設定する前に、 を実行して使うアカウントを選択してください。プラグインを使うと、1Password CLI は自動的にそのアカウントに切り替わります。

Terraform シェル プラグインを使い始めるには、次のコマンドを実行します。

$ op plugin init terraform

Terraform で使う認証情報の種類を選択するよう求められます。必要な数だけ選択できます。サポートされているプロバイダーの認証情報の種類を選択すると、認証情報を1Password アカウントにインポートするか、認証情報がSaveされている保存済みの 1Password 項目を選択できます。

Terraform で使う全ての資格情報を構成したら、「資格情報の選択を停止」を選択します。

ステップ 1.1: アイテムをインポートまたは選択する

新しいアイテム

1Passwordにまだ認証情報をSaveしていない場合は、Import into 1Passwordを選択します。新しい 1Password アイテムの名前を入力し、Save先の保管庫を選択します。

1Password がローカル開発環境で資格情報を検出すると、自動的にインポートするように求められます。

保存済みのアイテムを

既に 1Passwordに認証情報をSaveしている場合は、Search in 1Passwordを選択します。提案された項目のリストから項目を選択します。必要な項目が見つからない場合は、 Expand searchを選択して、アカウント内の全ての項目を参照します。

ステップ 1.2: デフォルトの資格情報スコープを設定する

資格情報の選択が完了すると、資格情報をいつ使うかを設定するように求められます。

  • 新しいターミナル セッションごとにプロンプ​​トを表示すると、現在のターミナル セッションの期間にのみ資格情報が設定されます。ターミナルを終了すると、デフォルトは削除されます。

  • このディレクトリまたはサブディレクトリにある場合は自動的に使うと、他のディレクトリ固有のデフォルトが設定されていない限り、現在のディレクトリとその全てのサブディレクトリで資格情報がデフォルトになります。ターミナル セッションのデフォルトは、ディレクトリ固有のデフォルトよりも優先されます。

  • システム上のグローバル デフォルトとして使うと、資格情報が全てのターミナル セッションとディレクトリのデフォルトとして設定されます。ディレクトリ固有のデフォルトは、グローバル デフォルトよりも優先されます。

ステップ2: plugins.shファイルをsource化

プラグインを使用できるようにするには、plugins.shファイルをソース化します。例:

$ source ~/.config/op/plugins.sh

フォルダーのファイル パスは、構成ディレクトリopによって異なる場合があります。op plugin initは正しいファイル パスを含むソース コマンドを出力します。

シェル プラグインを初めてインストールする場合は、現在のターミナル セッションを超えてプラグインを永続化するために、RC ファイルまたはシェル プロファイルに source コマンドを追加する必要があります。例:

  • Bash

$ echo "source ~/.config/op/plugins.sh" >> ~/.bashrc && source ~/.bashrc

  • Zsh

$ echo "source ~/.config/op/plugins.sh" >> ~/.zshrc && source ~/.zshrc

  • fish

$ echo "source ~/.config/op/plugins.sh" >> ~/.config/fish/config.fish && source ~/.config/fish/config.fish

ステップ3: CLIを使用する

次回、資格情報を設定したプロバイダーのいずれかで Terraform CLI を使うとき、生体認証またはシステム認証による認証を求めるメッセージが表示されます。

Touch ID を使用して AWS に認証される te​​rraform plan コマンド。

ステップ4: インポートした資格情報をdiskから削除

1Passwordに認証情報をSaveした後、プロバイダーの設定など、ディスク上に以前にSaveした全てのローカルコピーを削除できます。。

次のステップ

1Password Shell プラグインは60 を超えるサードパーティ CLI をサポートしています。サポートされている CLI のリストを表示するには:

$ op plugin list

別のプラグインを選択して開始するには:

$ op plugin init

シームレスなコンテキスト切り替えのためにシェル プラグインを使うには、複数の環境または複数のアカウントでプラグインを構成する方法を学習します。

ヘルプを受ける

設定を検査する

現在の Terraform 構成を検査するには:

$ op plugin inspect terraform

1Password CLI は、Terraform で使うために設定した資格情報とそのデフォルト スコープのリスト、および Terraform CLI 用に設定されたエイリアスのリストを返します。

AWS および ngrok 認証情報がグローバルデフォルトとして設定された Terraform シェルプラグインを検査する 1Password CLI。

資格情報を消去する

Terraform CLI で使用される資格情報をリセットするには:

$ op plugin clear terraform

次の優先順位に従って、一度に 1 つの構成をクリアできます。

  • ①ターミナルセッションのデフォルト

  • ②ディレクトリのデフォルト、現在のディレクトリから$HOME

  • ③グローバルデフォルト

例えば、ディレクトリ内にいて$HOME/projects/awesomeProject、ターミナル セッションのデフォルト、$HOMEおよびのディレクトリのデフォルト$HOME/projects/awesomeProject、およびグローバル デフォルトの資格情報が構成されている場合、全てのデフォルトをクリアするには op plugin clear terraformを 4 回実行する必要があります。

グローバル デフォルト資格情報、ターミナル セッション デフォルト、および現在のディレクトリのデフォルトを同時にクリアするには、op plugin clear terraform --all を実行します。

参照

1Password は、プラグイン コマンドに必要な資格情報を 1Password アカウントから直接プロビジョニングすることで、Terraform プロバイダーに対して認証を行います。

新しいアイテムをインポートするために op pluginを使うのではなく、プロバイダーの資格情報を手動でSaveした場合は、資格情報スキーマで必要なアイテム構造に合わせてアイテムのフィールドの名前を変更するように求められる場合があります。