INTEGRITY Документация

Секреты

Контекст

Секреты представляют собой тип привязки, который позволяет прикреплять к Worker зашифрованные текстовые значения. Их используют для хранения конфиденциальной информации, такой как ключи API и токены авторизации.

Доступ к секретам в коде Worker можно получить через:

Доступ к вашим секретам через Workers

К секретам можно обращаться из Workers так же, как к любой другой переменные окружения. Например, для DB_CONNECTION_STRING секрет, вы можете обратиться к нему из кода Worker через env параметр:

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" },
		});
	},
};

Также можно импортировать env от cloudflare:workers для доступа к секретам из любого места в коде, в том числе за пределами обработчиков запросов:

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" },
		});
	},
};

Подробнее о доступе к env глобально, см. Импорт env как глобальный.

Локальная разработка с секретами

Разместите секреты для использования при локальной разработке либо в .dev.vars файл или .env файл, в том же каталоге, что и файл конфигурации Wrangler.

Эти файлы должны быть отформатированы с помощью dotenv синтаксис. Например:

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

Чтобы задать разные секреты для каждого окружения Cloudflare, создайте файлы с именами .dev.vars.<environment-name> или .env.<environment-name>.

Когда вы выбираете окружение Cloudflare в локальной разработке, соответствующий файл конкретного окружения загружается раньше общего .dev.vars (или .env) файл.

Секреты в развёрнутых Workers

Проверка секретов перед развёртыванием

Имена секретов, необходимых Worker, можно объявить с помощью secrets свойство конфигурации в конфигурации Wrangler. Если этот параметр задан, wrangler deploy и wrangler versions upload завершится с понятной ошибкой, если для Worker не настроены необходимые секреты.

Добавление секретов в проект

Через Wrangler

Секреты можно добавить через wrangler secret put или wrangler versions secret put команды.

wrangler secret put создаёт новую версию Worker и сразу же развёртывает её.

npx wrangler secret put <KEY>

При использовании постепенные развёртывания, вместо этого используйте wrangler versions secret put команду. Это только создаст новую версию Worker, которую затем можно развернуть с помощью wrangler versions deploy.

npx wrangler versions secret put <KEY>

Через панель управления

Чтобы добавить секрет через панель управления:

  1. На панели управления Cloudflare перейдите к разделу Workers & Pages страницу.

    Перейдите в Workers & Pages ↗
  2. В Обзор, выберите ваш Worker > Настройки.

  3. В разделе Переменные и секреты, выберите Add.

  4. Выберите тип Секрет, введите Имя переменной, и введите его Значение. Этот секрет будет доступен вашему Worker, но его значение будет скрыто в Wrangler и в дашборде.

  5. (Необязательно) Чтобы добавить больше секретов, выберите Добавить переменную.

  6. Выберите Развернуть чтобы внести свои изменения.

Загружайте секреты вместе с кодом

Секреты можно загрузить одновременно с кодом Worker с помощью --secrets-file флаг на wrangler deploy или wrangler versions upload. Принимает путь к файлу JSON или .env файл, те же форматы, которые принимает wrangler secret bulk. За один массовый запрос можно загрузить до 100 секретов для одной версии.

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

Секреты, не включённые в файл, сохраняются из предыдущей версии. Это удобно в CI/CD-конвейерах, где нужно развернуть код и обновить секреты за одну операцию.

Удалить секреты из вашего проекта

Через Wrangler

Секреты можно удалить через wrangler secret delete или wrangler versions secret delete команды.

wrangler secret delete создаёт новую версию Worker и сразу же развёртывает её.

npx wrangler secret delete <KEY>

При использовании постепенные развёртывания, вместо этого используйте wrangler versions secret delete команду. Это только создаст новую версию Worker, которую затем можно развернуть с помощью wrangler versions deploy.

npx wrangler versions secret delete <KEY>

Через панель управления

Чтобы удалить секрет из проекта Worker через панель управления:

  1. На панели управления Cloudflare перейдите к разделу Workers & Pages страницу.

    Перейдите в Workers & Pages ↗
  2. В Обзор, выберите ваш Worker > Настройки.

  3. В разделе Переменные и секреты, выберите Изменить.

  4. В Изменить панели, выберите X рядом с секретом, который вы хотите удалить.

  5. Выберите Развернуть чтобы внести свои изменения.

  6. (Необязательно) Вместо использования панели редактирования можно нажать значок удаления рядом с секретом.

Сравнение секретов и переменных окружения

Секреты являются переменные окружения. Отличие в том, что значения секретов не видны ни в Wrangler, ни в панели управления Cloudflare после того, как вы их задали. Это значит, что конфиденциальные данные, включая пароли и API-токены, всегда следует шифровать, чтобы избежать утечек. Для самого Worker разницы между переменной окружения и секретом нет. Значение секрета передаётся так, как оно было задано.