Cloudflare One では、アプリケーションにカスタムのデバイスポスチャチェックを適用できます。Cloudflare One Client のサービス間連携を設定し、サードパーティのエンドポイントプロバイダーでも自作ソリューションでも、任意の外部 API を定期的に呼び出します。呼び出されると、API は Cloudflare からデバイス識別情報を受け取り、0 から 100 の値を返す必要があります。返された値が合格か不合格かを判定するデバイスポスチャチェックを設定できます。たとえば、ポスチャ値が 60 より大きいデバイスのユーザーだけにアクセスを許可できます。
sequenceDiagram
participant Cloudflare One Client
participant Cloudflare Access
participant External API
Cloudflare One Client->>Cloudflare Access: Client ID と Secret
Cloudflare Access->>External API: アプリケーショントークン
Cloudflare One Client->>External API: ユーザーとデバイス ID の JSON
External API-->>Cloudflare One Client: 0〜100 の結果の JSON
カスタムサービスプロバイダー連携は、次の仕様を満たす任意の API サービスで動作します。カスタムデバイスポスチャ連携 API の例は、Cloudflare Workers のサンプルコード ↗ を参照してください。
Cloudflare One Client は、Cloudflare Access 経由で外部 API に認証します。ネットワークの設定ミスなどで Access を迂回するリクエストを拒否できるよう、外部 API は Cloudflare Access が発行する アプリケーショントークンを検証 してください。
Cloudflare は、設定した API エンドポイントに次のパラメーターを渡します。このデータでデバイスを識別し、ポスチャスコアを割り当てられます。一部のデバイスではすべての識別情報が揃わない場合があり、そのフィールドは空になります。1 リクエストあたり最大 1,000 台のデバイスが送られます。
| フィールド | 説明 |
|---|---|
device_id |
Cloudflare One Client が割り当てるデバイス UUID |
email |
Cloudflare One Client の認証に使ったメールアドレス |
serial_number |
デバイスのシリアル番号 |
mac_address |
デバイスの MAC アドレス |
virtual_ipv4 |
デバイスの仮想 IPv4 アドレス |
hostname |
デバイス名 |
リクエスト本文の例:
{
"devices": {
[
{
"device_id": "9ece5fab-7398-488a-a575-e25a9a3dec07",
"email": "[email protected]",
"serial_number": "jdR44P3d",
"mac_address": "74:1d:3e:23:e0:fe",
"virtual_ipv4": "100.96.0.10",
"hostname": "string",
},
{...},
{...}
]
}
}各 Cloudflare device_id に対して、API サービスはポスチャスコアと、任意でサードパーティのデバイス ID を返す必要があります。
| フィールド | 説明 |
|---|---|
s2s_id |
サードパーティのデバイス ID(ない場合は空文字) |
score |
0 から 100 の整数 |
レスポンス本文の例:
{
"result": {
"9ece5fab-7398-488a-a575-e25a9a3dec07": {
"s2s_id": "",
"score": 10
},
"device_id2": {...},
"device_id3": {...}
}
}Cloudflare One Client は、Access Client ID と Access Client Secret を使って外部 API に安全に認証します。Access Client ID と Access Client Secret がまだない場合は、新しいサービストークンを作成 してください。
次に、外部 API を Cloudflare Access の背後に置き、Cloudflare One Client がサービストークンで認証できるようにします。API エンドポイントを Access に追加するには:
-
API エンドポイント用の セルフホストアプリケーションを作成 します。
-
アプリケーションに次の Access ポリシーを追加します。Action は Allow ではなく Service Auth にしてください。
アクション ルールタイプ セレクター 値 Service Auth Include Service Token <TOKEN-NAME>
カスタムのサービス間連携を作成するには:
- Cloudflare ダッシュボード ↗ で Zero Trust > Integrations > Service providers を開きます。
- Add new を選びます。
- Custom service provider を選びます。
- プロバイダーの名前を入力します。この名前は、ダッシュボード全体でこの接続を参照するときに使われます。
- Access client ID と Access client secret に、外部 API の認証に使う Access サービストークンを入力します。
- Rest API URL に、Cloudflare がポスチャ情報を問い合わせる外部 API エンドポイントを入力します(例:
https://api.example.com)。詳細は 外部 API の要件 を参照してください。 - Polling frequency で、Cloudflare One が外部 API に情報を問い合わせる間隔を選びます。
- Test and save を選択します。テストでは、指定した Access 資格情報で API URL に認証できるかを確認します。
次に、デバイスポスチャチェックを設定 し、ポスチャスコアが合格か不合格かを判定します。
- Cloudflare ダッシュボード ↗ で Zero Trust > Reusable components > Posture checks > Service provider checks を開きます。
- Add a check を選びます。
- Custom service provider プロバイダーを選びます。
- ポスチャチェックの名前を任意で入力します。
- デバイスがポスチャチェックに合格するために必要な 属性 を設定します。
- Save を選びます。
- テストするには、Insight > Logs > Posture logs を開き、サービスプロバイダーのポスチャチェックが期待どおりの結果を返していることを確認します。
このポスチャチェックは、デバイスポスチャポリシー で使えます。
| セレクター | 説明 | 値 |
|---|---|---|
| Score | 外部 API が返すポスチャスコア | 0 から 100 |