Pulumi ESCでのシークレット管理
このチュートリアルでは、Pulumi ESC(環境、シークレット、構成)を使用するためのステップバイステップの手順を受け取ります。これは、安全で堅牢なシークレット管理ソリューションです。
チュートリアルでは、セキュリティのベストプラクティスに従いながら、Wranglerを使用して開発する方法を説明します。
具体的には、CloudflareアカウントにログインするためのCLOUDFLARE_API_TOKENを管理し、ESCに保存されたシークレットをWorkersに渡し、プログラムで.dev.varsファイルをロードする方法を学びます。
以下を確認してください:
- Cloudflareアカウント。 Cloudflareアカウントにサインアップ ↗。
- Pulumi Cloudアカウント。 Pulumi Cloudにサインアップ ↗。
- Pulumi ESC CLI ↗がインストールされていること。
- Wranglerプロジェクト。作成するには、新しいWorkerプロジェクトを作成する手順に従ってください。
Pulumi ESC環境 ↗は、アプリケーションとインフラストラクチャのための構成とシークレットを含むYAMLファイルです。これらは、シェルコマンドを含むいくつかの方法でアクセスできます。すべてのESC環境は、あなたのPulumi Cloudアカウントに存在します。
Pulumi ESC CLIを使用して、Pulumi Cloudアカウントにログインします。
esc loginLogged in to pulumi.com as ....ESC_ENV=my-dev-environmentesc env init $ESC_ENVEnvironment created.Pulumi ESC環境が作成されたので、さまざまな方法で利用できます。たとえば、シェルに資格情報を事前に定義することなく、Cloudflareアカウントにログインできます。
CLOUDFLARE_API_TOKENを外部で安全に保存することで、アクセスを制御し、トークンの値をローテーションできます。非対話モードでwranglerを実行する必要があります。これには以下が必要です:
プレースホルダー123abcを対応する値に置き換えます:
esc env set $ESC_ENV environmentVariables.CLOUDFLARE_ACCOUNT_ID 123abcesc env set $ESC_ENV environmentVariables.CLOUDFLARE_API_TOKEN 123abc --secret現在、Cloudflareアカウントにログインしていないことを確認してください。
npx wrangler logoutNot logged in, exiting...ESCに保存されたCloudflareの資格情報をWranglerに渡します。
esc run ${ESC_ENV} npx wrangler whoamiGetting User settings...👋 You are logged in with an API Token.esc runコマンドを使用すると、環境が開かれ、指定された環境変数が一時的な環境に設定されます。その後、wranglerコマンドのコンテキストでこれらの変数が使用されます。これは、CI/CD環境でwranglerコマンドを実行する際に特に便利ですが、パイプラインに資格情報を直接保存することを避けたい場合に役立ちます。
Pulumi ESCはシークレットを集中管理し、Wranglerを使用してそれらをWorkersや他のCloudflareリソースに渡すことができます。この目的のために、wrangler secret putコマンドを使用します。
esc env set ${ESC_ENV} environementVariables.TOP_SECRET "aliens are real" --secretesc run -i ${ESC_ENV} -- sh -c 'echo "$TOP_SECRET" | npx wrangler secret put TOP_SECRET'外部のシークレット管理ソリューションを使用することで、一般的に使用されるWorkerシークレットを、関連するWorkersによってアクセスされる単一の共有環境に保存できます。escを使用してシェルコマンドを利用し、スクリプトを組み込んでデプロイメントパイプラインやmakeコマンドに統合できます。CLIで利用可能なさまざまなコマンドについては、esc [command] --helpを使用してください。
このステップでは、プログラムで.dev.varsファイルをロードするための環境を設定します。
すべての.dev.varsシークレットを保存するための専用のESC環境を使用すると、dotenvエクスポートフラグを使用できます。
E=my-devvarsesc env init $EEnvironment created.esc env set $E environmentVariables.TOP_SECRET "the moon is made of cheese" --secretesc env open ${E} --format dotenv > .dev.vars.dev.varsファイルにはシークレットが含まれることが多いため、ソース管理にコミットしないようにしてください。これらのシークレットを外部に保持することで、新しい開発環境にロードする際の損失を防ぐことができます。
Pulumi ESC環境を設定して、Wranglerコマンドのためのシークレットをロードし、Wranglerでの開発中のセキュリティを強化しました。外部化されたシークレットは、Workers全体で再利用可能です。 Pulumi ESCの機能と統合について詳しく学ぶ ↗か、PulumiでWorkerをデプロイするチュートリアルに従ってください。