Access 認証ログでは、保護されたアプリケーションに誰が、いつアクセスし、許可されたかどうかを追跡できます。不審なログイン試行の調査、ユーザー活動の監査、アクセス問題のトラブルシューティングに使います。
Cloudflare Access は、次の 2 種類の監査ログを生成します。
- 認証監査ログ は、ユーザーまたはサービスが Access アプリケーションへログインを試みた結果(成功または失敗)を記録します。
- リクエスト単位の監査ログ は、認証済みユーザーが保護された アプリケーションパス とインフラストラクチャターゲットへ送った個別の HTTP リクエストを記録します。
Cloudflare Access は、ユーザーまたはサービスがアプリケーションへのログインを試みるたびに、成功・失敗を問わず認証イベントを記録します。
アイデンティティベースの認証 は、ユーザーが誰か(メールアドレス、IdP グループ、SAML グループ、OIDC クレームなど)に基づいて評価されたログイン試行です。
非アイデンティティ認証 は、ユーザーの身元ではなくコンテキスト(IP アドレス、デバイスポスチャ、国、有効な証明書、サービストークンなど)に基づいて評価されたログイン試行です。
アイデンティティベースの認証イベントのログを表示するには:
-
Cloudflare ダッシュボード ↗ で Zero Trust > Insights > Logs を開きます。
-
Access authentication logs を選びます。
-
(任意)ログビューアーに表示するログをフィルターします。タイムスタンプとイベント詳細(Access アプリケーション、ユーザーメール、ポリシー判定など)でフィルターできます。
-
個別のタイムスタンプを選び、イベントの詳細を確認します。
Access authentication logs の API エンドポイントは、アカウントの監査ログイベントをエクスポートするカスタム URL を提供します。
Required API token permissions
At least one of the following token permissions is required:Access: Audit Logs Read
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/access/logs/access_requests?limit=25&direction=desc&since=2020-07-01T05%3A20%3A00Z&until=2020-10-01T05%3A20%3A00Z" \
--request GET \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"{
"success": true,
"errors": [],
"messages": [],
"result": [
{
"user_email": "[email protected]",
"ip_address": "198.41.129.166",
"app_uid": "df7e2w5f-02b7-4d9d-af26-8d1988fca630",
"app_domain": "test.example.com/admin",
"action": "login",
"connection": "saml",
"allowed": false,
"created_at": "2014-01-01T05:20:00.12345Z",
"ray_id": "187d944c61940c77"
}
]
}アイデンティティベースの認証ログには、次のフィールドがあります。
| フィールド | 説明 |
|---|---|
| App | Access アプリケーションの名前。 |
| User email | 認証するユーザーのメールアドレス。 |
| User ID | 認証するユーザーの一意の識別子(UUID)。 |
| IP address | 認証するユーザーの IP アドレス。 |
| App UID | Access アプリケーションの一意の識別子(UUID)。 |
| App domain | Access アプリケーションの URL。 |
| App type | Access アプリケーションの種類。self-hosted、browser SSH、browser VNC、browser RDP、SaaS、infrastructure のいずれかです。 |
| Event | ログイン試行など、認証イベントの種類。 |
| Connection | 認証に使った IdP(たとえば saml、onetimepin、google-apps)。 |
| Allow | 認証試行が許可されたか(true)拒否されたか(false)。 |
| Request time | 認証イベントのタイムスタンプ。 |
| Ray ID | Cloudflare を通過するすべてのリクエストに付く一意の識別子。Cloudflare ログで特定のリクエストを追跡するときに使います。 |
| Country | ユーザーの IP アドレスに紐づく国。 |
ユーザーが インフラストラクチャアプリケーション に認証すると、Cloudflare Access は次の情報を記録します。
| フィールド | 説明 |
|---|---|
| Hostname | インフラストラクチャターゲットのホスト名。 |
| Target ID | インフラストラクチャターゲットの UUID。 |
| SSH user | 認証するユーザーがインフラストラクチャターゲットへ接続するときに指定した UNIX ユーザー(root など)。 |
| SSH logs | ユーザーがターゲットで実行した SSH コマンド。セッション開始前に SSH 暗号化キー の設定が必要です。 |
非アイデンティティ認証イベントのログを取得するには、GraphQL Analytics API を使います。これらのログは Cloudflare One ダッシュボードでは利用できません。
Access で認証したユーザーは、セッション中、許可された URL パスにアクセスできます。Cloudflare は、これらのリクエストを監査する方法をいくつか提供します。
Enterprise プランでは、Cloudflare ダッシュボードでリクエストの詳細ログを利用できます。Cloudflare の Logpush サービスも利用でき、Cloudflare ダッシュボードまたは API から設定できます。Cloudflare の HTTP ログとインフラストラクチャログの詳細は、Cloudflare Logs を参照してください。
チームのメンバーが Access 背後の HTTP リソースへ到達するために認証すると、Cloudflare はそのユーザーの SSO アイデンティティを含む JSON Web Token(JWT) を生成します。Cloudflare はこのトークンを、非対称アルゴリズムである RS256(SHA-256 付き RSA 署名)で署名し、公開鍵を公開します。トークンが本物であることを検証できます。
ユーザーが URL をリクエストすると、Access はそのトークンのユーザーアイデンティティをリクエストヘッダーとして付与し、Cloudflare はネットワーク通過時にそれをログに記録します。チームは Cloudflare Logpush を使い、任意のサードパーティのセキュリティ情報イベント管理(SIEM)ソフトウェアや保存先にこれらのログを収集できます。Access のユーザーアイデンティティフィールドを有効にすると、ログは次の例のような JSON としてシステムにエクスポートされます。
{
"ClientIP": "198.51.100.206",
"ClientRequestHost": "jira.widgetcorp.tech",
"ClientRequestMethod": "GET",
"ClientRequestURI": "/secure/Dashboard/jspa",
"ClientRequestUserAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.87 Safari/537.36",
"EdgeEndTimestamp": "2019-11-10T09:51:07Z",
"EdgeResponseBytes": 4600,
"EdgeResponseStatus": 200,
"EdgeStartTimestamp": "2019-11-10T09:51:07Z",
"RayID": "5y1250bcjd621y99",
"RequestHeaders":{"cf-access-user":"srhea"}
},
{
"ClientIP": "198.51.100.206",
"ClientRequestHost": "jira.widgetcorp.tech",
"ClientRequestMethod": "GET",
"ClientRequestURI": "/browse/EXP-12",
"ClientRequestUserAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.87 Safari/537.36",
"EdgeEndTimestamp": "2019-11-10T09:51:27Z",
"EdgeResponseBytes": 4570,
"EdgeResponseStatus": 200,
"EdgeStartTimestamp": "2019-11-10T09:51:27Z",
"RayID": "yzrCqUhRd6DVz72a",
"RequestHeaders":{"cf-access-user":"srhea"}
}Cloudflare Enterprise ログで利用できる HTTP リクエストフィールドに加え、Access 背後のアプリケーションへのリクエストには、ユーザーアイデンティティ文字列を含む cf-access-user フィールドがあります。ユーザー行動の監査に使えるもう 1 つの手段です。HTTP リクエストログに cf-access-user フィールドを追加するには、カスタムフィールドとして追加する必要があります。手順は Custom fields を参照してください。
Access はすべての操作を記録するわけではありません。リクエスト単位の監査ログは、特定のユーザーが domain.com/admin を訪れ、続けて domain.com/admin/panel を訪れたことは示せますが、新しい HTTP リクエストが発生した操作だけを記録します。サーバーリクエストを発生させない、クライアント側だけの操作は記録されません。