Cloudflare Secrets Store 是一个安全的、集中式的存储和管理账户级机密的位置。这些机密在所有 Cloudflare 数据中心中进行安全加密并存储。
请阅读以下步骤,以了解如何在 Cloudflare Workers 中使用来自您账户机密存储库的值。
-
如果使用仪表板,请确保您已经拥有一个 Workers 应用程序。参阅 Workers 快速入门 以获取指导。
-
您还应当在仪表板上的 Secrets Store 选项卡下创建了一个存储库(store)。当具有 Super Administrator(超级管理员)或 Secrets Store Admin(Secrets Store 管理员)角色的用户与之交互时,系统会自动在您的账户中创建第一个存储库。
- 如果您的账户中尚不存在任何存储库,并且您拥有必要的权限,则可以使用 Wrangler 命令
secrets-store store create <name> --remote来创建您的第一个存储库。
- 如果您的账户中尚不存在任何存储库,并且您拥有必要的权限,则可以使用 Wrangler 命令
按照以下步骤创建机密。您在 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)-
在 Cloudflare 仪表板中,前往 Secrets Store 页面。
Go to Secrets Store ↗ -
选择 Create secret(创建机密)。
-
填写必填字段,选择 Workers 作为 Permission scope(权限范围)。保存后,机密值将不再可供查看。
-
(可选)选择 **Add additional secret(添加其他机密)**以一次创建多个机密。
-
选择 **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
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": ""
}
]'请参阅管理账户机密了解更多选项。
绑定 (Bindings) 允许您的 Worker 与您 Cloudflare 账户上的资源进行交互。
要将账户机密绑定到您的 Worker,您在 Cloudflare 账户内必须拥有以下角色之一:
- Super Administrator(超级管理员)
- Secrets Store Deployer(Secrets Store 部署员)
- 在您的 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>"-
在 Cloudflare 仪表板中,前往 Workers & Pages。
Go to Workers & Pages ↗ -
选择一个 Workers 应用程序。
-
前往 Settings(设置)> Bindings(绑定),然后选择 Add(添加)。
-
在 **Add a resource binding(添加资源绑定)**侧面板上,选择 Secrets Store。
-
填写必填字段:
- Variable name(变量名):绑定的名称。这将用于您的 Worker 访问机密(下面的步骤 3)。
- Secret name(机密名称):从步骤 1 中创建的可用账户机密列表中进行选择。
- (可选 - 仅限管理员)如果您需要的机密尚不存在,选择 Create secret(创建机密)。这会以与您在 Secrets Store 上创建机密相同的方式添加账户级机密。
-
选择 **Deploy(部署)**以部署您的绑定。部署时有两个选项:
- Deploy(部署): 立即向 100% 的受众部署该绑定。
- Save version(保存版本): 保存该绑定版本以便在未来部署。
绑定 位于 env 对象上。要访问该机密,您首先需要进行异步调用。
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" },
});
},
};