跳转到内容
搜索文档

Workers 集成

最后更新 查看 MarkdownAgent 设置

Cloudflare Secrets Store 是一个安全的、集中式的存储和管理账户级机密的位置。这些机密在所有 Cloudflare 数据中心中进行安全加密并存储。

请阅读以下步骤,以了解如何在 Cloudflare Workers 中使用来自您账户机密存储库的值。

准备工作

1. 在 Secrets Store 中设置账户机密

按照以下步骤创建机密。您在 Cloudflare 账户内必须拥有 Super Administrator(超级管理员)或 Secrets Store Admin(Secrets Store 管理员)角色

使用 Wrangler 命令 secrets-store secret create

要使用以下示例,请将存储库 ID 和机密名称替换为您的实际数据。您可以从仪表板上的 Secrets Store 选项卡 中找到并复制存储库 ID,或使用 wrangler secrets-store store list

请注意,机密名称中不能包含空格。

npx wrangler secrets-store secret create <STORE_ID> --name MY_SECRET_NAME --scopes workers --remote
 Enter a secret value: ***

🔐 Creating secret... (Name: MY_SECRET_NAME, Value: REDACTED, Scopes: workers, Comment: undefined)
 Select an account: My account
 Created secret! (ID: 13bc7498c6374a4e9d13be091c3c65f1)
  1. 在 Cloudflare 仪表板中,前往 Secrets Store 页面。

    Go to Secrets Store ↗
  2. 选择 Create secret(创建机密)

  3. 填写必填字段,选择 Workers 作为 Permission scope(权限范围)。保存后,机密值将不再可供查看。

  4. (可选)选择 **Add additional secret(添加其他机密)**以一次创建多个机密。

  5. 选择 **Save(保存)**进行确认。

您可以从仪表板上的 Secrets Store 选项卡 中找到并复制存储库 ID,或使用 Wrangler 命令。另外,请确保您的机密 name(名称)不包含空格。

请参阅 Secrets Store API 了解完整的 API 文档。

Required API token permissions

At least one of the following token permissions is required:
  • Secrets Store Write
Create a secretbash
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/secrets_store/stores/$STORE_ID/secrets" \
	--request POST \
	--header "X-Auth-Email: $CLOUDFLARE_EMAIL" \
	--header "X-Auth-Key: $CLOUDFLARE_API_KEY" \
	--json '[
		{
				"name": "<MY_SECRET_NAME>",
				"value": "<SECRET_VALUE>",
				"scopes": [
						"workers"
				],
				"comment": ""
		},
		{
				"name": "<MY_SECRET_NAME_2>",
				"value": "<SECRET_VALUE>",
				"scopes": [
						"workers"
				],
				"comment": ""
		}
	]'

请参阅管理账户机密了解更多选项。

2. 将账户机密绑定到您的 Worker

绑定 (Bindings) 允许您的 Worker 与您 Cloudflare 账户上的资源进行交互。

要将账户机密绑定到您的 Worker,您在 Cloudflare 账户内必须拥有以下角色之一

  • Super Administrator(超级管理员)
  • Secrets Store Deployer(Secrets Store 部署员)

通过 Wrangler

  1. 在您的 Wrangler 配置文件中添加 Secrets Store 绑定:
    • binding:绑定的描述性名称。这将在 Workers 应用程序中访问 env 对象上的机密时使用。
    • store_id:创建您的账户机密的对应 Secrets Store ID。
    • secret_name:创建您的账户机密时定义的唯一机密名称。
{
	"main": "./src/index.js",
	"secrets_store_secrets": [
		{
			"binding": "<BINDING_VARIABLE>",
			"store_id": "<STORE_ID>",
			"secret_name": "<MY_SECRET_NAME>"
		}
	]
}
main = "./src/index.js"

[[secrets_store_secrets]]
binding = "<BINDING_VARIABLE>"
store_id = "<STORE_ID>"
secret_name = "<MY_SECRET_NAME>"

通过仪表板

  1. 在 Cloudflare 仪表板中,前往 Workers & Pages

    Go to Workers & Pages ↗
  2. 选择一个 Workers 应用程序。

  3. 前往 Settings(设置)> Bindings(绑定),然后选择 Add(添加)

  4. 在 **Add a resource binding(添加资源绑定)**侧面板上,选择 Secrets Store

  5. 填写必填字段:

    • Variable name(变量名):绑定的名称。这将用于您的 Worker 访问机密(下面的步骤 3)。
    • Secret name(机密名称):从步骤 1 中创建的可用账户机密列表中进行选择。
    • (可选 - 仅限管理员)如果您需要的机密尚不存在,选择 Create secret(创建机密)。这会以与您在 Secrets Store 上创建机密相同的方式添加账户级机密。
  6. 选择 **Deploy(部署)**以部署您的绑定。部署时有两个选项:

    • Deploy(部署): 立即向 100% 的受众部署该绑定。
    • Save version(保存版本): 保存该绑定版本以便在未来部署。

3. 在 env 对象上访问机密

绑定 位于 env 对象上。要访问该机密,您首先需要进行异步调用。

对绑定变量调用 get()

export default {
  async fetch(request, env) {
    // 在 API 请求中安全使用机密的示例
		const APIkey = await env.<BINDING_VARIABLE>.get()

    const response = await fetch("https://api.example.com/data", {
      headers: { "Authorization": `Bearer ${APIKey}` },
    });

    if (!response.ok) {
      return new Response("Failed to fetch data", { status: response.status });
    }

    const data = await response.json();
    return new Response(JSON.stringify(data), {
      headers: { "Content-Type": "application/json" },
    });
  },
};

这篇文档对您有帮助吗?