1Password のシークレットを GitHub Actions にロードする
1Passwordマニュアル|GitHub Actionsと連携し、1Passwordからシークレットを安全にロードする方法を詳しく解説します。CI/CD統合での活用法も紹介。
1Passwordマニュアル|GitHub Actionsと連携し、1Passwordからシークレットを安全にロードする方法を詳しく解説します。CI/CD統合での活用法も紹介。
する、を使用して、1Password から GitHub Actions にシークレットを安全に読み込むことができます。シークレット参照は 1Password と自動的に同期され、コード内のプレーンテキストのシークレットが公開されるリスクがなくなります。
またはload-secrets-actionを使用して認証できます。サービス アカウントで GitHub Action を使う方法の簡単な紹介については、以下のビデオをご覧ください。
INFO
通常のと同様, 1Password は、GitHub Actions ログに表示される機密フィールドを自動的にマスクします。これらの値のいずれかが誤って印刷された場合は、 ***に置き換えられます。
またはいずれかを使用して 1Passwordに認証するアクションを構成できます。
Service account
する前にサービス アカウントを使う場合は、次の操Createを行う必要があります。
1Passwordに
サービス アカウント トークンを用意してください。
Connect
する前にConnect サーバーを使う場合は、次の操Createを行う必要があります。
1Passwordに
インフラストラクチャ内に
Connect サーバーのホスト名と Connect サーバーのトークンを用意してください。
注意
開始手順は、サービス アカウントを使うか Connect サーバーを使うかによって異なります。
Service account
③ワークフローを構成します。 1password/load-secrets-action/configureアクションを使用して、シークレットを取得する予定のサービス アカウントのトークンを指定します。 次の例では、コマンドを使用して、 service-account-token をOP_SERVICE_ACCOUNT_TOKENシークレットにconfigure設定します。
ヒント
configureステップでservice-account-token を設定すると、その値が後続の全てのステップで使用できるようになります。
特定のステップでのみサービス アカウント トークンを使うことで、ステップのアクセスをサービス アカウント トークンに制限できます。
特定のステップでサービス アカウント トークンを使うには、そのステップのenv変数に設定します。
④シークレットをロードします。
次の例では、SECRET環境変数を、app-cicdというタイトルの保管庫にSaveされた hello-worldという項目内のsecretという名前のフィールドの値に設定します。
このアクションにより、参照されたシークレットがSECRET次のステップの環境変数として使用できるようになります。
③ワークフローを構成します。 1password/load-secrets-action/configureアクションを使用して、Connect server environment variableを指定します。 次の例では、configure コマンドを使用して次の操Createを実行します。
connect-host をConnect サーバーのホスト名 ( OP_CONNECT_HOST ) に設定します。
connect-tokenをOP_CONNECT_TOKENシークレットに設定します。
ヒント
構成ステップでconnect-token を設定すると、その値が後続の全てのステップで使用できるようになります。特定のステップでのみサービス アカウント トークンを使うことで、サービス アカウント トークンへのステップ アクセスを制限できます。
特定のステップでサービス アカウント トークンを使うには、envそのステップの変数に設定します。
④シークレットをロードします。
次の例では、SECRET環境変数を、app-cicd という名前の保管庫にSaveされている hello-world という名前の項目内の Secret という名前のフィールドの値に設定します。
このアクションにより、参照されたシークレットがSECRET次のステップの環境変数として使用できるようになります。
次の表に、使用可能なconfigureアクション入力を示します。
アクション入力
環境変数
説明
connect-host
OP_CONNECT_HOST
Connect サーバー、ホスト名、IP アドレス、またはインスタンス URL。
connect-token
OP_CONNECT_TOKEN
Connect サーバー トークン。
service-account-token
OP_SERVICE_ACCOUNT_TOKEN
サービス アカウント トークン。
シークレット参照 URI は、情報がSaveされている保管庫、アイテム、セクション、フィールドの名前を使用して、1Password アカウント内でシークレットがSaveされている場所を指します。
ワークフロー YAML ファイル内のシークレット参照に環境変数を設定すると、アクションによって、参照されたシークレットが次のステップの環境変数として使用できるようになります。
Example
次の例は、app-cicd 保管庫内の aws アイテムの Secret-access-key フィールドを参照する方法を示しています。
アクションを使用してシークレットをロードするには、次の 2 つの方法があります。
Service account
次の例は、サービス アカウントからシークレットを読み込み、pushイベントが発生したときに出力を印刷する方法を示しています。
Simple example
次の例は、サービス アカウントを使用して 1Password からシークレット (SECRET 環境変数として) をロード (および出力) する方法を示しています。シークレットを印刷すると、1Password は自動的にそれを *** に置き換えます。
The following example shows how to use a service account to load the username and token fields from the docker secret in 1Password (as DOCKERHUB_USERNAME and DOCKERHUB_TOKEN), then use them to log into Docker Hub.
次の例は、サービス アカウントを使用して 1Password の Docker シークレットからユーザー名とトークン フィールド (DOCKERHUB_USERNAME および DOCKERHUB_TOKEN として) を読み込み、それらを使用して Docker Hub にログインする方法を示しています。
config.yml
Connect
次の例は、プッシュ イベントの発生時に Connect サーバーからシークレットをロードし、出力を印刷する方法を示しています。
Simple example
次の例は、Connect サーバーを使用して 1Password からシークレット (SECRET 環境変数として) をロード (および出力) する方法を示しています。シークレットを印刷すると、1Password は自動的にそれを *** に置き換えます。
Advanced example
次の例は、Connect サーバーを使用して 1Password の Docker シークレットからユーザー名とトークン フィールド (DOCKERHUB_USERNAME および DOCKERHUB_TOKEN として) をロードし、それらを使用して Docker Hub にログインする方法を示しています。
config.yml
「1Password GitHub からシークレットをロード」アクションを使用して、steps.step-id.outputs.secret-name から出力されたロードされたシークレットを使用できます。
Service account
次の例は、サービス アカウントを使用して 1Password シークレットを環境変数としてロードする方法を示しています。
Simple example
次の例は、サービス アカウントを使用して、SECRET という名前の環境変数としてシークレットをロードする方法を示しています。シークレットを印刷すると、1Password は自動的にそれを *** に置き換えます。
Advanced example
次の例は、サービス アカウントを使用して、1Password の Docker シークレットからユーザー名とトークン フィールドを DOCKERHUB_USERNAME および DOCKERHUB_TOKEN という名前の環境変数としてロードし、それらを使用して Docker Hub にログインする方法を示しています。
また、1Password の aws シークレットから access-key-id フィールドと Secret-access-key フィールドを AWS_ACCESS_KEY_ID および AWS_SECRET_ACCESS_KEY という名前の環境変数としてロードし、それらを使用して AWS にデプロイします。
config.yml
Connect
次の例は、Connect サーバーを使用して 1Password からシークレットを環境変数としてロードする方法を示しています。
Simple example
次の例は、Connect サーバーを使用して、SECRET という名前の環境変数としてシークレットをロードする方法を示しています。シークレットを印刷すると、1Password は自動的にそれを *** に置き換えます。
Advanced example
次の例は、Connect サーバーを使用して 1Password の Docker シークレットからユーザー名とトークン フィールドを DOCKERHUB_USERNAME および DOCKERHUB_TOKEN という名前の環境変数としてロードし、それらを使用して Docker Hub にログインする方法を示しています。
また、1Password の aws シークレットから access-key-id フィールドと Secret-access-key フィールドを AWS_ACCESS_KEY_ID および AWS_SECRET_ACCESS_KEY という名前の環境変数としてロードし、それらを使用して AWS にデプロイします。
config.yml
GitHub パイプラインで 1Password CLI を使用して (load-secrets-action を使用せずに) アイテムをCreateしようとすると、コマンドは次のエラーで失敗します。
Failed to create item: invalid JSON
例えば、次の場合はエラーが発生します。
パイプライン環境はパイプ モードです。これにより、パイプ入力を期待する CLI のパイプ検出がトリガーされます。
①Createしたいアイテムのカテゴリのテンプレートを取得します。
$ op item template get --out-file=new-item.json <category>
③アイテムの内容をコマンドにパイプします。
$ cat new-item.json | op item create --vault <vault>
するのみサポートWindows ランナーでは動作しません。
①をワークフローに追加します。。 を参照してください。
②サービス アカウント トークンをワークフローに追加します。 OP_SERVICE_ACCOUNT_TOKENという名前の GitHub リポジトリのシークレットをCreateし、それをサービス アカウント トークンの値に設定します。 ご覧ください方法を学ぶために。
この1password/load-secrets-actionアクションを使用して、 1Password アカウント内のシークレットがSaveされている場所を指す に環境変数を設定します。
① (load-secrets-action) をワークフローに追加します。 を参照してください。
②Connect サーバー トークンをワークフローに追加します。 リポジトリにOP_CONNECT_TOKENという名前のシークレットをCreateし、それを Connect サーバー トークンの値に設定します。 ご覧ください方法を学ぶために。
このアクションを使用して、 1Password アカウント内のシークレットがSaveされている場所を指す1password/load-secrets-actionに環境変数を設定します。
次のセクションでは、ためのと
①
②
ことができます環境変数としてシークレットにアクセスします。
ステップの出力にアクセスするには、ステップのIDを設定する必要があります。。
config.yml
この環境でアイテムをCreateするには、アイテムの詳細を含む
②編集して情報を追加します。