← Cloudflare One / cloudflare-one / networks / connectors / cloudflare-tunnel / configure-tunnels
Разрешения туннеля
Для запуска туннеля с удалённым управлением требуется только токен туннеля. Любой, у кого есть доступ к этому токену, сможет запустить туннель.
Получение токена туннеля
Чтобы получить токен для туннеля с удалённым управлением:
-
В панели управления Cloudflare перейдите в Сеть > Tunnels.
Перейдите в Tunnels ↗ -
Выберите туннель, чтобы открыть страницу сведений о нем.
-
На Обзор вкладке выберите Добавьте реплику и отобразите команду установки. Скопируйте команду в текстовый редактор (не запускайте эту команду). Токеном является
eyJ...строка.
Сделайте GET запрос к Токен Cloudflare Tunnel конечная точка:
Необходимые разрешения API-токена
Хотя бы одно из следующих права доступа токена требуется:Cloudflare One Connectors WriteCloudflare One Connector: cloudflared WriteCloudflare Tunnel Write
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
- Выведите токен туннеля в файл состояния Terraform:
output "tunnel_token" { value = data.cloudflare_zero_trust_tunnel_cloudflared_token.tunnel_token.token sensitive = true } - Примените конфигурацию:
terraform apply - Считайте токен туннеля:
terraform output -raw tunnel_tokeneyJhIj...
Как вариант, передайте 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 реплики. Чтобы обеспечить доступность сервиса, рекомендуется выполнять ротацию токенов вне рабочих часов или в окно технического обслуживания.
Чтобы ротировать токен туннеля:
-
Обновите токен в Cloudflare:
-
В панели управления Cloudflare перейдите в Сеть > Tunnels.
Перейдите в Tunnels ↗ -
Выберите туннель, чтобы открыть страницу сведений о нем.
-
На Обзор вкладке выберите Токен обновления.
-
Скопируйте
cloudflaredкоманду установки для вашей операционной системы. Эта команда содержит новый токен.
-
Создайте случайную строку base64 (минимум 32 байта) для использования в качестве секрета туннеля:
openssl rand -base64 32AQIDBAUGBwgBAgMEBQYHCAECAwQFBgcIAQIDBAUGBwg= -
Сделайте
PATCHзапрос к Cloudflare Tunnel конечная точка:
Хотя бы одно из следующих права доступа токена требуется:Необходимые разрешения API-токена
Cloudflare One Connectors WriteCloudflare One Connector: cloudflared WriteCloudflare Tunnel Write
Обновите Cloudflare Tunnelcurl "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..." } } -
Скопируйте
tokenзначение, показанное в выводе.
После обновления токена
cloudflaredбольше не может устанавливать новые подключения к Cloudflare с использованием старого токена. Однако существующие коннекторы останутся активными, и туннель продолжит обслуживать трафик. -
-
На половине ваших
cloudflaredреплик, переустановитеcloudflaredслужбу с новым токеном. Например, на хосте с Linux:sudo cloudflared service uninstall sudo cloudflared service install <NEW_TOKEN> -
Убедитесь, что служба запустилась корректно:
sudo systemctl status cloudflaredПока эти реплики подключаются к Cloudflare с новым токеном, трафик автоматически маршрутизируется через остальные реплики.
-
Подождите 10 минут, чтобы трафик начал проходить через новые коннекторы.
-
Повторите шаги 2, 3 и 4 для второй половины реплик.
Токен туннеля полностью обновлён. Старый токен больше не используется.
Ротируйте скомпрометированный токен
Если токен туннеля скомпрометирован, рекомендуется выполнить следующие действия:
-
Обновите токен с помощью панели управления или API. См. шаг 1 Ротируйте токен без прерывания обслуживания.
-
Удалите все подключения между
cloudflaredи Cloudflare:
Хотя бы одно из следующих права доступа токена требуется:Необходимые разрешения API-токена
Cloudflare One Connectors WriteCloudflare One Connector: cloudflared WriteCloudflare Tunnel Write
Очистить подключения Cloudflare Tunnelcurl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/cfd_tunnel/$TUNNEL_ID/connections" \ --request DELETE \ --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"Это устранит все несанкционированные подключения и не позволит пользователям подключаться к вашей сети.
-
На каждом
cloudflaredреплики, обновитеcloudflaredчтобы использовать новый токен. Например, на хосте Linux:sudo cloudflared service uninstall sudo cloudflared service install <NEW_TOKEN> -
Убедитесь, что служба запустилась корректно:
sudo systemctl status cloudflared
Токен туннеля полностью обновлён. Старый токен больше не используется.
Роли на уровне аккаунта
Минимальные разрешения, необходимые для создания, удаления и настройки туннелей в аккаунте:
Дополнительные разрешения, необходимые для Направьте трафик к общедоступному имени хоста и чтобы иметь возможность выполнить cloudflared login:
Разрешения на уровне ресурса
Вы также можете ограничить область действия разрешений отдельными Cloudflare Tunnel экземпляры вместо предоставления доступа на уровне всего аккаунта. См. Подробные разрешения для туннелей и узлов Mesh.