このページでは、階層型ファイアウォール ポリシー ルールとネットワーク ファイアウォール ポリシー ルールのロギングを有効または無効にする方法について説明します。ファイアウォール ポリシー ルールのロギングの手順については、ファイアウォール ポリシー ルールのロギングを有効または無効にするをご覧ください。ファイアウォール ポリシー ルールで生成されたログを表示する方法についても説明します。ファイアウォール ポリシー ルールのロギングについては、ファイアウォール ポリシー ルールのロギングの概要をご覧ください。
ファイアウォール ポリシー ルールのロギングを有効にすると、ファイアウォール インサイトからその分析情報と推奨事項を表示できます。詳細については、Network Intelligence Center のドキュメントのファイアウォール インサイトをご覧ください。
権限
ファイアウォール ポリシー ルールの変更や、ログへのアクセスを行うには、Identity and Access Management(IAM)プリンシパルに次のいずれかのロールが割り当てられている必要があります。
| タスク | 必要なロール |
|---|---|
| ファイアウォール ルールの作成、削除、または更新 | プロジェクトのオーナーまたは編集者、あるいはセキュリティ管理者ロール(roles/compute.securityAdmin) |
| ログを表示 | プロジェクトのオーナー、編集者、閲覧者、またはログ閲覧者ロール(roles/logging.viewer)
Logging IAM のロールと権限の詳細については、 事前定義ロールをご覧ください。 |
ファイアウォール ポリシー ルールのロギングを有効または無効にする
ファイアウォール ポリシー ルールを作成する際に、ファイアウォール ポリシー ルール ロギングを有効にできます。詳しくは以下をご覧ください。
ロギングを有効にする際には、メタデータ フィールドを含めるかどうかを指定できます。省略すると、ストレージ費用の節約が可能です。既存のファイアウォール ポリシー ルールに対してファイアウォール ポリシー ルール ロギングを有効または無効にするには、次のセクションをご覧ください。
階層型ファイアウォール ポリシーのファイアウォール ポリシールールのロギングを有効にする
コンソール
Google Cloud コンソールで、[ファイアウォール ポリシー] ページに移動します。
プロジェクト セレクタ メニューで、階層型ファイアウォール ポリシーを作成した組織の名前を選択します。
[この組織内にあるファイアウォール ポリシー] セクションで、階層型ファイアウォール ポリシーの名前をクリックします。
[ログ] 列で、各ファイアウォール ポリシー ルールのファイアウォール ポリシー ルールのロギングが [無効] か [有効] かを確認します。
ファイアウォール ポリシー ルールのロギングを有効にするには、ルールの優先度をクリックし、[編集] をクリックします。
[ログ] セクションで、[有効] を選択します。
[保存] をクリックします。
gcloud
組織のファイアウォール ポリシー ルールを更新するには、gcloud compute firewall-policies rules update コマンドを使用します。
gcloud compute firewall-policies rules update PRIORITY \
--firewall-policy= FIREWALL_POLICY \
--enable-logging
次のように置き換えます。
PRIORITY: 更新するファイアウォール ポリシー ルールの優先度。FIREWALL_POLICY: ルールが更新されるファイアウォール ポリシーの名前。
詳しくは、SDK リファレンス ドキュメントをご覧ください。
Terraform
Terraform リソースを使用して、ロギングを有効にしたファイアウォール ポリシー ルールを作成できます。
resource "google_compute_firewall_policy_rule" "primary" {
firewall_policy = google_compute_firewall_policy.POLICY_ID
description = "Creates an ingress firewall policy rule with logging enabled"
priority = PRIORITY
enable_logging = true
action = "allow"
direction = "INGRESS"
disabled = false
match {
layer4_configs {
ip_protocol = "tcp"
ports = [8080]
}
layer4_configs {
ip_protocol = "udp"
ports = [22]
}
src_ip_ranges = ["SOURCE_IP_ADDRESS"]
}
}
Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。
API
既存の階層型ファイアウォール ポリシールールに対してファイアウォール ポリシールールのロギングを有効にします。
POST https://compute.googleapis.com/compute/v1/locations/global/firewallPolicies/POLICY_ID/patchRule?priority=PRIORITY
{
"enableLogging": true,
}
次のように置き換えます。
POLICY_ID: ファイアウォール ポリシー ルールが配置されている階層型ファイアウォール ポリシーの ID。PRIORITY: ファイアウォール ポリシー ルールの優先度。
詳細については、firewallPolicies.patchRule メソッドをご覧ください。
階層型ファイアウォール ポリシーのファイアウォール ポリシー ルールのロギングを無効にする
コンソール
Google Cloud コンソールで、[ファイアウォール ポリシー] ページに移動します。
プロジェクト セレクタ メニューで、階層型ファイアウォール ポリシーを作成した組織の名前を選択します。
[この組織内にあるファイアウォール ポリシー] セクションで、階層型ファイアウォール ポリシーの名前をクリックします。
[ログ] 列で、各ファイアウォール ポリシー ルールのファイアウォール ポリシー ルールのロギングが [無効] か [有効] かを確認します。
ファイアウォール ポリシー ルールのロギングを無効にするには、ルールの優先度をクリックし、[編集] をクリックします。
[ログ] セクションで、[無効] を選択します。
[保存] をクリックします。
gcloud
組織のファイアウォール ポリシー ルールを更新するには、gcloud compute firewall-policies rules update コマンドを使用します。
gcloud compute firewall-policies rules update PRIORITY \
--firewall-policy= FIREWALL_POLICY \
--no-enable-logging
次のように置き換えます。
PRIORITY: 更新するファイアウォール ポリシー ルールの優先度。FIREWALL_POLICY: ルールが更新されるファイアウォール ポリシーの名前。
詳しくは、SDK リファレンス ドキュメントをご覧ください。
API
既存の階層型ファイアウォール ポリシールールに対してファイアウォール ポリシールールのロギングを無効にする
POST https://compute.googleapis.com/compute/v1/locations/global/firewallPolicies/POLICY_ID/patchRule?priority=PRIORITY
{
"enableLogging": false,
}
次のように置き換えます。
POLICY_ID: ファイアウォール ポリシー ルールが配置されている階層型ファイアウォール ポリシーの ID。PRIORITY: ファイアウォール ポリシー ルールの優先度。
詳細については、firewallPolicies.patchRule メソッドをご覧ください。
ネットワーク ファイアウォール ポリシーのファイアウォール ポリシー ルールのロギングを有効にする
コンソール
Google Cloud コンソールで、[ファイアウォール ポリシー] ページに移動します。
プロジェクト セレクタ メニューで、ネットワーク ファイアウォール ポリシーを作成したプロジェクトの名前を選択します。
[ネットワーク ファイアウォール ポリシー] セクションで、ロギングを有効にするネットワーク ファイアウォール ポリシーの名前をクリックします。
[ログ] 列で、各ファイアウォール ポリシー ルールのファイアウォール ポリシー ルールのロギングが [無効] か [有効] かを確認します。
ネットワーク ファイアウォール ポリシー ルールのロギングを有効にするには、ルールの優先度をクリックして、[編集] をクリックします。
[ログ] セクションで、[有効] を選択します。
[保存] をクリックします。
gcloud
ネットワーク ファイアウォール ポリシー ルールを更新するには、gcloud compute network-firewall-policies rules update コマンドを使用します。
gcloud compute network-firewall-policies rules update PRIORITY \
--firewall-policy= FIREWALL_POLICY \
--enable-logging
次のように置き換えます。
PRIORITY: 更新するファイアウォール ポリシー ルールの優先度。FIREWALL_POLICY: ファイアウォール ポリシー ルールが配置されているネットワーク ファイアウォール ポリシーの名前。
詳しくは、SDK リファレンス ドキュメントをご覧ください。
Terraform
Terraform リソースを使用して、ロギングを有効にしたファイアウォール ポリシー ルールを作成できます。
resource "google_compute_firewall_policy_rule" "primary" {
firewall_policy = google_compute_firewall_policy.POLICY_ID
description = "Creates an ingress firewall policy rule with logging enabled"
priority = PRIORITY
enable_logging = true
action = "allow"
direction = "INGRESS"
disabled = false
match {
layer4_configs {
ip_protocol = "tcp"
ports = [8080]
}
layer4_configs {
ip_protocol = "udp"
ports = [22]
}
src_ip_ranges = ["SOURCE_IP_ADDRESS"]
}
}
Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。
API
既存のネットワーク ファイアウォール ポリシールールに対してファイアウォール ポリシールールのロギングを有効にします。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewallPolicies/POLICY_ID/patchRule?priority=PRIORITY
{
"enableLogging": true,
}
次のように置き換えます。
PROJECT_ID: ネットワーク ポリシーが配置されているプロジェクトの ID。POLICY_ID: ファイアウォール ポリシー ルールが配置されている階層型ファイアウォール ポリシーの ID。PRIORITY: ファイアウォール ポリシー ルールの優先度。
詳細については、networkFirewallPolicies.patchRule メソッドをご覧ください。
ネットワーク ファイアウォール ポリシーのファイアウォール ポリシー ルールのロギングを無効にする
コンソール
Google Cloud コンソールで、[ファイアウォール ポリシー] ページに移動します。
プロジェクト セレクタ メニューで、ネットワーク ファイアウォール ポリシーを作成したプロジェクトの名前を選択します。
[ネットワーク ファイアウォール ポリシー] セクションで、ロギングを有効にするネットワーク ファイアウォール ポリシーの名前をクリックします。
[ログ] 列で、各ファイアウォール ポリシー ルールのファイアウォール ポリシー ルールのロギングが [無効] か [有効] かを確認します。
ネットワーク ファイアウォール ポリシー ルールのロギングを無効にするには、ルールの優先度をクリックし、[編集] をクリックします。
[ログ] セクションで、[無効] を選択します。
[保存] をクリックします。
gcloud
ネットワーク ファイアウォール ポリシー ルールを更新するには、gcloud compute network-firewall-policies rules update コマンドを使用します。
gcloud compute network-firewall-policies rules update PRIORITY \
--firewall-policy= FIREWALL_POLICY \
--no-enable-logging
次のように置き換えます。
PRIORITY: 更新するファイアウォール ポリシー ルールの優先度。FIREWALL_POLICY: ファイアウォール ポリシー ルールが配置されているネットワーク ファイアウォール ポリシーの名前。
詳しくは、SDK リファレンス ドキュメントをご覧ください。
API
既存の階層型ファイアウォール ポリシールールに対してファイアウォール ポリシールールのロギングを無効にする
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewallPolicies/POLICY_ID/patchRule?priority=PRIORITY
{
"enableLogging": false,
}
次のように置き換えます。
POLICY_ID: ファイアウォール ポリシー ルールが配置されている階層型ファイアウォール ポリシーの ID。PRIORITY: ファイアウォール ポリシー ルールの優先度。
詳細については、networkFirewallPolicies.patchRule メソッドをご覧ください。
ログを表示
ファイアウォール ポリシー ルールのログは、VM インスタンスとファイアウォール ルールが含まれるネットワークをホストしているプロジェクト内で作成されます。共有 VPC では、サービス プロジェクトに VM インスタンスを作成しますが、これらのインスタンスはホスト プロジェクトにある共有 VPC ネットワークを使用します。このようなシナリオでは、ホスト プロジェクトにファイアウォール ポリシー ルールのログが保存されます。
ファイアウォール ポリシー ルールのログを表示するには、 Google Cloud コンソールのログ エクスプローラ セクションを使用します。詳細については、ログの表示と分析をご覧ください。
次のクエリは、特定のファイアウォール イベントを検索する方法を示しています。
すべてのファイアウォール ログを表示する
ファイアウォール ポリシー ルールのログを表示するには、次のいずれかのオプションを使用します。
オプション 1
Google Cloud コンソールで、[ログ エクスプローラ] ページに移動します。
[すべてのリソース] をクリックします。
[リソースの選択] リストで [サブネットワーク] をクリックし、[適用] をクリックします。
[すべてのログ名] をクリックし、リストから [ファイアウォール] を選択します。
[適用] をクリックします。
オプション 2
Google Cloud コンソールで、[ログ エクスプローラ] ページに移動します。
クエリエディタのフィールドに次の内容を貼り付けます。
resource.type="gce_subnetwork" logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Ffirewall"
PROJECT_IDは、実際のプロジェクト ID に置き換えます。クエリ エディタ フィールドが表示されない場合は、[クエリを表示] をクリックします。
[クエリを実行] をクリックします。
特定のサブネットのログを表示する
特定のサブネットのファイアウォール ポリシー ルールログを表示するには、次のいずれかのオプションを使用します。
オプション 1
Google Cloud コンソールで、[ログ エクスプローラ] ページに移動します。
[すべてのリソース] をクリックします。
[リソースの選択] リストで、[サブネットワーク] をクリックします。
ログを表示するサブネットワークを選択し、[適用] をクリックします。
[すべてのログ名] をクリックし、リストから [ファイアウォール] を選択します。
[適用] をクリックします。
オプション 2
Google Cloud コンソールで、[ログ エクスプローラ] ページに移動します。
クエリエディタのフィールドに次の内容を貼り付けます。
resource.type="gce_subnetwork" logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Ffirewall" resource.labels.subnetwork_name="SUBNET_NAME"
次のように置き換えます。
PROJECT_ID: オブジェクトの IDSUBNET_NAME: サブネットワークの名前
クエリ エディタ フィールドが表示されない場合は、[クエリを表示] をクリックします。
[クエリを実行] をクリックします。
特定の VM のログを表示する
特定の VM のファイアウォール ポリシー ルールログを表示するには、次のいずれかのオプションを使用します。
オプション 1
Google Cloud コンソールで、[ログ エクスプローラ] ページに移動します。
[すべてのリソース] をクリックします。
[リソースの選択] リストで、[VM インスタンス] をクリックします。
ログを表示するインスタンスを選択し、[適用] をクリックします。
[すべてのログ名] をクリックし、リストから [ファイアウォール] を選択します。
[適用] をクリックします。
オプション 2
Google Cloud コンソールで、[ログ エクスプローラ] ページに移動します。
クエリエディタのフィールドに次の内容を貼り付けます。
resource.type="gce_subnetwork" logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Ffirewall" jsonPayload.instance.vm_name="INSTANCE_ID"
次のように置き換えます。
PROJECT_ID: オブジェクトの IDINSTANCE_ID: ログを表示する VM の ID
クエリ エディタ フィールドが表示されない場合は、[クエリを表示] をクリックします。
[クエリを実行] をクリックします。
特定の国からの接続のログを表示する
特定の国のファイアウォール ポリシー ルールログを表示する手順は次のとおりです。
Google Cloud コンソールで、[ログ エクスプローラ] ページに移動します。
クエリエディタのフィールドに次の内容を貼り付けます。
resource.type="gce_subnetwork" logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Ffirewall" jsonPayload.remote_location.country=COUNTRY
次のように置き換えます。
PROJECT_ID: オブジェクトの IDCOUNTRY: ログを表示する国の ISO 3166-1alpha-3 コード
クエリ エディタ フィールドが表示されない場合は、[クエリを表示] をクリックします。
[クエリを実行] をクリックします。
ログをエクスポートする
ファイアウォール ポリシールールのログをエクスポートするには、サポートされている宛先にログを転送するをご覧ください。クエリの例を使用して、エクスポートするログを絞り込むことができます。
相互作用の表
- VM 間通信の場合、それぞれに適用されているファイアウォール ルールによっては、両方の VM がログレコードを生成することもあります。
- 最初のパケットがファイアウォールで許可された場合、ログに記録される接続には双方向に流れるパケットが含まれます。
- 特定の VM への受信接続は、その VM 上に構成されているファイアウォール ルールと照合されます。また、特定の VM からの発信接続は、その VM 上に構成されている下りファイアウォール ルールと照合されます。
- 「許可してログに記録」するように指定しているファイアウォール ルールに一致して許可された接続は、一度だけログに記録されます。接続が維持されたとしても、ログエントリが 5 秒ごとに繰り返し記録されることはありません。
- 「拒否してログに記録」するように指定しているファイアウォール ルールに一致して拒否された接続は、その拒否対象の接続でパケットが観測される限り、5 秒ごとに繰り返しログに記録されます。
- すでにアクティブな TCP 接続または UDP 接続に一致するファイアウォール ルールでロギングを有効にしても、新しいログエントリは生成されません。ログエントリが作成されるのは、接続が 10 分以上アイドル状態のままで、同じ接続で新しいパケットが送信された場合のみです。アイドル期間が 10 分未満の連続トラフィックの場合、接続に対して 1 つのログエントリのみが生成されます。
この表は、単一の VM の観点からのファイアウォールのロギング動作を示しています。
VM1 の上り(内向き)ルール R1 がパケットを照合し、下り(外向き)ルール R2 でもパケットを照合するというシナリオでは、ファイアウォールのロギング動作は次のようになります。
| VM1 の上り(内向き)ルール R1(パケットを照合) | VM1 の下り(外向き)ルール R2(パケットを照合) | 接続方向 | 操作 | ログ |
|---|---|---|---|---|
| 許可してログに記録 | 許可 | 上り(内向き) | 許可 | 1 つのログエントリ: disposition=allow, rule=R1 |
| 拒否 | ||||
| 許可してログに記録 | ||||
| 拒否してログに記録 | ||||
| 許可 | 許可 | 上り(内向き) | 許可 | ロギングなし |
| 拒否 | ||||
| 許可してログに記録 | ||||
| 拒否してログに記録 | ||||
| 拒否してログに記録 | 該当なし | 上り(内向き) | 拒否 | 5 秒ごとに 1 つのログエントリ: disposition=deny, rule=R1 |
| 拒否 | 該当なし | 上り(内向き) | 拒否 | ロギングなし |
| 許可 | 許可してログに記録 | 下り | 許可 | 1 つのログエントリ: disposition=allow, rule=R2 |
| 拒否 | ||||
| 許可してログに記録 | ||||
| 拒否してログに記録 | ||||
| 許可 | 許可 | 下り | 許可 | ロギングなし |
| 拒否 | ||||
| 許可してログに記録 | ||||
| 拒否してログに記録 | ||||
| 該当なし | 拒否してログに記録 | 下り | 拒否 | 5 秒ごとに 1 つのログエントリ: disposition=deny, rule=R2 |
| 該当なし | 拒否 | 下り | 拒否 | ロギングなし |
上りと下りは対称であるので注意してください。
以下に、ファイアウォール ログのセマンティックについて詳しく説明します。
許可してログに記録(ロギングは TCP と UDP でのみサポートされます)
- ルールが適用される方向で接続が開始されると、1 つのログレコードが作成されます。
- 接続トラッキングにより、応答トラフィックは許可されます。該当する方向に適用される VPC ファイアウォール ルールに関係なく、応答トラフィックによってロギングが行われることはありません。
- ファイアウォールにより接続が失効すると(10 分間にわたり非アクティブであるか、TCP RST を受信した場合)、いずれかの方向での別のパケットによってロギングがトリガーされる場合があります。
- ロギングは 5 タプルに基づきます。TCP フラグはロギング動作に影響を与えません。
拒否してログに記録(ロギングは TCP と UDP でのみサポートされます)
- パケットはドロップされます(接続は開始されません)。
- 一意の 5 タプルに対応する各パケットが、失敗した接続試行としてログに記録されます。
- 引き続きパケットを受信する場合、同じ 5 タプルが 5 分ごとに繰り返しログに記録されます。