Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

ヘッドレス Linux マシンに Cloudflare One Client を導入する

最終更新 Markdown で表示Agent セットアップ

このチュートリアルでは、サービストークンとインストールスクリプトを使い、Linux デバイスへ Cloudflare One Client を導入します。この導入フローは、IdP ログイン用のブラウザーがないヘッドレスサーバー向けです。オンボーディングを完全に自動化したい場合にも使えます。デバイスは IdP 経由で登録しないため、ID ベースのポリシー とログは使えません。

前提条件

1. サービストークンを作成する

完全自動の導入では、サービストークンで Cloudflare One Client を Zero Trust 組織に登録します。複数デバイスで同じトークンを使えます。デバイスごとに異なる デバイスプロファイル設定 が必要な場合は、デバイスごとにトークンを発行します。

サービストークンを作成します。

  1. Cloudflare ダッシュボードZero Trust > Access controls > Service credentials > Service Tokens を開きます。

  2. Create Service Token を選択します。

  3. サービストークンに名前を付けます。名前があると、ログ内の関連イベントを識別しやすく、トークンを個別に取り消せます。

  4. Service Token Duration を選びます。トークンの有効期限が決まります。

  5. Generate token を選択します。サービストークンの Client ID と Client Secret、およびそれぞれのリクエストヘッダーが表示されます。

  6. Client Secret をコピーします。

  1. Access Service Tokens エンドポイントに POST リクエストを送ります。

    Required API token permissions

    At least one of the following token permissions is required:
    • Access: Service Tokens Write
    Create a service tokenbash
    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_idclient_secret の値をコピーします。

    レスポンスjson
    "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 の state ファイルに出力します。
      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. デバイス登録の権限を設定する

デバイス登録の権限は、Zero Trust 組織へ WARP を登録できるユーザーとデバイスを決めます。

サービストークンでデバイスを登録できるようにします。

  1. Cloudflare ダッシュボード で、Zero Trust > Team & Resources > Devices を開きます。Management タブを選びます。

  2. Device enrollment permissionsManage を選びます。

  3. Policies タブで Create new policy を選びます。ポリシー作成ページが新しいタブで開きます。

  4. ActionService Auth を選びます。

  5. Selector フィールドでは、すべてのサービストークンを許可する(Any Access Service Token)か、特定のサービストークン(Service Token)かを選べます。例:

    Rule Action Rule type Selector Value
    Service Auth Include Service Token <TOKEN-NAME>
  6. ポリシーを保存します。

  7. Device enrollment permissions に戻り、作成したポリシーを権限に追加します。

  8. Save を選びます。

Terraform でサービストークン登録を設定する場合は、サービストークンの確認 を参照してください。

3. インストールスクリプトを作成する

シェルスクリプトで、WARP のインストールと登録を自動化できます。次の例は、Ubuntu 24.04 へ Cloudflare One Client を導入する方法です。

  1. ターミナルで、テキストエディターを使い新しい .sh ファイルを作成します。例:

    umask 077
    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 install -m 600 /dev/null /var/lib/cloudflare-warp/mdm.xml
            sudo tee /var/lib/cloudflare-warp/mdm.xml > /dev/null << "EOF"
    <dict>
            <key>auth_client_id</key>
            <string>YOUR_CLIENT_ID</string>
            <key>auth_client_secret</key>
            <string>YOUR_CLIENT_SECRET</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
    sudo systemctl restart warp-svc
  3. Debian または RHEL / CentOS を使う場合は、OS に合う WARP パッケージ をインストールするように warp() 関数を変更します。

  4. mdm() 関数の値を変更します。

    1. auth_client_idauth_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 700 install_warp.sh
  2. スクリプトを実行します。

    sudo ./install_warp.sh
  3. サービストークンのシークレットが含まれるため、スクリプトを削除します。

    rm install_warp.sh

Cloudflare One Client は、root のみが読める /var/lib/cloudflare-warp/mdm.xml に保存した設定パラメーターで導入されます。auto_connect を設定している場合、Cloudflare One Client は Zero Trust 組織へ自動接続します。

登録と接続を確認します。

sudo warp-cli --accept-tos registration show
sudo warp-cli --accept-tos status

登録が成功すると、Zero Trust > Team & Resources > Devices に、メール non_identity@<team-name>.cloudflareaccess.com のデバイスが作成されます。statusConnected と報告することを確認します。コマンド完了や HTTP リダイレクトだけでは、登録や接続の証明にはなりません。

登録とステータスのコマンドは、登録と Cloudflare への接続を確認します。エンドツーエンドのトラフィックを確認するには、使いたいプロトコルで、対象に含まれる宛先へ接続します。Cloudflare Mesh では、接続の確認 に従ってください。

クライアントが Registration Missing due to: Does not exist in API と報告する場合、または warp-svc ログに HTTP 400 の登録応答がある場合は、登録に失敗しています。サービストークンポリシーが Service Auth アクションを使っていること、ポリシーがデバイス登録権限に付いていること、MDM のチーム名とトークン値が正しいことを確認します。設定を修正または確認したあと、サービスを再起動し、確認コマンドを両方もう一度実行します。

sudo systemctl restart warp-svc
sudo warp-cli --accept-tos registration show
sudo warp-cli --accept-tos status

役に立ちましたか?