説明
Compute Engine VM の外部 IP は、インターネットから接続する経路になり得ます。実際のアクセスにはファイアウォールの許可、ネットワーク経路、待ち受け中のサービスも必要であり、外部 IP 自体が匿名アクセスを許可するわけではありません。内部用 VM には外部 IP を割り当てず、必要な管理・通信経路を別途構成してください。
想定される影響
- ファイアウォールの許可範囲も広い場合、外部クライアントが管理ポートやアプリケーションへの接続を試みる可能性があります。
- 公開されたサービスの脆弱性や漏えいした認証情報が悪用されると、データの参照・変更やサービス停止につながるおそれがあります。
対処方法
- 外部 IP が業務上必要か確認し、不要なアドレスを削除してください。管理には IAP や VPN などの承認済み経路を用意し、必要な外向き通信には Cloud NAT などを検討してください。
- ファイアウォールの送信元、対象、ポートを必要最小限にし、サービスの認証と権限を確認してください。
google.cloud1.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 は削除されません。