← Cloudflare Workers / workers / configuration
Секреты
Контекст
Секреты представляют собой тип привязки, который позволяет прикреплять к Worker зашифрованные текстовые значения. Их используют для хранения конфиденциальной информации, такой как ключи API и токены авторизации.
Доступ к секретам в коде Worker можно получить через:
-
envпараметр передаётся в Workerfetchобработчик события. - Импорт
envотcloudflare:workersдля доступа к секретам из любого места в коде. process.envв Workers, у которых есть Совместимость с Node.js включено.
Доступ к вашим секретам через Workers
К секретам можно обращаться из Workers так же, как к любой другой переменные окружения. Например, для DB_CONNECTION_STRING секрет, вы можете обратиться к нему из кода Worker через env параметр:
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 ↗ синтаксис. Например:
SECRET_KEY="value"
API_TOKEN="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9"Чтобы задать разные секреты для каждого окружения Cloudflare, создайте файлы с именами .dev.vars.<environment-name> или .env.<environment-name>.
Когда вы выбираете окружение Cloudflare в локальной разработке, соответствующий файл конкретного окружения загружается раньше общего .dev.vars (или .env) файл.
- При использовании
.dev.vars.<environment-name>файлов все секреты должны быть определены отдельно для каждого окружения. Если.dev.vars.<environment-name>существует, то будет загружен только он;.dev.varsфайл не будет загружен. - В противоположность этому все соответствующие
.envфайлов, и их значения объединяются. Для каждой переменной используется значение из наиболее специфичного файла в следующем порядке приоритета:.env.<environment-name>.local(наиболее специфичный).env.local.env.<environment-name>.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>Через панель управления
Чтобы добавить секрет через панель управления:
-
На панели управления Cloudflare перейдите к разделу Workers & Pages страницу.
Перейдите в Workers & Pages ↗ -
В Обзор, выберите ваш Worker > Настройки.
-
В разделе Переменные и секреты, выберите Add.
-
Выберите тип Секрет, введите Имя переменной, и введите его Значение. Этот секрет будет доступен вашему Worker, но его значение будет скрыто в Wrangler и в дашборде.
-
(Необязательно) Чтобы добавить больше секретов, выберите Добавить переменную.
-
Выберите Развернуть чтобы внести свои изменения.
Загружайте секреты вместе с кодом
Секреты можно загрузить одновременно с кодом Worker с помощью --secrets-file флаг на wrangler deploy или wrangler versions upload. Принимает путь к файлу JSON или .env файл, те же форматы, которые принимает wrangler secret bulk. За один массовый запрос можно загрузить до 100 секретов для одной версии.
npx wrangler deploy --secrets-file .env.productionnpx 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 через панель управления:
-
На панели управления Cloudflare перейдите к разделу Workers & Pages страницу.
Перейдите в Workers & Pages ↗ -
В Обзор, выберите ваш Worker > Настройки.
-
В разделе Переменные и секреты, выберите Изменить.
-
В Изменить панели, выберите X рядом с секретом, который вы хотите удалить.
-
Выберите Развернуть чтобы внести свои изменения.
-
(Необязательно) Вместо использования панели редактирования можно нажать значок удаления рядом с секретом.
Сравнение секретов и переменных окружения
Секреты являются переменные окружения. Отличие в том, что значения секретов не видны ни в Wrangler, ни в панели управления Cloudflare после того, как вы их задали. Это значит, что конфиденциальные данные, включая пароли и API-токены, всегда следует шифровать, чтобы избежать утечек. Для самого Worker разницы между переменной окружения и секретом нет. Значение секрета передаётся так, как оно было задано.
Дополнительные материалы
- Команды Wrangler для секретов - Ознакомьтесь с командами Wrangler для создания, удаления и просмотра списка секретов.
secretsсвойство конфигурации - Указывайте обязательные имена секретов в конфигурации Wrangler. Используется для проверки при локальной разработке и деплое, а также как эталонный источник для генерации типов.- Cloudflare Secrets Store - Шифруйте и храните конфиденциальные данные в виде секретов, которые можно безопасно повторно использовать в рамках вашего аккаунта.