デバイスポスチャとは
NISTによるゼロトラストの考え方④にあるように、要求する資産の状態によって動的にアクセスが決定されることが望ましいです。
そのためには、デバイスにエージェントを導入することでポリシー評価に使える選択肢が増え、ポリシーをより強固なものにできます。
例えば、Cloudflare WARP エージェント導入によって確認可能な属性のうちの一つに Device UUID があります。
Device UUID とは
iOS, Android, ChromeOS 向けにモバイルデバイス管理 (MDM) ソリューションでパラメータとして埋め込み利用可能なユニークなデバイス識別子です。
Cloudflare Zero Trust は、MDMファイルに提供されたデバイスUUIDに基づいてZero Trustルールを構築することができます。これらのルールを作成して、企業のデバイスから接続するユーザーだけがアプリケーションへのアクセスを許可されるようにすることができます。
例えば macOS では uuidgen
コマンドにより、任意の UUID を生成可能です。
% uuidgen
EDB56A9E-060C-43CE-95AA-F1A1A76647CA
Microsoft Intune を使う場合
Microsoft Intune のようなモバイルデバイス管理 (MDM) ソリューションで、Device UUID を管理パラメータとして利用するには、MDM 構成ファイル内でパラメータ定義を共通化しつつも、デバイスごとにユニークな識別子として動的に付与される必要があります。
Microsoft Intune を使う場合には、{{deviceid}}
を使って実現が可能です。
さらに、Intuneでは、プロパティ リストで次のトークンの種類がサポートされています。
{{userprincipalname}} — たとえば、 John@contoso.com
{{mail}}—たとえば、 John@contoso.com
{{partialupn}}—たとえば、 John
{{accountid}} — たとえば、 fc0dc142-71d8-4b12-bbea-bae2a8514c81
{{deviceid}} — たとえば、 b9841cd9-9843-405f-be28-b2265c59ef97
{{userid}} — たとえば、 3ec2c00f-b125-4519-acf0-302ac3761822
{{username}}—たとえば、 John Doe
{{serialnumber}} — たとえば、F4KN99ZUG5V2 (iOS/iPadOS デバイスの場合)
{{serialnumberlast4digits}} — たとえば、G5V2 (iOS/iPadOS デバイスの場合)
{{aaddeviceid}} — たとえば、 ab0dc123-45d6-7e89-aabb-cde0a1234b56
{{issupervised}} — たとえば、 True (iOS/iPadOS デバイスの場合)
実装手順
Cloudflare WARP の iOS アプリを Microsoft Intune に追加
こちらの手順に沿って進めます。
割り当てに関しては「Available with or without enrollment - Included - All users」のようにしておきます。
iOS デバイスのアプリ構成ポリシーを追加
こちらの手順に沿って進めます。
Cloudflare WARP アプリで構成可能なのパラメータドキュメントを参考にしつつ、以下のような XML コードを設定します。
- Parameters · Cloudflare Zero Trust docs
-
unique_client_id
は{{deviceid}}
としてください。 - サービストークンでの認証を想定しているため、
auth_client_id
,auth_client_secret
を使いますが、こちらはあくまで任意です。
<dict>
<key>organization</key>
<string>YOUR_TEAM_NAME</string>
<key>service_mode</key>
<string>warp</string>
<key>onboarding</key>
<false />
<key>switch_locked</key>
<false />
<key>auto_connect</key>
<integer>0</integer>
<key>unique_client_id</key>
<string>{{deviceid}}</string>
<key>auth_client_id</key>
<string>xxxxx.access</string>
<key>auth_client_secret</key>
<string>xxxxx</string>
</dict>
割り当てに関しては「Included groups - All users」のようにしておきます。
Intune で iOS デバイスの管理設定と登録
こちらの手順を参照して進めます。
iOS デバイスに Microsoft Intune ポータルサイトがインストールでき、デバイス登録されると Intune 管理画面でも iOS デバイスの登録が確認できます。
{{deviceid}}
は URL やハードウェア情報から b046d188-587c-4780-a4f4-af308b8483d2
と確認できます。
iOS デバイスに Cloudflare WARP アプリをインストール
Microsoft Intune ポータルサイトから、Cloudflare WARP アプリをインストールします。
すると、iOS デバイスのアプリ構成ポリシーが適用され、
unique_client_id
が b046d188-587c-4780-a4f4-af308b8483d2
と確認できます。
Cloudflare Zero Trust で Device UUID リストを作成
Microsoft Intune の画面から Device ID を CSV で Export します。
Cloudflare Zero Trust にアップロードする際には、以下のような形式にします。
b046d188-587c-4780-a4f4-af308b8483d2
4AAB72DD-DB05-4F2D-8754-815B17B43123
...
以下の手順で Cloudflare Zero Trust で Device UUID リストを作成します。
Cloudflare Zero Trust で Device UUID デバイスポスチャチェックを作成
以下の手順で Device UUID デバイスポスチャチェックを作成します。
確認
デバイス情報
以下のように Device UUID デバイスポスチャチェックが PASSED
になっていることが確認できます。
ポスチャログ
以下のように確認できます。
デバイスポスチャに関する留意点
- デフォルトでは、WARPクライアントは5分ごとにデバイスの状態変化をポーリングします。何らかの理由で新しい姿勢結果がCloudflareエッジ上で更新されない場合、前回の結果は24時間有効です。ポーリング頻度を変更するには、APIを使用してスケジュールパラメーターを更新してください。
- デフォルトでは、ポスチャチェックの結果は新しいデータによって上書きされるまで有効です。APIを使用して有効期限を指定することができます。ポーリング頻度よりも長い有効期間を設定することをお勧めします。
- アクセスは、姿勢チェックのポーリング頻度と同じ速度でデバイスの姿勢変更を検出します。
- ゲートウェイはすべてのリクエストに対してネットワークおよびHTTPポリシーを評価するため、ポスチャ結果のローカルキャッシュを5分ごとに更新します。そのため、ゲートウェイポリシーは追加の5分間遅れが発生します。例えば、10分間隔でポーリング頻度を設定した場合、デバイス上での姿勢変更を検出するまで最大15分かかる可能性があります。
export ACCOUNT_ID='YOUR_ACCOUNT_ID'
curl -s --request GET \
--url https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/devices/posture \
--header 'Content-Type: application/json' \
-H "X-Auth-Email: $EMAIL" \
-H "X-Auth-Key: $APIKEY" | jq
{
"input": {
"id": "1b6f414f-797e-4dbe-8c22-81aaf19e94ea"
},
"match": [
{
"platform": "ios"
}
],
"schedule": "5m",
"id": "66249458-a588-46dd-b270-3dbe170c9df3",
"type": "unique_client_id",
"description": "",
"name": "Intune Device ID Check",
"expiration": null
},