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

Разрешения туннеля

Для запуска туннеля с удалённым управлением требуется только токен туннеля. Любой, у кого есть доступ к этому токену, сможет запустить туннель.

Получение токена туннеля

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

  1. В панели управления Cloudflare перейдите в Сеть > Tunnels.

    Перейдите в Tunnels ↗
  2. Выберите туннель, чтобы открыть страницу сведений о нем.

  3. На Обзор вкладке выберите Добавьте реплику и отобразите команду установки. Скопируйте команду в текстовый редактор (не запускайте эту команду). Токеном является eyJ... строка.

Сделайте GET запрос к Токен Cloudflare Tunnel конечная точка:

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

Хотя бы одно из следующих права доступа токена требуется:
  • Cloudflare One Connectors Write
  • Cloudflare One Connector: cloudflared Write
  • Cloudflare Tunnel Write
Получение токена Cloudflare Tunnel
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/cfd_tunnel/$TUNNEL_ID/token" \
	--request GET \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"
{
  "success": true,
  "errors": [],
  "messages": [],
  "result": "eyJhIjoiNWFiNGU5Z..."
}

Значение токена можно найти в result.

data "cloudflare_zero_trust_tunnel_cloudflared_token" "tunnel_token" {
	account_id = var.cloudflare_account_id
	tunnel_id = cloudflare_zero_trust_tunnel_cloudflared.example_tunnel.id
}

Если хост-машина не находится под управлением Terraform или вы хотите установить туннель вручную, можно вывести значение токена в CLI.

Пример: вывод в CLI

  1. Выведите токен туннеля в файл состояния Terraform:
    output "tunnel_token" {
    	value       = data.cloudflare_zero_trust_tunnel_cloudflared_token.tunnel_token.token
    	sensitive   = true
    }
  2. Примените конфигурацию:
    terraform apply
  3. Считайте токен туннеля:
    terraform output -raw tunnel_token
    eyJhIj...

Как вариант, передайте data.cloudflare_zero_trust_tunnel_cloudflared_token.tunnel_token.token непосредственно в конфигурацию Terraform вашего хоста или сохранить токен в инструменте управления секретами.

Пример: хранение в HashiCorp Vault

resource "vault_generic_secret" "tunnel_token" {
	path         = "kv/cloudflare/tunnel_token"

	data_json = jsonencode({
		"TUNNEL_TOKEN" = data.cloudflare_zero_trust_tunnel_cloudflared_token.tunnel_token.token
	})
}

Ротируйте токен без прерывания обслуживания

Cloudflare рекомендует регулярно обновлять токен туннеля, чтобы снизить риск его компрометации. Обновить токен можно с минимальными неудобствами для пользователей, если туннель обслуживают как минимум два cloudflared реплики. Чтобы обеспечить доступность сервиса, рекомендуется выполнять ротацию токенов вне рабочих часов или в окно технического обслуживания.

Чтобы ротировать токен туннеля:

  1. Обновите токен в Cloudflare:

    1. В панели управления Cloudflare перейдите в Сеть > Tunnels.

      Перейдите в Tunnels ↗
    2. Выберите туннель, чтобы открыть страницу сведений о нем.

    3. На Обзор вкладке выберите Токен обновления.

    4. Скопируйте cloudflared команду установки для вашей операционной системы. Эта команда содержит новый токен.

    1. Создайте случайную строку base64 (минимум 32 байта) для использования в качестве секрета туннеля:

      openssl rand -base64 32
      AQIDBAUGBwgBAgMEBQYHCAECAwQFBgcIAQIDBAUGBwg=
    2. Сделайте PATCH запрос к Cloudflare Tunnel конечная точка:

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

      Хотя бы одно из следующих права доступа токена требуется:
      • Cloudflare One Connectors Write
      • Cloudflare One Connector: cloudflared Write
      • Cloudflare Tunnel Write
      Обновите Cloudflare Tunnel
      curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/cfd_tunnel/$TUNNEL_ID" \
      	--request PATCH \
      	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
      	--json '{
      		"name": "Example tunnel",
      		"tunnel_secret": "AQIDBAUGBwgBAgMEBQYHCAECAwQFBgcIAQIDBAUGBwg="
      	}'
      {
      	"success": true,
      	"errors": [],
      	"messages": [],
      	"result": {
      		"id": "f70ff985-a4ef-4643-bbbc-4a0ed4fc8415",
      		"account_tag": "699d98642c564d2e855e9661899b7252",
      		"created_at": "2024-12-04T22:03:26.291225Z",
      		"deleted_at": null,
      		"name": "Example tunnel",
      		"connections": [],
      		"conns_active_at": null,
      		"conns_inactive_at": "2024-12-04T22:03:26.291225Z",
      		"tun_type": "cfd_tunnel",
      		"metadata": {},
      		"status": "inactive",
      		"remote_config": true,
      		"token": "eyJhIjoiNWFiNGU5Z..."
      	}
      }
    3. Скопируйте token значение, показанное в выводе.

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

  2. На половине ваших cloudflared реплик, переустановите cloudflared службу с новым токеном. Например, на хосте с Linux:

      sudo cloudflared service uninstall
    sudo cloudflared service install <NEW_TOKEN>
  3. Убедитесь, что служба запустилась корректно:

    sudo systemctl status cloudflared

    Пока эти реплики подключаются к Cloudflare с новым токеном, трафик автоматически маршрутизируется через остальные реплики.

  4. Подождите 10 минут, чтобы трафик начал проходить через новые коннекторы.

  5. Повторите шаги 2, 3 и 4 для второй половины реплик.

Токен туннеля полностью обновлён. Старый токен больше не используется.

Ротируйте скомпрометированный токен

Если токен туннеля скомпрометирован, рекомендуется выполнить следующие действия:

  1. Обновите токен с помощью панели управления или API. См. шаг 1 Ротируйте токен без прерывания обслуживания.

  2. Удалите все подключения между cloudflared и Cloudflare:

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

    Хотя бы одно из следующих права доступа токена требуется:
    • Cloudflare One Connectors Write
    • Cloudflare One Connector: cloudflared Write
    • Cloudflare Tunnel Write
    Очистить подключения Cloudflare Tunnel
    curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/cfd_tunnel/$TUNNEL_ID/connections" \
    	--request DELETE \
    	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"

    Это устранит все несанкционированные подключения и не позволит пользователям подключаться к вашей сети.

  3. На каждом cloudflared реплики, обновите cloudflared чтобы использовать новый токен. Например, на хосте Linux:

      sudo cloudflared service uninstall
    sudo cloudflared service install <NEW_TOKEN>
  4. Убедитесь, что служба запустилась корректно:

    sudo systemctl status cloudflared

Токен туннеля полностью обновлён. Старый токен больше не используется.

Роли на уровне аккаунта

Минимальные разрешения, необходимые для создания, удаления и настройки туннелей в аккаунте:

Дополнительные разрешения, необходимые для Направьте трафик к общедоступному имени хоста и чтобы иметь возможность выполнить cloudflared login:

Разрешения на уровне ресурса

Вы также можете ограничить область действия разрешений отдельными Cloudflare Tunnel экземпляры вместо предоставления доступа на уровне всего аккаунта. См. Подробные разрешения для туннелей и узлов Mesh.