コンテンツにスキップ

Pulumi ESCでのシークレット管理

Last reviewed: 20 days ago

このチュートリアルでは、Pulumi ESC(環境、シークレット、構成)を使用するためのステップバイステップの手順を受け取ります。これは、安全で堅牢なシークレット管理ソリューションです。

チュートリアルでは、セキュリティのベストプラクティスに従いながら、Wranglerを使用して開発する方法を説明します。

具体的には、CloudflareアカウントにログインするためのCLOUDFLARE_API_TOKENを管理し、ESCに保存されたシークレットをWorkersに渡し、プログラムで.dev.varsファイルをロードする方法を学びます。

始める前に

以下を確認してください:

新しい環境を設定する

Pulumi ESC環境は、アプリケーションとインフラストラクチャのための構成とシークレットを含むYAMLファイルです。これらは、シェルコマンドを含むいくつかの方法でアクセスできます。すべてのESC環境は、あなたのPulumi Cloudアカウントに存在します。

a. Pulumi Cloudにログインする

Pulumi ESC CLIを使用して、Pulumi Cloudアカウントにログインします。

Terminal window
esc login
Logged in to pulumi.com as ....

b. 新しい環境を作成する

Terminal window
ESC_ENV=my-dev-environment
esc env init $ESC_ENV
Environment created.

Cloudflareにログインする

Pulumi ESC環境が作成されたので、さまざまな方法で利用できます。たとえば、シェルに資格情報を事前に定義することなく、Cloudflareアカウントにログインできます。

a. 資格情報を追加する

CLOUDFLARE_API_TOKENを外部で安全に保存することで、アクセスを制御し、トークンの値をローテーションできます。非対話モードでwranglerを実行する必要があります。これには以下が必要です:

プレースホルダー123abcを対応する値に置き換えます:

Terminal window
esc env set $ESC_ENV environmentVariables.CLOUDFLARE_ACCOUNT_ID 123abc
esc env set $ESC_ENV environmentVariables.CLOUDFLARE_API_TOKEN 123abc --secret

a. ログアウトする

現在、Cloudflareアカウントにログインしていないことを確認してください。

Terminal window
npx wrangler logout
Not logged in, exiting...

a. ログインする

ESCに保存されたCloudflareの資格情報をWranglerに渡します。

Terminal window
esc run ${ESC_ENV} npx wrangler whoami
Getting User settings...
👋 You are logged in with an API Token.

esc runコマンドを使用すると、環境が開かれ、指定された環境変数が一時的な環境に設定されます。その後、wranglerコマンドのコンテキストでこれらの変数が使用されます。これは、CI/CD環境でwranglerコマンドを実行する際に特に便利ですが、パイプラインに資格情報を直接保存することを避けたい場合に役立ちます。

Workerシークレットを追加する

Pulumi ESCはシークレットを集中管理し、Wranglerを使用してそれらをWorkersや他のCloudflareリソースに渡すことができます。この目的のために、wrangler secret putコマンドを使用します。

a. シークレットを追加する

Terminal window
esc env set ${ESC_ENV} environementVariables.TOP_SECRET "aliens are real" --secret

b. シークレットをWorkerに渡す

Terminal window
esc 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ファイルをロードするための環境を設定します。

すべての.dev.varsシークレットを保存するための専用のESC環境を使用すると、dotenvエクスポートフラグを使用できます。

a. 環境を作成する

Terminal window
E=my-devvars
esc env init $E
Environment created.

b. シークレットを追加する

Terminal window
esc env set $E environmentVariables.TOP_SECRET "the moon is made of cheese" --secret

c. .dev.varsファイルを生成する

Terminal window
esc env open ${E} --format dotenv > .dev.vars

.dev.varsファイルにはシークレットが含まれることが多いため、ソース管理にコミットしないようにしてください。これらのシークレットを外部に保持することで、新しい開発環境にロードする際の損失を防ぐことができます。

次のステップ

Pulumi ESC環境を設定して、Wranglerコマンドのためのシークレットをロードし、Wranglerでの開発中のセキュリティを強化しました。外部化されたシークレットは、Workers全体で再利用可能です。 Pulumi ESCの機能と統合について詳しく学ぶか、PulumiでWorkerをデプロイするチュートリアルに従ってください。