Web Application Firewall(WAF) を使うと、Cloudflare 上で追加のセキュリティ対策を作れます。SaaS プロバイダーは、カスタムルール、レート制限ルール、マネージドルールをカスタムホスト名に紐づけられます。悪意のあるトラフィックからドメインを守るための制御が増えます。
SaaS プロバイダーとしては、カスタムホスト名ごとに異なるセキュリティ対策を適用したいことがあります。WAF for SaaS では、複数の WAF 構成を作り、異なるカスタムホスト名の集合に適用できます。柔軟性とセキュリティが増え、エンド顧客のドメイン全体を適切に保護できます。
WAF for SaaS を使う前に、カスタムホスト名を作成します。まだの場合は Cloudflare for SaaS を始める を確認してください。
API でカスタムホスト名を作成することもできます。
Required API token permissions
At least one of the following token permissions is required:SSL and Certificates Write
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/custom_hostnames" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"hostname": "<CUSTOM_HOSTNAME>",
"ssl": {
"wildcard": false
}
}'カスタムホスト名に WAF を適用するには、顧客のドメインと、添付したい WAF 構成を関連付ける必要があります。Cloudflare の カスタムメタデータ を使うと、API でこの関連付けができます。
-
Cloudflare ダッシュボードで確認できる ゾーン ID を探します。
-
API Tokens ↗ ページの Global API Key で Authentication Key を確認します。
-
API で
GETを呼び出し、カスタムホスト名 ID を確認します。
Required API token permissions
At least one of the following token permissions is required:SSL and Certificates WriteSSL and Certificates Read
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/custom_hostnames" \
--request GET \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"- カスタムメタデータ を設計します。内容は自由に決められます。次の例では、3 つの値(low、medium、high)を割り当てる想定で、タグ
"security_level"を選んでいます。
- Cloudflare のメールアドレスと、上で集めた ID を使い、次の形式で API を呼び出します。
Required API token permissions
At least one of the following token permissions is required:SSL and Certificates Write
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/custom_hostnames/$CUSTOM_HOSTNAME_ID" \
--request PATCH \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"custom_metadata": {
"customer_id": "12345",
"security_level": "low"
}
}'これでカスタムホスト名にカスタムメタデータが付き、ID にセキュリティタグが関連付けられます。
-
WAF が動作する Ruleset Engine で、カスタムメタデータフィールドを確認します。WAF カスタムルール、レート制限ルール、Transform Rules など、製品ごとの構成を起動できます。
-
ダッシュボード または API でルールを作ります。
"security_level"が low のときのレート制限ルールの例を、次の API 呼び出しに示します。
Required API token permissions
At least one of the following token permissions is required:Response Compression WriteConfig Settings WriteDynamic URL Redirects WriteCache Settings WriteCustom Errors WriteOrigin WriteManaged headers WriteZone Transform Rules WriteMass URL Redirects WriteMagic Firewall WriteL4 DDoS Managed Ruleset WriteHTTP DDoS Managed Ruleset WriteSanitize WriteTransform Rules WriteSelect Configuration WriteBot Management WriteZone WAF WriteAccount WAF WriteAccount Rulesets WriteLogs WriteLogs Write
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/phases/http_ratelimit/entrypoint" \
--request PUT \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"rules": [
{
"action": "block",
"ratelimit": {
"characteristics": [
"cf.colo.id",
"ip.src"
],
"period": 10,
"requests_per_period": 2,
"mitigation_timeout": 60
},
"expression": "lookup_json_string(cf.hostname.metadata, \"security_level\") eq \"low\" and http.request.uri contains \"login\""
}
]
}'ダッシュボードでルールを作る手順は次のとおりです。
-
Cloudflare ダッシュボードで WAF ページを開きます。
WAF を開く ↗ -
目的に応じて、カスタムルール、レート制限ルール、マネージドルール向けのダッシュボード手順に従います。
-
ルールが有効になると、該当するタブ(カスタムルール、レート制限、マネージドルール)に表示されます。