在本教程中,你将获得有关使用 Pulumi ESC(环境、密钥和配置)的分步说明,这是一种安全且强大的密钥管理解决方案。
本教程将引导你了解如何在遵循安全最佳实践的同时使用 Wrangler 进行开发。
具体而言,你将学习如何管理 CLOUDFLARE_API_TOKEN 以登录你的 Cloudflare 账户,将 ESC 中存储的密钥传递给 Workers,以及以编程方式加载 .dev.vars 文件。
确保你拥有:
- 一个 Cloudflare 账户。注册 Cloudflare 账户 ↗。
- 一个 Pulumi Cloud 账户。注册 Pulumi Cloud ↗。
- 已安装 Pulumi ESC CLI ↗。
- 一个 Wrangler 项目。要创建一个,请参照创建新 Worker 项目步骤。
Pulumi ESC Environment ↗(即 Environment)是一个 YAML 文件,包含应用程序和基础设施的配置和密钥。这些可以通过多种方式访问,包括 shell 命令。所有 ESC Environment 都位于你的 Pulumi Cloud 账户中。
使用 Pulumi ESC CLI 登录你的 Pulumi Cloud 账户。
esc loginLogged in to pulumi.com as ....ESC_ENV=wrangler/my-dev-environment
esc env init $ESC_ENVEnvironment created.创建 Pulumi ESC Environment 后,可以通过多种方式使用它。例如,无需在 shell 中预先定义凭据即可登录你的 Cloudflare 账户。
通过在外部安全存储 CLOUDFLARE_API_TOKEN,你可以控制访问权限并轮换令牌值。我们将以非交互模式运行 wrangler,这需要:
将占位符 123abc 替换为你相应的值:
esc env set $ESC_ENV environmentVariables.CLOUDFLARE_ACCOUNT_ID 123abc
esc 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 命令时,它会打开 Environment 并将指定的 Environment 变量设置到临时环境中。之后,在 wrangler 命令的上下文中使用这些变量。这在 CI/CD 环境中运行 wrangler 命令但又不想将凭据直接存储在管道中时特别有用。
Pulumi ESC 集中管理密钥,Wrangler 可用于将密钥传递给 Workers 和其他 Cloudflare 资源。你将使用 wrangler secret put 命令来实现此目的。
esc env set ${ESC_ENV} environmentVariables.TOP_SECRET "aliens are real" --secretesc run -i ${ESC_ENV} -- sh -c 'echo "$TOP_SECRET" | npx wrangler secret put TOP_SECRET'通过使用外部密钥管理解决方案,常用的 Worker 密钥可以存储在由相关 Workers 访问的单个共享 Environment 中。你可以将 shell 命令与 esc 结合使用,将脚本集成到部署管道或 make 命令中。使用 esc [command] --help 获取有关 CLI 中各种可用命令的更多信息。
在此步骤中,你将配置一个 Environment 以编程方式加载 .dev.vars 文件。
通过专用 ESC Environment 存储所有 .dev.vars 密钥,你可以使用 dotenv 导出标志。
E=wrangler/my-devvars
esc 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 Environments 为 Wrangler 命令加载密钥,从而在使用 Wrangler 开发时提高了安全性。外部化的密钥现在可以跨 Workers 重复使用。了解有关 Pulumi ESC 功能和集成的更多信息 ↗,或参照使用 Pulumi 部署 Worker 教程。