Skip to content

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

GraphQL で Access のログインイベントをクエリする

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

この例では、GraphQL Analytics API を使って、Access のログインイベントのログを取得します。ダッシュボードの Access ログにはない追加データが得られるため、ユーザーが 403 Forbidden エラーを受け取った理由を調べるときに特に役立ちます。

次の API 呼び出しは、1 件の Access ログインイベントのログをリクエストし、指定したフィールドを出力します。認証リクエストは Ray ID で識別します。Ray ID は、ユーザーに表示される 403 Forbidden ページから取得できます。

<CLOUDFLARE_ACCOUNT_TAG><API_TOKEN>1 に API 認証情報を入れ、次の変数は自分の値に置き換えてください。

  • rayID: 認証リクエストに割り当てられる一意の識別子です。
  • datetimeStart: クエリする最も早いイベント時刻です(2022 年 9 月 16 日より前は指定できません)。
  • datetimeEnd: クエリする最も遅いイベント時刻です。クエリ対象のログインイベントが含まれる期間を指定してください。

API 呼び出し

echo '{ "query":
  "query accessLoginRequestsAdaptiveGroups($accountTag: string, $rayId: string, $datetimeStart: string, $datetimeEnd: string) {
    viewer {
      accounts(filter: {accountTag: $accountTag}) {
        accessLoginRequestsAdaptiveGroups(limit: 100, filter: {datetime_geq: $datetimeStart, datetime_leq: $datetimeEnd, cfRayId: $rayId}, orderBy: [datetime_ASC]) {
          dimensions {
            datetime
            isSuccessfulLogin
            hasWarpEnabled
            hasGatewayEnabled
            hasExistingJWT
            approvingPolicyId
            cfRayId
            ipAddress
            userUuid
            identityProvider
            country
            deviceId
            mtlsStatus
            mtlsCertSerialId
            mtlsCommonName
            serviceTokenId
          }
        }
      }
    }
  }",
  "variables": {
    "accountTag": "<CLOUDFLARE_ACCOUNT_TAG>",
    "rayId": "74e4ac510dfdc44f",
    "datetimeStart": "2022-09-20T14:36:38Z",
    "datetimeEnd": "2022-09-22T14:36:38Z"
}
}' | tr -d '\n' | curl --silent \
https://api.cloudflare.com/client/v4/graphql \
--header "Authorization: Bearer <API_TOKEN>" \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--data @- | jq .

レスポンス

{
  "data": {
    "viewer": {
      "accounts": [
        {
          "accessLoginRequestsAdaptiveGroups": [
            {
              "dimensions": {
                "approvingPolicyId": "",
                "cfRayId": "744927037ce06d68",
                "country": "US",
                "datetime": "2022-09-02T20:56:27Z",
                "deviceId": "",
                "hasExistingJWT": 0,
                "hasGatewayEnabled": 0,
                "hasWarpEnabled": 0,
                "identityProvider": "nonidentity",
                "ipAddress": "2a09:bac0:15::814:7b37",
                "isSuccessfulLogin": 0,
                "mtlsCertSerialId": "",
                "mtlsCommonName": "",
                "mtlsStatus": "NONE",
                "serviceTokenId": "",
                "userUuid": ""
              }
            }
          ]
        }
      ]
    }
  },
  "errors": null
}

クエリ結果を Access ポリシーと照合すると、ユーザーがブロックされた理由を理解できます。たとえば、アプリケーションが有効な mTLS 証明書を要求する場合、上記のリクエストは mtlsStatusmtlsCommonNamemtlsCertSerialId が空のため、Access によってブロックされています。

Footnotes

  1. 設定と権限の詳細は、Analytics API トークンを設定する を参照してください。

役に立ちましたか?