外部 IP が設定された Compute Engine インスタンス

VM に外部 IP が必要か確認し、ファイアウォール、管理経路、サービスの認証を適切に設定してください。

説明

Compute Engine VM の外部 IP は、インターネットから接続する経路になり得ます。実際のアクセスにはファイアウォールの許可、ネットワーク経路、待ち受け中のサービスも必要であり、外部 IP 自体が匿名アクセスを許可するわけではありません。内部用 VM には外部 IP を割り当てず、必要な管理・通信経路を別途構成してください。

想定される影響

  • ファイアウォールの許可範囲も広い場合、外部クライアントが管理ポートやアプリケーションへの接続を試みる可能性があります。
  • 公開されたサービスの脆弱性や漏えいした認証情報が悪用されると、データの参照・変更やサービス停止につながるおそれがあります。

対処方法

  1. 外部 IP が業務上必要か確認し、不要なアドレスを削除してください。管理には IAP や VPN などの承認済み経路を用意し、必要な外向き通信には Cloud NAT などを検討してください。
  2. ファイアウォールの送信元、対象、ポートを必要最小限にし、サービスの認証と権限を確認してください。
  3. google.cloud 1.14.0 の gcp_compute_instance は、既存 VM の network_interfaces を更新しません。既存の外部 IP は、対応する Console、gcloud、API の操作で削除し、管理とアプリケーションの接続をテストしてください。

例

新規 VM のネットワーク設定を比較する抜粋です。実際のプロジェクト、認証情報、マシンタイプ、ブートディスク、ネットワークの入力は別途用意してください。

変更前

yaml
- name: 인스턴스 생성
  google.cloud.gcp_compute_instance:
    name: test-object
    network_interfaces:
      - network: "{{ network }}"
        access_configs:
          - name: External NAT
            nat_ip: "{{ address }}"
            type: ONE_TO_ONE_NAT
    zone: us-central1-a
    project: "{{ project_id }}"
    auth_kind: serviceaccount
    state: present

access_configs で外部 IPv4 アドレスを設定しています。接続できるかどうかは、ファイアウォールとサービスの設定にも依存します。

変更後

yaml
- name: 인스턴스 생성
  google.cloud.gcp_compute_instance:
    name: test-object
    network_interfaces:
      - network: "{{ network }}"
    zone: us-central1-a
    project: "{{ project_id }}"
    auth_kind: serviceaccount
    state: present

新規 VM に外部 IPv4 アドレスを要求しない設定です。既存 VM にこのタスクを再実行するだけでは、外部 IP は削除されません。

参考資料