デフォルトでは、Cloudflare Gateway のポリシーはオンになっているあいだ、常に適用されます。時間指定 DNS ポリシーを使うと、DNS ポリシーが有効になる時間を制御できます。たとえば、勤務時間中だけソーシャルメディアをブロックしたり、メンテナンス時間だけ制限サイトへのアクセスを一時的に許可したりできます。特定の時間帯にだけ有効にするか、一定時間後に期限切れにするかを設定できます。
時間指定 DNS ポリシーには、次の 2 つのオプションがあります。
- ポリシーの期間: オンにしてから一定時間だけ有効です(例: 30 分)。
- ポリシーのスケジュール: 毎週繰り返すスケジュールで有効です(例: 平日の午前 9 時から午後 5 時)。
時間ベースのポリシー期間を使うと、ポリシーがオンになる時間枠を指定したり、オフになる正確な時刻を設定したりできます。
DNS ポリシーに期間を設定するには:
- Cloudflare ダッシュボード ↗ で、Zero Trust > Traffic policies > Firewall policies > DNS を開きます。
- 新しい DNS ポリシーを作成するか、既存のポリシーを選んで Edit を選択します。
- Apply durations and schedules で、Policy duration をオンにします。
- Input method で、期間の種類を選びます。
- Duration を選び、ポリシーがオフになるまでの時間を入力します。
- Exact end date を選び、アカウントのタイムゾーンでポリシーがオフになる日付と時刻を入力します。
- Save policy を選択します。
ポリシーがオフになると、再びオンにするまでオフのままです。
たとえば、正午 12:00 にポリシーを作成し、6 時間後にオフになるよう設定します。午後 3:00 にオフにして午後 4:00 に再びオンにしても、ポリシーは午後 6:00 にオフになります。累積の有効時間 6 時間ではなく、最初にオンにした時刻から 6 時間後です。
ポリシーの期間が切れたあと、元の設定どおりの期間で再びオンにできます。期間をリセットするには、ポリシーを選び、Reset policy duration を選択します。
終了時刻を指定したポリシーでは、オフになる前に時刻を変更できます。終了時刻に達したら、ポリシーを編集して新しい終了時刻を設定する必要があります。新しい終了時刻を設定するには:
- ポリシーを選択します。
- Edit を選択します。
- Set a policy duration をオンにします。
- Input method で Exact end date を選びます。Date and time に、ポリシーがオフになる新しい日付と時刻を入力します。
- Save policy を選択します。
Gateway で、スケジュール付きの新しい DNS ポリシーを作成するか、既存のポリシーにスケジュールを追加できます。
- Cloudflare ダッシュボード ↗ で、Zero Trust > Traffic policies > Firewall policies > DNS を開きます。
- 新しい DNS ポリシーを作成するか、既存のポリシーを選んで Edit を選択します。
- Apply durations and schedules で、Policy schedule をオンにします。
- (任意)Time Zone でタイムゾーンを選ぶと、ユーザーの所在地に関係なく、選んだタイムゾーンの時刻でポリシーを適用します。デフォルトでは、Gateway はエンドユーザーのタイムゾーンを使い、DNS クエリを出したユーザーの現地時刻に基づいてポリシーを適用します。
- Schedule template でプリセットのスケジュールを選ぶか、Custom schedule を選んで独自のスケジュールを定義します。15 分単位で、重ならない時間帯を最大 3 つまで選べます。
- Save policy を選択します。
API でポリシーをスケジュールするには、schedule パラメーターに希望する曜日、時刻、任意のタイムゾーンを指定して、Create a Zero Trust Gateway rule エンドポイント を使います。例:
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/gateway/rules" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"action": "block",
"name": "Block gambling sites on weekends",
"traffic": "any(dns.content_category[*] in {\"Gambling\"})",
"schedule": {
"sat": "08:00-17:00",
"sun": "08:00-17:00",
"timezone": "Europe/Paris"
}
}'ポリシーのスケジュールは、Cloudflare ダッシュボードの Zero Trust > Traffic policies > Firewall policies > DNS で、ポリシーを選ぶと表示されます。
スケジュールに タイムゾーンを割り当てる と、Gateway はユーザーの所在地に関係なく、そのタイムゾーンの現在時刻を常に使います。これにより、固定の時間帯にポリシーを有効にできます。
タイムゾーンを指定しない 場合、Gateway はユーザーのローカルタイムゾーンに基づいて DNS ポリシーを有効にします。ユーザーのタイムゾーンは、送信元 IP アドレスの IP 位置情報から推定されます。送信元 IP からタイムゾーンを特定できない場合は、クエリを受信したデータセンターのタイムゾーンにフォールバックします。
次のコマンドは、米国シカゴのタイムゾーンで、平日の午前 8:00〜午後 12:30 と午後 1:30〜午後 5:00 だけ facebook.com をブロックする DNS ポリシーを作成します。
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/gateway/rules" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"name": "office-no-facebook-policy",
"action": "block",
"traffic": "dns.fqdn == \"facebook.com\"",
"enabled": true,
"schedule": {
"time_zone": "America/Chicago",
"mon": "08:00-12:30,13:30-17:00",
"tue": "08:00-12:30,13:30-17:00",
"wed": "08:00-12:30,13:30-17:00",
"thu": "08:00-12:30,13:30-17:00",
"fri": "08:00-12:30,13:30-17:00"
}
}'タイムゾーン識別子の一覧は、この表 ↗ を参照してください。
次のコマンドは、ユーザーが現在いるタイムゾーンの週末だけ clockin.com をブロックする DNS ポリシーを作成します。
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/gateway/rules" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"name": "clock-in-policy",
"action": "block",
"traffic": "dns.fqdn == \"clockin.com\"",
"enabled": true,
"schedule": {
"sat": "00:00-24:00",
"sun": "00:00-24:00"
}
}'