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

Интеграция с Workers

Cloudflare Secrets Store это безопасное централизованное хранилище, где создаются и управляются секреты уровня аккаунта. Секреты надёжно шифруются и хранятся во всех дата-центрах Cloudflare.

Ознакомьтесь с шагами ниже, чтобы узнать, как использовать значения из хранилища секретов вашего аккаунта с Cloudflare Workers.

Перед началом работы

1. Настройте секреты аккаунта в Secrets Store

Чтобы создать секреты, выполните шаги ниже. Для этого необходимо иметь Роль Super Administrator или Secrets Store Admin в вашем аккаунте Cloudflare.

Используйте команда Wrangler secrets-store secret create.

Чтобы использовать этот пример, замените ID хранилища и имя секрета своими фактическими данными. Найти и скопировать ID хранилища можно на вкладка Secrets Store ↗ в панели управления или использовать 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 страницу.

    Перейдите в Secrets Store ↗
  2. Выберите Create secret.

  3. Заполните обязательные поля, выбрав Workers в качестве Область действия разрешения. После сохранения секрета его значение больше нельзя будет просмотреть.

  4. (Необязательно) Выберите Добавление дополнительного секрета чтобы создать более одного секрета за раз.

  5. Выберите Save для подтверждения.

Найти и скопировать ID хранилища можно на вкладка Secrets Store ↗ в панели управления или использовать команда Wrangler. Также убедитесь, что ваш секрет name не содержит пробелов.

См. Secrets Store API с полной документацией по API.

Необходимые разрешения API-токена

Хотя бы одно из следующих права доступа токена требуется:
  • 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": ""
		}
	]'

См. управлять секретами аккаунта для дополнительных параметров.

2. Привяжите секрет аккаунта к вашему Worker

Bindings позволяют вашему Worker взаимодействовать с ресурсами в вашем аккаунте Cloudflare.

Чтобы привязать секрет аккаунта к Worker, необходимо иметь одну из следующих ролей в вашем аккаунте Cloudflare:

Через Wrangler

  1. Добавьте привязку Secrets Store к вашему конфигурационный файл Wrangler:
    • binding: понятное имя для вашей привязки. Оно будет использоваться в приложении Workers, когда доступа к секрету на env объект.
    • store_id: соответствующий ID Secrets Store, где был создан секрет вашего аккаунта.
    • 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.

    Перейдите в Workers & Pages ↗
  2. Выберите приложение Workers.

  3. Перейдите в Настройки > Bindings и выберите Add.

  4. На Добавление привязки ресурса на боковой панели выберите Secrets Store.

  5. Заполните обязательные поля:

    • Имя переменной: имя привязки. Оно будет использоваться вашим Worker для доступа к секрету (шаг 3 ниже).
    • Имя секрета: выберите из списка доступных секретов аккаунта, созданных в шаг 1.
    • (Необязательно, только для администраторов) Если нужный секрет ещё не существует, выберите Create secret. Это добавит секрет уровня аккаунта так же, как если бы вы создали его в Secrets Store.
  6. Выберите Развернуть чтобы развернуть привязку. При развёртывании доступны два варианта:

    • Развёртывание: Сразу развернуть привязку для 100% аудитории.
    • Сохранение версии: Сохранить версию привязки, которую можно развернуть позже.

3. Обратитесь к секрету на env объект

Bindings находятся на env объект. Для доступа к секрету сначала нужно выполнить асинхронный вызов.

Вызовите get() для переменной привязки

export default {
  async fetch(request, env) {
    // Example of using the secret safely in an API request
		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" },
    });
  },
};