INTEGRITY Dokumentace

Tajné klíče

Kontext

Secrets jsou typ vazby, která umožňuje připojit k vašemu Workeru šifrované textové hodnoty. Secrets slouží k ukládání citlivých informací, jako jsou klíče API a přihlašovací tokeny.

V kódu Workeru můžete k secrets přistupovat pomocí:

Přistupujte ke svým secrets pomocí Workers

K Secrets lze z Workers přistupovat stejně jako k jakékoli jiné proměnné prostředí. Pokud máte například DB_CONNECTION_STRING secret, můžete k němu přistupovat v kódu svého Workeru prostřednictvím env parametr:

index.js
import postgres from "postgres";

export default {
	async fetch(request, env, ctx) {
		const sql = postgres(env.DB_CONNECTION_STRING);

		const result = await sql`SELECT * FROM products;`;

		return new Response(JSON.stringify(result), {
			headers: { "Content-Type": "application/json" },
		});
	},
};

Můžete také importovat env z cloudflare:workers pro přístup k secrets odkudkoli ve vašem kódu, včetně míst mimo request handlery:

import { env } from "cloudflare:workers";
import postgres from "postgres";

// Initialize the database client at the top level using a secret
const sql = postgres(env.DB_CONNECTION_STRING);

export default {
	async fetch(request) {
		const result = await sql`SELECT * FROM products;`;

		return new Response(JSON.stringify(result), {
			headers: { "Content-Type": "application/json" },
		});
	},
};
import { env } from "cloudflare:workers";
import postgres from "postgres";

// Initialize the database client at the top level using a secret
const sql = postgres(env.DB_CONNECTION_STRING);

export default {
	async fetch(request: Request): Promise<Response> {
		const result = await sql`SELECT * FROM products;`;

		return new Response(JSON.stringify(result), {
			headers: { "Content-Type": "application/json" },
		});
	},
};

Podrobnosti o přístupu k env globálně, viz Import env jako globální.

Lokální vývoj s tajnými klíči

Uložte secrets pro použití při lokálním vývoji buď do .dev.vars soubor nebo .env soubor ve stejném adresáři jako konfigurační soubor Wrangleru.

Tyto soubory by měly být formátovány pomocí dotenv syntax. Například:

.dev.vars / .env
SECRET_KEY="value"
API_TOKEN="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9"

Chcete-li nastavit různé tajné klíče pro každé prostředí Cloudflare, vytvořte soubory s názvem .dev.vars.<environment-name> nebo .env.<environment-name>.

Když v lokálním vývoji vyberete prostředí Cloudflare, načte se nejprve soubor specifický pro dané prostředí, a to před obecným .dev.vars (nebo .env) soubor.

Secrets u nasazených Workers

Ověřte tajné klíče před nasazením

Názvy secrets, které váš Worker vyžaduje, můžete deklarovat pomocí secrets konfigurační vlastnost ve vaší konfiguraci Wrangler. Pokud je definováno, wrangler deploy a wrangler versions upload selže se srozumitelnou chybou, pokud nejsou na Workeru nastaveny všechny požadované tajné klíče.

Přidávání tajných klíčů do projektu

Pomocí nástroje Wrangler

Secrets lze přidat prostřednictvím wrangler secret put nebo wrangler versions secret put příkazy.

wrangler secret put vytvoří novou verzi Workeru a okamžitě ji nasadí.

npx wrangler secret put <KEY>

Při použití postupná nasazení, místo toho použijte wrangler versions secret put příkaz. Tím se pouze vytvoří nová verze Workeru, kterou pak lze nasadit pomocí wrangler versions deploy.

npx wrangler versions secret put <KEY>

Pomocí dashboardu

Chcete-li přidat secret přes dashboard:

  1. V dashboardu Cloudflare přejděte na Workers & Pages stránce.

    Přejděte na Workers & Pages ↗
  2. V Přehled, vyberte svého Workera > Nastavení.

  3. V části Proměnné a tajné klíče, vyberte Přidat.

  4. Vyberte typ Secret, zadejte Název proměnné, a zadejte jeho Hodnota. Tento secret bude ve Workeru k dispozici, ale jeho hodnota zůstane skrytá ve Wrangleru i v dashboardu.

  5. (Optional) To add more secrets, select Přidat proměnnou.

  6. Vyberte Nasadit k implementaci vašich změn.

Nahrávání tajných hodnot spolu s kódem

Secrets můžete nahrát současně s kódem svého Workeru pomocí --secrets-file příznak na wrangler deploy nebo wrangler versions upload. Přijímá cestu k JSON nebo .env soubor, ve stejných formátech, jaké přijímá wrangler secret bulk. V jednom hromadném požadavku můžete pro danou verzi nahrát až 100 secrets.

npx wrangler deploy --secrets-file .env.production
npx wrangler versions upload --secrets-file secrets.json

Secrets, které nejsou zahrnuty v souboru, zůstávají zachovány z předchozí verze. To se hodí v pipeline CI/CD, kde chcete nasadit kód a zároveň aktualizovat secrets v rámci jedné operace.

Odstranit tajemství z vašeho projektu

Pomocí nástroje Wrangler

Secrets lze odstranit prostřednictvím wrangler secret delete nebo wrangler versions secret delete příkazy.

wrangler secret delete vytvoří novou verzi Workeru a okamžitě ji nasadí.

npx wrangler secret delete <KEY>

Při použití postupná nasazení, místo toho použijte wrangler versions secret delete příkaz. Tím se pouze vytvoří nová verze Workeru, kterou pak lze nasadit pomocí wrangler versions deploy.

npx wrangler versions secret delete <KEY>

Pomocí dashboardu

Chcete-li odstranit secret z projektu Worker přes dashboard:

  1. V dashboardu Cloudflare přejděte na Workers & Pages stránce.

    Přejděte na Workers & Pages ↗
  2. V Přehled, vyberte svého Workera > Nastavení.

  3. V části Proměnné a tajné klíče, vyberte Úprava.

  4. V Úprava panelu vyberte X vedle tajného klíče, který chcete odstranit.

  5. Vyberte Nasadit k implementaci vašich změn.

  6. (Optional) Instead of using the edit drawer, you can click the delete icon next to the secret.

Porovnání secretů a proměnných prostředí

Tajné klíče jsou proměnné prostředí. Rozdíl je v tom, že hodnoty secret nejsou po nastavení viditelné ve Wrangler ani v Cloudflare dashboardu. Citlivá data, včetně hesel nebo API tokenů, by proto měla být vždy šifrovaná, aby nedošlo k jejich úniku. Pro váš Worker není mezi proměnnou prostředí a secret žádný rozdíl. Hodnota secret se předává tak, jak byla definována.