ファイアウォール ルールの使用

このページでは、ファイアウォール ルールの処理のためのコマンドについて説明し、それらの使用例を紹介します。ファイアウォール ルールの詳細については、ファイアウォール ルールの概要をご覧ください。

ファイアウォール ルールを作成する

GCP のファイアウォール ルールに関する不明な点については、ファイアウォール ルールのコンポーネントをご覧ください。ファイアウォール ルールはネットワーク レベルで定義され、その適用対象はファイアウォール ルールが作成されているネットワークのみです。ただし、各ファイアウォール ルールに選択する名前はプロジェクトに対して一意である必要があります。

Console

  1. Google Cloud Platform Console で [ファイアウォール ルール] ページに移動します。
    [ファイアウォール ルール] ページに移動
  2. [ファイアウォール ルールの作成] をクリックします。
  3. ファイアウォール ルールの [名前] を入力します。
    この名前はプロジェクトに対して一意にする必要があります。
  4. ファイアウォール ルールを実装する [ネットワーク] を指定します。
  5. ルールの [優先度] を指定します。
    数字が小さいほど優先度が高くなります。
  6. [トラフィックの方向] には、上りと下りのいずれかを選択します。
  7. [一致したときのアクション] には、許可と拒否のいずれかを選択します。
  8. ルールの [ターゲット] を指定します。
    • ネットワーク内のすべてのインスタンスにルールを適用する場合は、[All instances in the network] を選択します。
    • ネットワーク(ターゲット)のタグを使用して一部のインスタンスにルールを適用する場合は、[Specified target tags] を選択し、ルールの適用先にするタグを [ターゲットタグ] フィールドに入力します。
    • 関連するサービス アカウントを使用して一部のインスタンスにルールを適用する場合は、[Specified service account] を選択し、サービス アカウントが現在のプロジェクトにあるか別のプロジェクトにあるかを [サービス アカウントのスコープ] で指定し、[ターゲットのサービス アカウント] フィールドでサービス アカウント名を選択するか入力します。
  9. 上りルールの場合、[ソースフィルタ] を指定します。
    • IP アドレスの範囲を使用して受信トラフィックのソースを定義するには、[IP ranges] を選択し、[ソース IP の範囲] フィールドに CIDR ブロックを入力します。ソースを任意のネットワークにするには、0.0.0.0/0 を使用します。
    • サブネット名を使用して受信トラフィックのソースを定義するには、[Subnets] を選択し、[サブネット] ポップアップ ボタンから目的のサブネットをマークします。
    • ネットワーク タグによってソースを制限するには、[Source tags] を選択し、ネットワーク タグを [ソースタグ] フィールドに入力します。ソースタグ数の制限については、VPC の割り当てと制限をご覧ください。ソースタグによるフィルタリングを使用できるのは、サービス アカウントによってターゲットが指定されていない場合に限られます。詳しくは、サービス アカウントによるフィルタリングとネットワーク タグによるフィルタリングをご覧ください。
    • サービス アカウントによってソースを制限するには、[Service account] を選択し、サービス アカウントが現在のプロジェクトにあるか別のプロジェクトにあるかを [サービス アカウントのスコープ] で指定し、[ソースのサービス アカウント] フィールドでサービス アカウント名を選択するか入力します。ソースのサービス アカウントによるフィルタリングを使用できるのは、ネットワーク タグによってターゲットが指定されていない場合に限られます。詳しくは、サービス アカウントによるフィルタリングとネットワーク タグによるフィルタリングをご覧ください。
    • 必要に応じて、[2 番目のソースフィルタ] を指定します。2 番目のソースフィルタでは、メインのソースフィルタと同じフィルタ条件を使用することはできません。
  10. 下りルールの場合、[送信先フィルタ] を指定します。
    • IP アドレスの範囲を使用して発信トラフィックの送信先を定義するには、[IP ranges] を選択し、[送信先 IP 範囲] フィールドに CIDR ブロックを入力します。0.0.0.0/0 を使用すると、任意の場所になります。
    • サブネット名を使用して発信トラフィックの送信先を定義するには、[Subnets] を選択し、[サブネット] ポップアップ ボタンから目的のサブネットをマークします。
  11. ルールを適用する [プロトコルとポート] を定義します。

    • すべてのプロトコルとポートにルールを適用する場合は、アクションに応じて [Allow all] と [Deny all] のいずれかを選択します。

    • 特定のプロトコルとポートを定義します。

      • TCP のプロトコルとポートを指定する場合は [tcp] を選択します。[all] を入力するか、20-22, 80, 8080 のようにポートのカンマ区切りリストを入力します。
      • UDP のプロトコルとポートを指定するには [udp] を選択します。[all] を入力するか、67-69, 123 のようにポートのカンマ区切りリストを入力します。
      • icmpsctp などのプロトコルを含めるには [その他のプロトコル] を選択します。
  12. (省略可)ファイアウォール ルールを作成しても、その適用状態を無効に設定すれば、ルールは適用されません。[ルールを無効にする] をクリックし、[無効] を選択します。

  13. (省略可)ファイアウォール ルール ロギングを有効にできます。

    • [ログ] > [オン] をクリックします。
    • [オンにする] をクリックします。
  14. [作成] をクリックします。

gcloud

ファイアウォール ルールを作成するための gcloud コマンドは次のとおりです。

gcloud compute firewall-rules create [NAME] \
    [--network [NETWORK]; default=”default”] \
    [--priority [PRIORITY];default=1000] \
    [--direction (ingress|egress|in|out); default=”ingress”] \
    [--action (deny | allow )] \
    [--target-tags [TAG][,TAG,...]] \
    [--target-service-accounts=[IAM Service Account] \
    [--source-ranges [CIDR-RANGE][,CIDR-RANGE…]] \
    [--source-tags [TAG][,TAG,...]] \
    [--source-service-accounts=[IAM Service Account] \
    [--destination-ranges [CIDR-RANGE][,CIDR-RANGE...]] \
    [--rules ([PROTOCOL][:PORT[-PORT]],[PROTOCOL[:PORT[-PORT]],...]] | all ) \
    [--disabled | --no-disabled]
    [--enable-logging | --no-enable-logging] (requires `gcloud beta`)

パラメータは以下のように使用します。各パラメータの詳細については、SDK リファレンス ドキュメントをご覧ください。

  • --network: ルールを作成するネットワークです。省略した場合、ルールは default ネットワークに作成されます。
  • --priority: ルールの優先度を示す数値です。数字が小さいほど優先度が高くなります。
  • --direction: トラフィックの方向であり、ingressegress のいずれかです。
  • --action: 一致したときのアクションであり、allowdeny のいずれかです。--rules フラグとともに使用する必要があります。
  • ターゲットは、次の 3 つの方法のいずれかで指定します。
    • ルールをネットワーク内のすべてのターゲットに適用する場合は、--target-tags--target-service-accounts を省略します。
    • --target-tags: ネットワーク タグを使用してターゲットを定義する場合は、このフラグを使用します。
    • --target-service-accounts: 関連するサービス アカウントを使用してターゲットを定義する場合は、このフラグを使用します。
  • 上りルールの場合は、ソースを指定します。
    • 上りのソースを任意の場所(0.0.0.0/0)にする場合は、--source-rangessource-tags--source-service-accounts を省略します。
    • --source-ranges: ソース IP アドレスの範囲を CIDR 形式で指定する場合は、このフラグを使用します。
    • --source-tags: ネットワーク タグによってソース インスタンスを指定する場合は、このフラグを使用します。ソースタグによるフィルタリングを使用できるのは、サービス アカウントによってターゲットが指定されていない場合に限られます。詳しくは、サービス アカウントによるフィルタリングとネットワーク タグによるフィルタリングをご覧ください。
    • --source-ranges--source-tags は併用できます。両方が指定されている場合、有効なソースセットは、ソース範囲の IP アドレスと、ネットワーク タグによって特定されるインスタンスの和集合です(タグ付けされたインスタンスがソース範囲の IP を持たない場合であっても対象に含まれます)。
    • --source-service-accounts: 使用するサービス アカウントでインスタンスを指定する場合は、このフラグを使用します。ソースのサービス アカウントによるフィルタリングを使用できるのは、ネットワーク タグによってターゲットが指定されていない場合に限られます。詳しくは、サービス アカウントによるフィルタリングとネットワーク タグによるフィルタリングをご覧ください。
  • 下りルールの場合は、送信先を指定します。
    • 下りの送信先を任意の場所(0.0.0.0/0)にする場合は、--destination-ranges を省略します。
    • --destination-ranges: 送信先 IP アドレスの範囲を CIDR 形式で指定する場合は、このフラグを使用します。
  • --rules: ルールの適用先にするプロトコルとポートのリストです。すべてのプロトコルとポートにルールを適用する場合は、all を使用します。--action フラグが必要です。
  • デフォルトでは、ファイアウォール ルールが作成されると自動的に適用されますが、この動作は変更できます。
    • --disabled--no-disabled の両方が省略されている場合は、ファイアウォール ルールが作成され、適用されます。
    • --disabled: ファイアウォール ルールを作成するが適用しない場合は、このフラグを追加します。ファイアウォール ルールを更新して有効にするまで、ファイアウォール ルールは無効状態のままになります。
    • --no-disabled: ファイアウォール ルールを確実に適用するには、このフラグを追加します。
  • (ベータ版)ルールを作成または更新するときに、ファイアウォール ルール ロギングを有効にできます。ファイアウォール ルール ロギングを使用すると、ファイアウォール ルールの効果を監査、検証、分析できます。詳しくは、ファイアウォール ルール ロギングをご覧ください。

ファイアウォール ルールを更新する

ファイアウォール ルールでは、名前、ネットワーク、一致したときのアクショントラフィックの方向を除くすべてのコンポーネントを変更できます。

名前、ネットワーク、アクション、方向のコンポーネントを変更する必要がある場合は、ルールを削除して新しいルールを作成する必要があります。

Console

  1. Google Cloud Platform Console で [ファイアウォール ルール] ページに移動します。
    [ファイアウォール ルール] ページに移動
  2. 変更するファイアウォール ルールをクリックします。
  3. [編集] をクリックします。
  4. いずれかの編集可能コンポーネントをニーズに合うように変更します。

    複数のプロトコルを指定する場合は、[指定したプロトコルとポート] フィールドでセミコロン区切りリストとして指定します。

  5. [保存] をクリックします。

gcloud

ファイアウォール ルールを更新するための gcloud コマンドは次のとおりです。

gcloud compute firewall-rules update [NAME] \
    [--priority=[PRIORITY]] \
    [--description=[DESCRIPTION]] \
    [--target-tags=[[TAG],…]] \
    [--target-service-accounts=[IAM Service Account] \
    [--source-ranges=[[CIDR_RANGE],…]] \
    [--source-tags=[[TAG],…]] \
    [--source-service-accounts=[IAM Service Account] \
    [--destination-ranges=[CIDR_RANGE,…]] \
    [--rules=[[PROTOCOL][:PORT[-PORT]],…]] \
    [--disabled | --no-disabled]
    [--enable-logging | --no-enable-logging] (requires `gcloud beta`)

各フラグの説明は、ファイアウォール ルールの作成の場合と同じです。各フラグの詳細については、SDK リファレンス ドキュメントをご覧ください。

VPC ネットワークのファイアウォール ルールを一覧表示する

Console

プロジェクト内のすべてのネットワークのファイアウォール ルールをすべて表示するには:

特定のネットワーク内のファイアウォール ルールを表示するには:

  1. Google Cloud Platform Console で [VPC ネットワーク] ページに移動します。
    [VPC ネットワーク] ページに移動
  2. VPC ネットワークの名前をクリックして、その詳細ページに移動します。
  3. ネットワークの詳細ページで、[ファイアウォール ルール] タブをクリックします。

gcloud

次のコマンドを実行すると、特定のネットワーク([NETWORK_NAME])に関するファイアウォール ルールの並べ替え済みリストが出力されます。

gcloud compute firewall-rules list --filter network=[NETWORK_NAME] \
    --sort-by priority \
    --format="table(
        name,
        network,
        direction,
        priority,
        sourceRanges.list():label=[SRC_RANGES],
        destinationRanges.list():label=[DEST_RANGES],
        allowed[].map().firewall_rule().list():label=ALLOW,
        denied[].map().firewall_rule().list():label=DENY,
        sourceTags.list():label=[SRC_TAGS],
        targetTags.list():label=[TARGET_TAGS]
        )"

VM インスタンスのネットワーク インターフェースのファイアウォール ルールを一覧表示する

GCP Console には、インターフェースに適用されるすべてのファイアウォール ルールと、実際にインターフェースで使用されているルールの一覧がネットワーク インターフェースごとに表示されます。ファイアウォール ルールは他のルールをマスキングできるため、インターフェースに適用されるすべてのルールが実際にインターフェースで使用されないことがあります。

ファイアウォール ルールを VM インスタンスに関連付けて適用するには、ルールの target パラメータを使用します。適用されているすべてのルールを表示して、特定のルールがインターフェースに適用されているかどうかを確認できます。

VM インスタンスの特定のネットワーク インターフェースに適用されているファイアウォール ルールを表示するには:

  1. Google Cloud Platform Console で [VM インスタンス] ページに移動し、表示するインスタンスを見つけます。
    [VM インスタンス] ページに移動
  2. インスタンスのその他の操作メニュー()で、[ネットワークの詳細の表示] を選択します。
  3. インスタンスに複数のネットワーク インターフェースがある場合は、[ネットワーク インターフェースの詳細] セクションに表示するネットワーク インターフェースを選択します。
  4. [ファイアウォール ルール] タブをクリックすると、ネットワーク インターフェースに適用されているすべてのルールがルール名順に表示されます。

ネットワーク インターフェースでは、そのインターフェースに適用されているルールのすべてが使用されるわけではありません。一部のルールが、より具体的な範囲を持つルールや優先度の高いルールで上書きされることがあります。使用中のルールを表示して、どの IP 範囲、プロトコル、ポートがインスタンスに対して開いているか閉じているかをすばやく確認できます。

VM インスタンスの特定のネットワーク インターフェースで使用されているファイアウォール ルールを表示するには:

  1. Google Cloud Platform Console で [VM インスタンス] ページに移動し、表示するインスタンスを見つけます。
    [VM インスタンス] ページに移動
  2. インスタンスのその他の操作メニュー()で、[ネットワークの詳細の表示] を選択します。
  3. インスタンスに複数のネットワーク インターフェースがある場合は、[ネットワーク インターフェースの詳細] セクションに表示するネットワーク インターフェースを選択します。
  4. [ネットワーク分析] セクションの [上り分析] タブまたは [下り分析] タブを選択します。
  5. IP アドレス範囲が最も具体的なものから順にテーブルに表示されるので、特定の IP アドレスとの間のトラフィックが許可されているかどうかを確認します。

ファイアウォール ルールの詳細を表示する

ファイアウォール ルールを調べると、名前、適用されるネットワーク、コンポーネントなどの情報を確認できます(ルールの有効 / 無効も確認できます)。

Console

  1. ファイアウォール ルールを一覧表示します。すべてのルールのリスト、または特定のネットワーク内のルールのみを表示できます。
  2. 表示するルールをクリックします。

gcloud

次のコマンドを実行すると、個別のファイアウォール ルールの情報が出力されます。[FIREWALL_RULE_NAME] の部分は、ファイアウォール ルールの名前に置き換えてください。ファイアウォール ルールの名前はプロジェクトで一意であるため、既存のルールの情報を出力する場合、ネットワークを指定する必要はありません。

gcloud compute firewall-rules describe [FIREWALL_RULE_NAME]

ファイアウォール ルールを削除する

Console

  1. ファイアウォール ルールを一覧表示します。すべてのルールのリスト、または特定のネットワーク内のルールのみを表示できます。
  2. 削除するルールをクリックします。
  3. [削除] をクリックします。
  4. もう一度 [削除] をクリックして確定します。

gcloud

次のコマンドは、ファイアウォール ルールを削除します。[FIREWALL_RULE_NAME] の部分は、削除するルールの名前に置き換えてください。

gcloud compute firewall-rules delete [FIREWALL_RULE_NAME]

ファイアウォール ルールのモニタリング

ファイアウォール ルールのロギングを有効にして、どのルールがどのトラフィックを許可またはブロックしているかを確認できます。詳しくは、ファイアウォール ルール ロギングの使用をご覧ください。

構成例

次の図は、ファイアウォール構成の例を示しています。このシナリオには、以下を含めた my-network が含まれています。

  • IP 範囲が 10.240.10.0/24 のサブネット subnet1
  • IP 範囲が 192.168.1.0/24 のサブネット subnet2
  • タグが webserver、内部 IP が 192.168.1.2subnet2 内のインスタンス vm1
  • タグが database、内部 IP が 192.168.1.3subnet2 内のインスタンス vm2
ネットワーク構成例(クリックして拡大)
ネットワーク構成例(クリックして拡大)

例 1: subnet1 からポート 80 への接続を除くすべての上り TCP 接続を拒否する

この例では、subnet1 からポート 80 への接続を除くすべての上り TCP 接続を拒否するファイアウォール ルールのセットを作成します。

  1. webserver でタグ付けされたインスタンスへのすべての上り TCP トラフィックを拒否するファイアウォール ルールを作成します。

    gcloud compute firewall-rules create deny-subnet1-webserver-access \
        --network my-network \
        --action deny \
        --direction ingress \
        --rules tcp \
        --source-ranges 0.0.0.0/0 \
        --priority 1000 \
        --target-tags webserver
    
  2. webserver でタグ付けされたインスタンス上の TCP ポート 80 にアクセスする subnet110.240.10.0/24)内のすべての IP を許可するファイアウォール ルールを作成します。

    gcloud compute firewall-rules create vm1-allow-ingress-tcp-port80-from-subnet1 \
        --network my-network \
        --action allow \
        --direction ingress \
        --rules tcp:80 \
        --source-ranges 10.240.10.0/24 \
        --priority 50 \
        --target-tags webserver
    

例 2: vm1 のポート 80 への接続を除くすべての下り TCP 接続を拒否する

  1. すべての下り TCP トラフィックを拒否するファイアウォール ルールを作成します。

    gcloud compute firewall-rules create deny-all-access \
        --network my-network \
        --action deny \
        --direction egress \
        --rules tcp \
        --destination-ranges 0.0.0.0/0 \
        --priority 1000
    
  2. vm1 ポート 80 への TCP トラフィックを許可するファイアウォール ルールを作成します。

    gcloud compute firewall-rules create vm1-allow-egress-tcp-port80-to-vm1 \
        --network my-network \
        --action allow \
        --direction egress \
        --rules tcp:80 \
        --destination-ranges 192.168.10.2/32 \
        --priority 60
    

例 3: 外部ホストのポート 443 への下り TCP 接続を許可する

webserver でタグ付けされたインスタンスによるサンプル外部 IP アドレス 192.0.2.5 のポート 443 への下り TCP トラフィックの送信を許可するファイアウォール ルールを作成します。

gcloud compute firewall-rules create vm1-allow-egress-tcp-port443-to-192-0-2-5 \
    --network my-network \
    --action allow \
    --direction egress \
    --rules tcp:443 \
    --destination-ranges 192.0.2.5/32 \
    --priority 70 \
    --target-tags webserver

例 4: vm2 から vm1 への SSH 接続を許可する

タグ databasevm2)が付けられたインスタンスからタグ webservervm1)が付けられたインスタンスに到達する SSH トラフィックを許可するファイアウォール ルールを作成します。

gcloud compute firewall-rules create vm1-allow-ingress-tcp-ssh-from-vm2 \
    --network my-network \
    --action allow \
    --direction ingress \
    --rules tcp:22 \
    --source-tags database \
    --priority 80 \
    --target-tags webserver

例 5: サービス アカウントを使用し、ウェブサーバーからデータベースへの TCP: 1443 を許可する

サービス アカウントと役割の詳細については、サービス アカウントへの役割の付与をご覧ください。

テンプレート、ウェブサーバー アプリケーション my-sa-web、データベース アプリケーション「my-sa-db」を使用して自動スケーリングされる 2 つのアプリケーションを含む、以下の図のようなシナリオについて考えます。セキュリティ管理者は、ポート 1443 上で my-sa-web から my-sa-db への TCP フローを許可しようと考えています。

ファイアウォール ルールをサービス アカウントで使用する(クリックして拡大)
ファイアウォール ルールをサービス アカウントで使用する(クリックして拡大)

サービス アカウントの作成を含む設定手順は次のとおりです。

  1. プロジェクト編集者またはプロジェクト オーナーが、my-sa-webmy-sa-db というサービス アカウントを作成します

    gcloud iam service-accounts create my-sa-web \
        --display-name "webserver service account"
    
    gcloud iam service-accounts create my-sa-db \
        --display-name "database service account"
    
  2. プロジェクト オーナーが、IAM ポリシーを設定して、ウェブサーバー デベロッパー web-dev@example.com にサービス アカウント my-sa-webserviceAccountUser の役割を割り当てます。

    gcloud iam service-accounts add-iam-policy-binding \
       my-sa-web@my-project.iam.gserviceaccount.com \
       --member='user:web-dev@example.com' \
       --role='roles/iam.serviceAccountUser'
    
  3. プロジェクト オーナーが、IAM ポリシーを設定して、データベース デベロッパー db-dev@example.com にサービス アカウント my-sa-dbserviceAccountUser の役割を割り当てます。

    gcloud iam service-accounts add-iam-policy-binding \
       my-sa-db@my-project.iam.gserviceaccount.com \
       --member='user:db-dev@example.com' \
       --role='roles/iam.serviceAccountUser'
    
  4. インスタンス管理者の役割を持つデベロッパー web-dev@example.com が、ウェブサーバー インスタンス テンプレートを作成し、インスタンスをサービス アカウント my-sa-web として実行する権限を与えます。

    gcloud compute instance-templates create [INSTANCE_TEMPLATE_NAME]  \
        --service-account my-sa-web@my-project-123.iam.gserviceaccount.com
    
  5. インスタンス管理者の役割を持つデベロッパー db-dev@example.com が、データベース インスタンス テンプレートを作成し、インスタンスをサービス アカウント my-sa-web として実行する権限を与えます。

    gcloud compute instance-templates create [INSTANCE_TEMPLATE_NAME] \
        --service-account my-sa-db@my-project-123.iam.gserviceaccount.com
    
  6. セキュリティ管理者が、サービス アカウントを使用してファイアウォール ルールを作成し、サービス アカウント my-sa-web からサービス アカウント my-sa-db への TCP:1443 トラフィックを許可します。

    gcloud compute firewall-rules create [NAME] \
        --network network_a \
        --allow TCP:1443 \
        --source-service-accounts my-sa-web@my-project.iam.gserviceaccount.com \
        --target-service-accounts my-sa-db@my-project.iam.gserviceaccount.com
    

トラブルシューティング

ファイアウォール ルールの作成または更新時のエラー メッセージ

以下のエラー メッセージのいずれかが表示される場合があります。

  • Should not specify destination range for ingress direction.

    送信先の範囲が上りのファイアウォール ルールの有効なパラメータではありません。ファイアウォール ルールは、egress の方向が特に指定されていない限り、上りルールとみなされます。方向を指定しないルールを作成すると、上りルールとして作成され、このルールは送信先の範囲を許可しません。また、送信元の範囲も下りルールの有効なパラメータではありません。

  • Firewall direction cannot be changed once created.

    既存のファイアウォール ルールの方向は変更できません。正しいパラメータで新しいルールを作成してから、古いルールを削除する必要があります。

  • Firewall traffic control action cannot be changed once created.

    既存のファイアウォール ルールのアクションは変更できません。正しいパラメータで新しいルールを作成してから、古いルールを削除する必要があります。

  • Service accounts must be valid RFC 822 email addresses. ファイアウォール ルールで指定するサービス アカウントは、RFC 822 形式のメールアドレスである必要があります。

    gcloud compute firewall-rules create bad --allow tcp --source-service-accounts invalid-email
    

    Creating firewall...failed.
    ERROR: (gcloud.compute.firewall-rules.create) Could not fetch resource:

    • Invalid value for field 'resource.sourceServiceAccounts[0]': 'invalid-email'. Service accounts must be valid RFC 822 email addresses.
  • ServiceAccounts and Tags are mutually exclusive and can't be combined in the same firewall rule. 同じルール内にサービス アカウントとタグの両方を指定することはできません。

    gcloud compute firewall-rules create bad --allow tcp --source-service-accounts test@google.com --target-tags target
    

    Creating firewall...failed.
     ERROR: (gcloud.compute.firewall-rules.create) Could not fetch resource:

    • ServiceAccounts and Tags are mutually exclusive and can't be combined in the same firewall rule.
  • VM インスタンスに接続できない

    VM インスタンスに接続できない場合、ファイアウォール ルールを確認してください。

    1. 別の VM インスタンスから接続を開始する場合は、そのインスタンスの下りファイアウォール ルールを一覧表示します。

      gcloud compute firewall-rules list --filter network=[NETWORK_NAME] \
          --filter EGRESS \
          --sort-by priority \
          --format="table(
              name,
              network,
              direction,
              priority,
              sourceRanges.list():label=SRC_RANGES,
              destinationRanges.list():label=DEST_RANGES,
              allowed[].map().firewall_rule().list():label=ALLOW,
              denied[].map().firewall_rule().list():label=DENY,
              sourceTags.list():label=SRC_TAGS,
              sourceServiceAccounts.list():label=SRC_SVC_ACCT,
              targetTags.list():label=TARGET_TAGS,
              targetServiceAccounts.list():label=TARGET_SVC_ACCT
              )"
      
    2. 送信先 IP がすべての下りルールによって拒否されているかどうかを確認します。最も高い優先度(優先度の数字が最も小さいもの)を持つルールは、優先度がより低いルールよりも優先されます。同じ優先度を持つ 2 つのルールの場合、拒否ルールのほうが優先されます。

    3. ネットワークの上りファイアウォール ルールに送信先 VM インスタンスが含まれているかどうか確認します。

      gcloud compute firewall-rules list --filter network=[NETWORK_NAME] \
          --filter INGRESS \
          --sort-by priority \
          --format="table(
              name,
              network,
              direction,
              priority,
              sourceRanges.list():label=SRC_RANGES,
              destinationRanges.list():label=DEST_RANGES,
              allowed[].map().firewall_rule().list():label=ALLOW,
              denied[].map().firewall_rule().list():label=DENY,
              sourceTags.list():label=SRC_TAGS,
              sourceServiceAccounts.list():label=SRC_SVC_ACCT,
              targetTags.list():label=TARGET_TAGS,
              targetServiceAccounts.list():label=TARGET_SVC_ACCT
              )"
      

      出力例。出力は、ファイアウォール ルールのリストによって異なります。

      NAME                    NETWORK  DIRECTION  PRIORITY  SRC_RANGES    DEST_RANGES  ALLOW                         DENY  SRC_TAGS  SRC_SVC_ACCT      TARGET_TAGS  TARGET_SVC_ACCT
      default-allow-icmp      default  INGRESS    65534     0.0.0.0/0                  icmp
      default-allow-internal  default  INGRESS    65534     10.128.0.0/9               tcp:0-65535,udp:0-65535,icmp
      default-allow-rdp       default  INGRESS    65534     0.0.0.0/0                  tcp:3389
      default-allow-ssh       default  INGRESS    65534     0.0.0.0/0                  tcp:22
      firewall-with-sa        default  INGRESS    1000                                 tcp:10000                                     test1@google.com               target@google.com
      

    ファイアウォール ルールの有効 / 無効を確認する

    ファイアウォール ルールの有効 / 無効を確認するには、ファイアウォール ルールの詳細を表示します。

    Google Cloud Platform Console の [適用] で、[Enabled] または [Disabled] のどちらであるかを調べます。

    gcloud コマンドライン ツールの出力で、disabled フィールドを調べます。disabled:false である場合、ルールは有効で、適用されています。disabled: true である場合、ルールは無効です。

    VM インスタンスに適用されているルールを確認する

    新しいファイアウォール ルールを VPC ネットワークに追加し、10.1.2.3 のデータベース サーバーへの tcp:1433 を介したトラフィックを許可するとします。ルールを作成したら、そのルールが特定のインスタンスに正しく適用されているかどうかを確認できます。詳細については、VM インスタンスのネットワーク インターフェースのファイアウォール ルールを一覧表示するをご覧ください。

    次に示すコンソールの例では、[下り分析] タブにこの VM インスタンスの database-access ルールが表示されており、10.1.2.3 の下りトラフィックがポート 1433 で許可されていることがわかります。範囲 10.1.0.0/16 のその他の下りトラフィックは、deny-database-subnet ファイアウォール ルールによりブロックされます。

    VM インスタンスで許可されている下りトラフィック(クリックして拡大)
    VM インスタンスで許可されている下りトラフィック(クリックして拡大)

    次のステップ

    このページは役立ちましたか?評価をお願いいたします。