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

Разверните Cloudflare One Client на headless-машинах Linux

В этом руководстве описано, как развернуть Cloudflare One Client на устройствах Linux с помощью токена службы и скрипта установки. Этот сценарий развёртывания предназначен для серверов без графического интерфейса (то есть серверов, у которых нет доступа к браузеру для входа через поставщика идентификации), а также для случаев, когда нужно полностью автоматизировать процесс подключения. Поскольку устройства не будут регистрироваться через поставщика идентификации, политики на основе идентификации и журналирование будет недоступно.

Предварительные требования

1. Создайте токен службы

Полностью автоматизированные развертывания используют токен службы для регистрации Cloudflare One Client в организации Zero Trust. Вы можете использовать один и тот же токен для регистрации нескольких устройств или создать уникальный токен для каждого устройства, если для них требуются разные настройки профиля устройства.

Чтобы создать токен службы:

  1. В Панель управления Cloudflare, перейдите в Zero Trust > Контроль доступа > Учетные данные службы > Service Tokens.

  2. Выберите Create Service Token.

  3. Назовите токен службы. Название позволит легко находить в журналах события, связанные с этим токеном, и отзывать его отдельно.

  4. Выберите Service Token Duration. Это устанавливает дату истечения срока действия токена.

  5. Выберите Создать токен. Появятся сгенерированные Client ID и Client Secret для токена службы, а также соответствующие заголовки запроса.

  6. Скопируйте Client Secret.

  1. Сделайте POST запрос к Access Service Tokens конечная точка:

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

    Хотя бы одно из следующих права доступа токена требуется:
    • Access: Service Tokens Write
    Создать токен службы
    curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/access/service_tokens" \
    	--request POST \
    	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
    	--json '{
    		"name": "CI/CD token",
    		"duration": "8760h"
    	}'
  2. Скопируйте client_id и client_secret значения, возвращаемые в ответе.

    Ответ
    "result": {
    	"client_id": "88bf3b6d86161464f6509f7219099e57.access",
    	"client_secret": "bdd31cbc4dec990953e39163fbbb194c93313ca9f0a6e420346af9d326b1d2a5",
    	"created_at": "2025-09-25T22:26:26Z",
    	"expires_at": "2026-09-25T22:26:26Z",
    	"id": "3537a672-e4d8-4d89-aab9-26cb622918a1",
    	"name": "CI/CD token",
    	"updated_at": "2025-09-25T22:26:26Z",
    	"duration": "8760h",
    	"client_secret_version": 1
    }
  1. Добавьте следующее разрешение в свой cloudflare_api_token:

    • Access: Service Tokens Write
  2. Настройте cloudflare_zero_trust_access_service_token ресурс:

    resource "cloudflare_zero_trust_access_service_token" "example_service_token" {
    	account_id = var.cloudflare_account_id
    	name       = "Example service token"
    	duration  = "8760h"
    
    	lifecycle {
    		create_before_destroy = true
    	}
    }
  3. Получите Client ID и Client Secret токена службы:

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

    1. Выведите Client ID и Client Secret в файл состояния Terraform:
      output "example_service_token_client_id" {
      	value     = cloudflare_zero_trust_access_service_token.example_service_token.client_id
      }
      
      output "example_service_token_client_secret" {
      	value     = cloudflare_zero_trust_access_service_token.example_service_token.client_secret
      	sensitive = true
      }
    2. Примените конфигурацию:
      terraform apply
    3. Считайте Client ID и Client Secret:
      terraform output -raw example_service_token_client_id
      terraform output -raw example_service_token_client_secret

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

    	resource "vault_generic_secret" "example_service_token" {
    		path         = "kv/cloudflare/example_service_token"
    
    		data_json = jsonencode({
    			"CLIENT_ID"     = cloudflare_access_service_token.example_service_token.client_id
    			"CLIENT_SECRET" = cloudflare_access_service_token.example_service_token.client_secret
    		})
    	}

2. Настройте разрешения на регистрацию устройств

Права на регистрацию устройств определяют, какие пользователи и устройства могут регистрировать WARP в вашей организации Zero Trust.

Чтобы разрешить регистрацию устройств с помощью токена службы:

  1. В Панель управления Cloudflare, перейдите в Zero Trust > Команда и ресурсы > Устройства. Выберите Управление на вкладке.

  2. В Права на регистрацию устройств, выберите Управление.

  3. В Политики вкладке выберите Создать новую политику. Откроется новая вкладка со страницей создания политики.

  4. Для Действие, выберите Service Auth.

  5. Для Селектор поле у вас есть два варианта: можно либо разрешить все токены службы (Any Access Service Token) или конкретные токены службы (Service Token). Например:

    Rule Action Тип правила Селектор Значение
    Service Auth Включить Service Token <TOKEN-NAME>
  6. Сохраните политику.

  7. Вернитесь на Права на регистрацию устройств и добавьте только что созданную политику в ваши разрешения.

  8. Выберите Save.

3. Создайте скрипт установки

Для автоматизации установки и регистрации WARP можно использовать shell-скрипт. В следующем примере показано, как развернуть Cloudflare One Client на Ubuntu 24.04.

  1. В терминале создайте новый .sh файл в текстовом редакторе. Например:

    vim install_warp.sh
  2. Нажмите i чтобы перейти в режим вставки и добавить следующие строки:

    #!/bin/bash
    set -e
    
    # Download and install the Cloudflare One Client
    function warp() {
    		curl -fsSL https://pkg.cloudflareclient.com/pubkey.gpg | sudo gpg --yes --dearmor --output /usr/share/keyrings/cloudflare-warp-archive-keyring.gpg
    		echo "deb [signed-by=/usr/share/keyrings/cloudflare-warp-archive-keyring.gpg] https://pkg.cloudflareclient.com/ $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/cloudflare-client.list
    		sudo apt-get update --assume-yes
    		sudo apt-get install --assume-yes cloudflare-warp
    }
    
    # Create an MDM file with your Cloudflare One Client deployment parameters
    function mdm() {
    	sudo touch /var/lib/cloudflare-warp/mdm.xml
    	cat > /var/lib/cloudflare-warp/mdm.xml << "EOF"
    <dict>
    		<key>auth_client_id</key>
    		<string>88bf3b6d86161464f6509f7219099e57.access</string>
    		<key>auth_client_secret</key>
    		<string>cfast_EqN8f9vx3sKOSY4mwCMCbZYb02L4OvfAkacLAqTZ63a435a7</string>
    		<key>auto_connect</key>
    		<integer>1</integer>
    		<key>onboarding</key>
    		<false/>
    		<key>organization</key>
    		<string>your-team-name</string>
    		<key>service_mode</key>
    		<string>warp</string>
    </dict>
    EOF
    }
    
    #main program
    warp
    mdm
  3. Если вы используете Debian или RHEL/CentOS, измените warp() функцию так, чтобы она устанавливала правильный Пакет WARP для вашей ОС.

  4. Измените значения в mdm() функция:

    1. Для auth_client_id и auth_client_secret, замените строковые значения на Client ID и Client Secret вашего токен службы.
    2. Для organization, замените your-team-name с вашим Zero Trust название команды.
    3. (Необязательно) Добавьте или измените другие Параметры развертывания Cloudflare One Client согласно вашим настройкам.
  5. Нажмите esc, затем введите :x и нажмите Enter и сохраните и выйдите.

4. Установите WARP

Чтобы установить Cloudflare One Client с помощью примера скрипта:

  1. Сделайте скрипт исполняемым:

    chmod +x install_warp.sh
  2. Запустите скрипт:

    sudo ./install_warp.sh

Теперь Cloudflare One Client развёрнут с параметрами конфигурации, сохранёнными в /var/lib/cloudflare-warp/mdm.xml. Предположим, что auto_connect настроено, Cloudflare One Client автоматически подключится к вашей организации Zero Trust. После подключения устройство появится в разделе Панель управления Cloudflare в разделе Zero Trust > Команда и ресурсы > Устройства с адресом электронной почты non_identity@<team-name>.cloudflareaccess.com.