仮想マシン(VM)インスタンスとベアメタル インスタンスに静的外部 IP アドレスを割り当てることができます。インスタンスの静的 IP アドレスの変更、一覧取得、解放を行うこともできます。静的外部 IP アドレスを予約するには、静的外部 IP アドレスの予約をご覧ください。
外部 IP アドレスには、静的なものとエフェメラルなものがあります。変更されない固定外部 IP アドレスがインスタンスに必要な場合は、次の操作を行います。
- 静的外部 IP アドレスを取得します。新しい外部 IP アドレスを予約することも、既存のエフェメラル外部 IP アドレスを昇格させることもできます。
- 予約した IP アドレスを既存のインスタンスに割り当てるか、新しいインスタンスの作成時に割り当てます。
内部 Compute Engine ネットワーク上の静的 IP アドレスが必要な場合は、静的内部 IP アドレスの予約をご覧ください。
静的外部 IP アドレスの予約またはグローバル外部 IP アドレスの作成については、静的外部 IP アドレスを予約するをご覧ください。
始める前に
- IP アドレスの詳細をご覧ください。
- 静的外部 IP アドレスの割り当てと上限をご覧ください。
- 外部 IP アドレス料金をご覧ください。
-
まだ設定していない場合は、認証を設定します。認証とは、 Google Cloud サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のいずれかのオプションを選択して Compute Engine に対する認証を行います。
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
-
インスタンスを作成して更新する: Compute インスタンス管理者(v1)(
roles/compute.instanceAdmin.v1
) -
インスタンスに対する
compute.instances.update
-
インスタンスに対する
compute.instances.updateNetworkInterface
-
インスタンスに対する
compute.instances.addAccessConfig
-
インスタンスに対する
compute.instances.deleteAccessConfig
- ネットワークに対する
compute.networks.list
- サブネットに対する
compute.subnetworks.use
-
サブネットに対する
compute.subnetworks.list
-
インスタンスを作成する:
- プロジェクトに対する
compute.instances.create
- カスタム イメージを使用して VM を作成する: イメージに対する
compute.images.useReadOnly
- スナップショットを使用して VM を作成する: スナップショットに対する
compute.snapshots.useReadOnly
- インスタンス テンプレートを使用して VM を作成する: インスタンス テンプレートに対する
compute.instanceTemplates.useReadOnly
- レガシー ネットワークを VM に割り当てる: プロジェクトに対する
compute.networks.use
- VM の静的 IP アドレスを指定する: プロジェクトに対する
compute.addresses.use
- レガシー ネットワークの使用時に VM に外部 IP アドレスを割り当てる: プロジェクトに対する
compute.networks.useExternalIp
- VM のサブネットを指定する: プロジェクトまたは選択したサブネットに対する
compute.subnetworks.use
- VPC ネットワークの使用時に VM に外部 IP アドレスを割り当てる: プロジェクトまたは選択したサブネットに対する
compute.subnetworks.useExternalIp
- VM の VM インスタンス メタデータを設定する: プロジェクトに対する
compute.instances.setMetadata
- VM にタグを設定する: VM に対する
compute.instances.setTags
- VM にラベルを設定する: VM に対する
compute.instances.setLabels
- VM が使用するサービス アカウントを設定する: VM に対する
compute.instances.setServiceAccount
- VM に新しいディスクを作成する: プロジェクトに対する
compute.disks.create
- 既存のディスクを読み取り専用モードまたは読み取り / 書き込みモードでアタッチする: ディスクに対する
compute.disks.use
- 既存のディスクを読み取り専用モードでアタッチする: ディスクに対する
compute.disks.useReadOnly
- プロジェクトに対する
一度に複数のリソースが同じ静的外部 IP アドレスを使用することはできません。
IP アドレスをリソースに割り当てた後に、その IP アドレスが静的であるかエフェメラルであるかを確認する方法はありません。IP アドレスと、そのプロジェクトに予約されている静的外部 IP アドレスのリストを比較することは可能です。プロジェクトで使用可能な静的外部 IP アドレスのリストを表示するには、
gcloud compute addresses list
サブコマンドを使用します。各 VM には複数のネットワーク インターフェースを設定できます。各インターフェースには、スタックタイプに応じて次の IP アドレスを割り当てることができます。
- IPv4 専用インターフェース:
- 内部 IPv4 アドレス(必須)
- 外部 IPv4 アドレス(省略可)
- デュアルスタック(IPv4 と IPv6)インターフェース:
- 内部 IPv4 アドレス(必須)
- 外部 IPv4 アドレス(省略可)
/96
IPv6 アドレス範囲(内部または外部のどちらか一方)(必須)
- IPv6 専用インターフェース(プレビュー):
/96
IPv6 アドレス範囲(内部または外部のどちらか一方)(必須)
- IPv4 専用インターフェース:
IPv6 のみのネットワーク インターフェースを使用する VM の場合、外部 IPv6 アドレスの割り当て解除や変更を行うことはできません。ただし、リソースのエフェメラル外部 IP アドレスを静的外部 IP アドレスに昇格させることは可能です。その場合は、リソースが削除された後もアドレスの予約状態は継続されます。
静的 IP アドレスの名前は変更できません。
Google Cloud コンソールで、[IP アドレス] ページに移動します。
[外部 IP アドレス] をクリックします。
すべての IP アドレスのリストを取得するには、次のコマンドを使用します。
gcloud compute addresses list
すべてのグローバル IP アドレスを一覧取得するには、次のコマンドを使用します。
gcloud compute addresses list --global
特定のリージョンのすべてのリージョン IP アドレスのリストを取得するには、次のコマンドを使用します。
gcloud compute addresses list \ --regions=REGION
REGION
は、アドレスのリストを取得するリージョンに置き換えます。カンマ区切りでリージョン名を指定すると、複数のリージョンのアドレスのリストを取得できます。gcloud compute addresses list \ --regions=REGION1,REGION2,..REGION_n_
リージョン IPv4 アドレスまたはリージョン IPv6 アドレスのリストを取得するには、
addresses.list
メソッドを呼び出します。GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/addresses
次のように置き換えます。
PROJECT_ID
: このリクエストのプロジェクト IDREGION
: このリクエストのリージョン名
すべてのリージョンのアドレスのリストを取得するには、
addresses.aggregatedList
メソッドを呼び出します。GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/aggregated/addresses
グローバル IPv4 アドレスまたはグローバル IPv6 アドレスのリストを取得示するには、
globalAddresses.list
メソッドを呼び出します。GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/addresses
次のように置き換えます。
PROJECT_ID
: このリクエストのプロジェクト IDGoogle Cloud コンソールで、[インスタンスの作成] ページに移動します。
インスタンスに静的外部 IP アドレスを割り当てるには、次の操作を行います。
ナビゲーション メニューで、[ネットワーキング] をクリックします。
[ネットワーク インターフェース] セクションで次のオプションを使用して、インスタンスに必要なネットワーク インターフェースを指定します。
ネットワーク インターフェースを追加するには、[ネットワーク インターフェースを追加] をクリックします。次に、[ネットワーク] リストでネットワークを選択します。
ネットワーク インターフェースを削除するには、[
削除] をクリックします。
次のオプションのいずれかを選択します。
静的外部 IPv4 アドレスを割り当てるには、次の操作を行います。
- ネットワーク インターフェースを開きます。
- [外部 IPv4 アドレス] リストから IP アドレスを選択します。
静的外部 IPv6 アドレスを割り当てるには、次の操作を行います。
- 外部 IPv6 アドレス範囲を持つサブネットを含むネットワーク インターフェースを開きます。
- [サブネットワーク] リストからそのサブネットを選択します。
- [IP スタックタイプ] には、[IPv4 と IPv6(デュアルスタック)] または [IPv6(シングルスタック)] を選択します。
- [外部 IPv6 アドレス] リストから、新しく予約した外部 IPv6 アドレスを選択します。または、[静的外部 IPv6 アドレスを予約] を選択して、新しい静的外部 IPv6 アドレスを予約します。
- [ネットワーク サービス ティア] で [プレミアム] を選択します。
ネットワーク インターフェースの変更を終了するには、[完了] をクリックします。
インスタンス作成処理を続けます。
静的外部 IPv4 アドレスを割り当てるには、次の操作を行います。
gcloud compute instances create INSTANCE_NAME \ --zone=ZONE \ --address=IPV4_ADDRESS
静的外部 IPv6 アドレスを割り当てるには、次の操作を行います。
gcloud compute instances create INSTANCE_NAME \ --zone=ZONE \ --subnet=SUBNET \ --stack-type=STACK_TYPE \ --external-ipv6-address=IPV6_ADDRESS \ --external-ipv6-prefix-length=96 \ --ipv6-network-tier=PREMIUM
次のように置き換えます。
INSTANCE_NAME
: コンピューティング インスタンスの名前。ZONE
: インスタンスの作成先とするゾーンIPV4_ADDRESS
: インスタンスに割り当てる IPv4 アドレス。アドレス名ではなく、予約済みの静的外部 IP アドレスを使用してください。SUBNET
: 外部 IPv6 アドレスを含むサブネットSTACK_TYPE
: インスタンスのスタックタイプ。IPV4_IPV6
(デュアルスタック)またはIPV6_ONLY
IPV6_ADDRESS
: インスタンスに割り当てる IPv6 アドレス。アドレス名ではなく、予約済みの静的外部 IP アドレスを使用してください。
新しいコンピューティング インスタンスに静的外部 IPv4 アドレスを割り当てるには、次の操作を行います。
新しいインスタンスを作成するリクエストで、次のように、
networkInterfaces[].accessConfigs[].natIP
プロパティと使用する外部 IPv4 アドレスを明示的に指定します。{ "name": "INSTANCE_NAME", "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE", "networkInterfaces": [{ "accessConfigs": [{ "type": "ONE_TO_ONE_NAT", "name": "External NAT", "natIP": "IPV4_ADDRESS" }], "network": "global/networks/default" }], "disks": [{ "autoDelete": "true", "boot": "true", "type": "PERSISTENT", "initializeParams": { "sourceImage": "SOURCE_IMAGE" } }] }
次のように置き換えます。
INSTANCE_NAME
: コンピューティング インスタンスの名前ZONE
: インスタンスの作成先とするゾーンMACHINE_TYPE
: 省略可。インスタンスの作成時に使用するマシンタイプ リソースの完全な URL または部分的な URL(zones/ZONE/machineTypes/MACHINE_TYPE
形式)IPV4_ADDRESS
: インスタンスに割り当てる IPv4 アドレス。アドレス名ではなく、予約済みの静的外部 IP アドレスを使用してください。SOURCE_IMAGE
: 公開イメージの特定のバージョン(projects/debian-cloud/global/images/debian-10-buster-v20200309
など)またはイメージ ファミリー(projects/debian-cloud/global/images/family/debian-10
など)
新しいインスタンスに静的外部 IPv6 アドレスを割り当てるには、次の操作を行います。
新しいインスタンスを作成するリクエストで、次のように、
networkInterfaces[].ipv6AccessConfigs[].externalIpv6
プロパティと使用する外部 IPv6 アドレスを明示的に指定します。{ "name": "INSTANCE_NAME", "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE", "networkInterfaces": [{ "ipv6AccessConfigs": [{ "externalIpv6": "IPV6_ADDRESS", "externalIpv6PrefixLength": 96, "name": "external-ipv6-access-config", "networkTier": "PREMIUM", "type": "DIRECT_IPV6" }], "stackType": "STACK_TYPE", "subnetwork":"SUBNETWORK" }], "disks": [{ "autoDelete": "true", "boot": "true", "mode": "READ_WRITE", "type": "PERSISTENT", "initializeParams": { "sourceImage": "SOURCE_IMAGE" }, }], }
次のように置き換えます。
INSTANCE_NAME
: コンピューティング インスタンスの名前ZONE
: インスタンスの作成先とするゾーンMACHINE_TYPE
: 省略可。インスタンスの作成時に使用するマシンタイプ リソースの完全な URL または部分的な URL(zones/ZONE/machineTypes/MACHINE_TYPE
形式)IPV6_ADDRESS
: インスタンスに割り当てる IPv6 アドレス。アドレス名ではなく、予約済みの静的外部 IP アドレスを使用してください。STACK_TYPE
: インスタンスのスタックタイプ。IPV4_IPV6
(デュアルスタック)またはIPV6_ONLY
SUBNET
: 外部 IPv6 アドレスを含むサブネットSOURCE_IMAGE
: 公開イメージの特定のバージョン("projects/debian-cloud/global/images/debian-10-buster-v20200309"
など)またはイメージ ファミリー("projects/debian-cloud/global/images/family/debian-10"
など)
Google Cloud コンソールで [VM インスタンス] ページに移動します。
外部 IP アドレスを割り当てるインスタンスの名前をクリックします。[インスタンスの詳細] ページが表示されます。
[インスタンスの詳細] ページで、次の手順を実行します。
- [編集] をクリックします。
- [ネットワーク インターフェース] を開きます。
- インスタンスに割り当てることを必要とする外部 IP アドレスを選択します。インスタンスが IPv4 のみで、IPv6 アドレスを割り当てる場合は、まずスタックタイプをデュアルスタックに変更する必要があります。
- [外部 IPv4 アドレス] に、[エフェメラル] または静的外部 IPv4 アドレスを選択します。
- [外部 IPv6 アドレス] に、[エフェメラル] または静的外部 IPv6 アドレスを選択します。
- [完了] をクリックします。
[保存] をクリックします。
(省略可)静的外部 IP アドレスを予約します。
静的外部 IP アドレスを割り当てる場合は、アドレスを予約し、そのアドレスが別のリソースで使用されていないことを確認する必要があります。必要であれば、手順に沿って新しい静的外部 IP アドレスを予約するか、静的外部 IP アドレスの割り当てを解除します。
エフェメラル外部 IP アドレスを使用する場合は、この手順をスキップします。エフェメラル外部 IP アドレスは Compute Engine によってランダムに割り当てられます。
静的外部 IP アドレスの割り当てを解除するで説明されているように、既存の IP アドレス割り当てを削除します。
新しい外部 IP アドレスを割り当てます。
IPv4 アドレスを割り当てるには、
instances add-access-config
サブコマンドを使用します。注:IP_ADDRESS
を静的 IP の名前に置き換えないでください。実際の IP アドレスを使用する必要があります。gcloud compute instances add-access-config INSTANCE_NAME \ --access-config-name="ACCESS_CONFIG_NAME" --address=IP_ADDRESS
次のように置き換えます。
INSTANCE_NAME
: インスタンスの名前。ACCESS_CONFIG_NAME
: このアクセス構成ファイルの名前。引用符の中に完全な名前を指定してください。IP_ADDRESS
: 追加する IP アドレス。
Compute Engine で静的外部 IP アドレスを使用せずにエフェメラル外部 IP アドレスを割り当てる場合は、
--address IP_ADDRESS
プロパティを省略します。gcloud compute instances add-access-config INSTANCE_NAME \ --access-config-name="ACCESS_CONFIG_NAME"
インスタンスをデュアルスタックに変更して IPv6 アドレスを割り当てるには、
instance network-interfaces update
サブコマンドを使用します。gcloud compute instances network-interfaces update INSTANCE_NAME \ --network-interface=NIC \ --ipv6-network-tier=PREMIUM \ --stack-type=STACK_TYPE \ --external-ipv6-address=IPV6_ADDRESS \ --external-ipv6-prefix-length=96 \ --zone=ZONE
次のように置き換えます。
INSTANCE_NAME
: インスタンスの名前。NIC
: ネットワーク インターフェースの名前。STACK_TYPE
: インスタンスのスタックタイプ。IPV4_IPV6
にする必要があります。スタックタイプを IPV6_ONLY に変更することはできません。IPV6_ADDRESS
: インスタンスに割り当てる IPv6 アドレス。/96
範囲に存在する最初の IPv6 アドレスを指定します。ZONE
: インスタンスのゾーン。
静的外部 IP アドレスの割り当てを解除するで説明されているように、既存の IP アドレス割り当てを削除します。
既存のアクセス構成を削除するには、
instances.deleteAccessConfig
メソッドにPOST
リクエストを行います。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/deleteAccessConfig
instances.addAccessConfig
メソッドにPOST
リクエストを行い、VM インスタンスのネットワーク インターフェースに新しいアクセス構成を追加します。IPv4 アドレスの場合は、次のリクエストを行います。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/addAccessConfig { "natIP": "IPV4_ADDRESS", "name": "ACCESS_CONFIG_NAME" }
IPv6 アドレスの場合は、ネットワーク インターフェースの
stackType
をIPV4_IPV6
に更新し、networkInterfaces[].ipv6AccessConfigs[].externalIpv6
プロパティと、使用する外部 IPv6 アドレスを更新します。詳細については、新しいインスタンスに静的外部 IP アドレスを割り当てるをご覧ください。
- このリスト型制約はインスタンスにのみ適用できます。
- 過去にさかのぼって制約を適用することはできません。ポリシーを有効にする前から外部 IP アドレスを持つすべてのインスタンスは、外部 IP アドレスを保持します。
- この制約には、
allowedList
またはdeniedList
のいずれか一方を指定できます。両方を同一のポリシーに指定することはできません。 - インスタンスのライフサイクルと整合性の管理と維持は、必要な権限を持つユーザーまたは管理者の責任です。制約によってインスタンスの URI のみが検証され、許可リスト内のインスタンスの変更、削除、再作成を回避することはできません。
- [組織のポリシー] ページに移動します。
- 必要に応じて、組織をプロジェクト プルダウン メニューから選択します。
- [VM インスタンスに対して許可されている外部 IP を定義する] をクリックします。
- [編集] をクリックして外部 IP ポリシーを編集します。[編集] ツールにアクセスできない場合は、正しい権限を付与されていません。
[カスタマイズ] を選択し、特定のインスタンスに組織のポリシーを設定します。
必要な [ポリシーの適用] と [ポリシーの種類] を選択します。
[ポリシーの値] で [カスタム] を選択します。
インスタンスの URI を入力します。URI は、次の形式にする必要があります。
projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME
[新しいポリシーの値] をクリックし、必要に応じてインスタンスの URI を入力します。
[保存] をクリックして、制約を適用します。
PROJECT_ID
。このリクエストのプロジェクト ID(example-project
など)。これは、組織のポリシーを設定するときとは異なります。組織のポリシーの場合は組織の数値 ID が必要です。ZONE
: インスタンスのゾーンINSTANCE_NAME
: インスタンスの名前PROJECT_ID
。このリクエストのプロジェクト ID(example-project
など)。これは、組織のポリシーを設定するときとは異なります。組織のポリシーの場合は組織の数値 ID が必要です。ZONE
: インスタンスのゾーン。INSTANCE_NAME
: インスタンスの名前。この制約では
deniedValues
リストを使用しないでください。deniedValues
リストで値を定義した場合は、deniedValues
リストにあるインスタンスのみが外部 IP アドレスの使用を制限されます。外部 IP アドレスの使用が許可されるインスタンスを正確に制御したい場合、これはセキュリティ上の問題になる可能性があります。特定のインスタンスをallowedValues
リストから削除する場合は、deniedValues
リストにインスタンスを配置するのではなく、allowedList
からインスタンスを削除するように既存のポリシーを更新します。リソース階層の大部分にポリシーを設定し、特定のプロジェクトを除外する場合は、
setOrgPolicy
メソッドを使用してデフォルトのポリシーを復元します。restoreDefault
オブジェクトを指定して、そのプロジェクト内のすべてのインスタンスに外部 IP アドレスとの関連付けを許可します。プロジェクトの現在のポリシーは、デフォルト設定の影響を受けません。この組織のポリシーと IAM のロールを組み合わせて使用することにより、環境をより適切に管理できます。このポリシーはインスタンスにのみ適用されますが、ネットワーク デバイスの外部 IP アドレスをより適切に制御して制限するには、
compute.networkAdmin
ロールを適切な関係者に付与します。ポリシーが有効になっている組織またはプロジェクト内の Compute Engine 上で実行されるすべてのサービスとプロダクトは、この組織ポリシーの影響を受けます。特に、Google Kubernetes Engine、Dataflow、Dataproc、Cloud SQL などのサービスは、このポリシーの影響を受けます。これによって問題が生じた場合は、組織のポリシーが適用されない別のプロジェクト内に別のサービスまたはプロダクトをセットアップし、必要に応じて共有 VPC を使用することをおすすめします。
Google Cloud コンソールで、[IP アドレス] ページに移動します。
リストからアドレスを探し、[タイプ] 列で IP アドレスのタイプを確認します。
Google Cloud コンソールで、[IP アドレス] ページに移動します。
[外部 IP アドレス] をクリックします。
割り当てを解除する静的 IP アドレスを選択します。
[
アクションを表示] をクリックし、[別のリソースに再割り当て] オプションを選択します。[接続先] プルダウン リストから [なし] を選択します。
[OK] をクリックします。
gcloud compute addresses list
コマンドを使用して、静的 IP アドレスが使用されているかどうかを確認します。gcloud compute addresses list
出力は次のようになります。
NAME REGION ADDRESS STATUS example-address-ipv4 REGION 198.51.100.1 RESERVED example-address-new-ipv4 REGION 203.0.113.1 IN_USE example-address-ipv6 REGION 2001:db8:1:1:1:1:1:1 RESERVED example-address-new-ipv6 REGION 2001:db8:4:4:4:4:4:4 IN_USE
- IP アドレスが使用されていない場合、ステータスは
RESERVED
です。 - IP アドレスが使用中の場合、ステータスは
IN_USE
です。
- IP アドレスが使用されていない場合、ステータスは
IP アドレスを使用しているインスタンスの名前を取得します。
gcloud compute addresses describe ADDRESS_NAME \ --region=REGION
次のように置き換えます。
ADDRESS_NAME
: IPv6 アドレス リソースの名前。REGION
: IPv6 アドレス リソースのリージョン。
出力は次のようになります。
address: IP_ADDRESS addressType: EXTERNAL ... region: https://www.googleapis.com/compute/v1/projects/PROJECT/regions/REGION selfLink: https://www.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/addresses/ADDRESS_NAME status: IN_USE subnetwork: https://www.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/subnetworks/SUBNET users: - https://www.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/instances/INSTANCE_NAME
users
フィールドに、IP アドレスを使用しているインスタンスの名前が表示されます。インスタンスから IP アドレスの割り当てを解除します。
IPv4 アドレスの割り当てを解除するには、インスタンスのアクセス構成ファイルを削除します。
削除するアクセス構成の名前を取得します。名前を取得するには、
gcloud compute instances describe
コマンドを使用します。INSTANCE_NAME
は、インスタンス名で置き換えます。gcloud compute instances describe INSTANCE_NAME
アクセス構成は次の形式で表示されます。
networkInterfaces: - accessConfigs: - kind: compute#accessConfig name: external-nat natIP: 203.0.113.1 type: ONE_TO_ONE_NAT
gcloud compute instances delete-access-config
コマンドを使用して、アクセス構成を削除します。gcloud compute instances delete-access-config INSTANCE_NAME \ --access-config-name="ACCESS_CONFIG_NAME"
次のように置き換えます。
INSTANCE_NAME
: インスタンスの名前。ACCESS_CONFIG_NAME
: 削除するアクセス構成ファイルの名前。引用符の中に完全な名前を指定してください。
IPv6 アドレス範囲の割り当てを解除するには、
instance network-interfaces update
コマンドを使用します。gcloud compute instances network-interfaces update INSTANCE_NAME \ --network-interface=nic0 \ --stack-type=IPV4_ONLY \ --zone=ZONE
次のように置き換えます。
INSTANCE_NAME
: IP アドレスを使用しているインスタンスの名前。ZONE
: インスタンスのゾーン。
静的外部 IP アドレスのステータスが
IN_USE
からRESERVED
に変わり、使用可能になったことを確認します。gcloud compute addresses list \ --filter="ADDRESS_NAME AND region=REGION"
次のように置き換えます。
ADDRESS_NAME
: IP アドレス リソースの名前。REGION
: IP アドレス リソースのリージョン。
IPv4 アドレスの場合、そのアドレスを使用しているインスタンスに接続されたアクセス構成を削除します。
インスタンスのアクセス構成の詳細を確認するには、
instances.get
メソッドにGET
リクエストを発行します。GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME
既存のアクセス構成を削除するには、
instances.deleteAccessConfig
メソッドにPOST
リクエストを行います。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/deleteAccessConfig
次のように置き換えます。
PROJECT_ID
: このリクエストのプロジェクト IDZONE
: インスタンスが配置されているゾーンINSTANCE_NAME
: インスタンスの名前
IPv6 アドレスの場合は、IPv6 アドレスが割り当てられているインスタンスのネットワーク インターフェースのスタックタイプを更新します。
instances.updateNetworkInterface
メソッドにPATCH
リクエストを送信します。リクエストの本文で、
stackType
フィールドの値をIPV4_ONLY
に更新します。例:
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/updateNetworkInterface { "networkInterfaces": [{ ... "stackType" : "IPV4_ONLY" ... }] }
- IP アドレスについて学ぶ
- ネットワークとファイアウォールについて学ぶ
- 内部 DNS を使用して Compute Engine インスタンスを参照する方法を学ぶ
- VPC の料金を確認する
Terraform
ローカル開発環境でこのページの Terraform サンプルを使用するには、gcloud CLI をインストールして初期化し、ユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定します。
詳細については Set up authentication for a local development environment をご覧ください。
REST
このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
詳細については、 Google Cloud 認証ドキュメントの REST を使用して認証するをご覧ください。
必要なロール
静的 IP アドレスの構成と管理に必要な権限を取得するには、プロジェクトに対する次の IAM ロールを付与するよう管理者に依頼してください。
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
これらの事前定義ロールには、静的 IP アドレスの構成と管理に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
静的 IP アドレスの構成と管理には、次の権限が必要です。
カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。
制限事項
注: ネットワーク インターフェースは複数の転送ルールからトラフィックを受信できますが、ルールの中には他の外部 IP アドレスを対象とするものもあります。これらの転送ルールによって任意の数の外部 IP アドレスがネットワーク インターフェースを参照できますが、各ネットワーク インターフェースには、外部 IPv4 アドレスを 1 つと、外部の
/96
IPv6 アドレス範囲を 1 つだけ割り振ることができます。ロード バランシングと転送ルールの詳細については、ロード バランシングのドキュメントをご覧ください。
使用可能な静的外部 IP アドレスを表示する
プロジェクト用に予約した静的外部 IP アドレスのリストを取得するには、次の操作を行います。
コンソール
gcloud
gcloud compute addresses list
コマンドを実行します。API
Go
Java
Python
静的外部 IP アドレスを構成する
以降のセクションでは、インスタンスの静的外部 IP アドレスを構成する方法について説明します。
静的外部 IP アドレスを使用するインスタンスを作成する
静的外部 IP アドレスを予約したら、インスタンスに割り当てることができます。
コンソール
gcloud
インスタンスを作成し、すでに予約した静的リージョン外部 IP アドレスを割り当てることができます。
Terraform
google_compute_instance
リソースを使用して外部 IP アドレスを割り当てることができます。REST
Go
Java
Python
既存のインスタンスに外部 IP アドレスを割り当てるか、それを変更する
既存の IPv4 のみまたはデュアルスタック インスタンスに、エフェメラルまたは静的外部 IP アドレスを変更または割り当てることができます。この手順は、IPv6 のみのインスタンスではサポートされていません。
コンピューティング インスタンスには複数のインターフェースを設定できます。シングルスタック インターフェースには、1 つの外部 IP アドレスを設定できます。デュアルスタック インターフェースには、1 つの外部 IPv4 アドレスと 1 つの外部 IPv6 アドレスを設定できます。インスタンスにすでに外部 IP アドレスがある場合は、まずそのアドレスを削除する必要があります。その後、既存のインスタンスに新しい外部 IP アドレスを割り当てることができます。
コンソール
gcloud
REST
インスタンスの外部 IPv4 アドレスまたは外部 IPv6 アドレスを変更するには、そのインスタンスに新しいアクセス構成を追加します。
Go
Java
Python
外部 IP アドレスを特定のインスタンスに制限する
特定のワークロードでは、セキュリティやネットワークに関する制限など、基本的な要件が必要になることがあります。たとえば、特定のコンピューティング インスタンスのみが使用できるように外部 IP アドレスを制限できます。このオプションは、データの引き出しの防止や、ネットワーク分離の維持に役立ちます。組織ポリシーを使用すると、外部 IP アドレスを特定のインスタンスに制限し、組織内またはプロジェクト内のインスタンスに対する外部 IP アドレスの使用を制御できます。
インスタンスの外部 IP アドレスを制御するための制約は次のとおりです。
constraints/compute.vmExternalIpAccess
制約を使用するには、外部 IP アドレスを持つことができるインスタンスが
allowedList
に設定されたポリシーを指定します。ポリシーを指定しない場合は、すべてのインスタンスですべての外部 IP アドレスが許可されます。ポリシーを指定すると、allowedValues
リストに含まれるインスタンスにのみ、エフェメラルまたは静的な外部 IP アドレスを割り当てることができます。ポリシーで明示的に定義されていない組織内またはプロジェクト内の他の Compute Engine インスタンスでは、外部 IP アドレスの使用が禁止されています。許可リストと拒否リストでは、次のようなインスタンスの URI を使用してインスタンスを指定します。
projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME
外部 IP アドレスを制限するための仕様
外部 IP アドレスの制限に必要な権限
制約をプロジェクトまたは組織レベルで設定するには、組織での
orgpolicy.policyAdmin
ロールが付与されている必要があります。組織レベルでポリシー制約を設定する
コンソール
gcloud
外部 IP アクセスの制約を設定するには、組織 ID が必要です。組織 ID を確認するには、
organizations list
コマンドを実行して、そのレスポンスで数値 ID を探します。gcloud organizations list
gcloud CLI は、組織のリストを次の形式で返します。
DISPLAY_NAME ID example-organization1 29252605212 example-organization2 1234567890
gcloud resource-manager org-policies set-policy
コマンドを使用してポリシーを設定します。JSON ファイルでポリシーを指定する必要があります。次の形式の JSON ファイルを作成します。{ "constraint": "constraints/compute.vmExternalIpAccess", "listPolicy": { "allowedValues": [ "projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME", "projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME", "projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME" ] } }
次のように置き換えます。
または、外部 IP アドレスの取得を明示的に禁止するインスタンスを示す
deniedValues
リストを指定できます。このリストに含まれないすべてのインスタンスは、外部 IP アドレスを持つことが暗黙的に許可されます。allowedValues
またはdeniedValues
のどちらか一方だけ指定できます。次に、リクエストでこのファイルを渡します。
gcloud resource-manager org-policies set-policy MY_POLICY.JSON --organization=ORGANIZATION_ID
ORGANIZATION_ID
は、組織の数値 ID に置き換えます。外部 IP アクセスを必要としないインスタンスの場合は、
allValues
をDENY
に設定したポリシーを設定できます。{ "constraint": "constraints/compute.vmExternalIpAccess", "listPolicy": { "allValues": "DENY" } }
REST
setOrgPolicy()
API を使用して制約を定義します。allowedValue
リストに指定したインスタンスは、外部 IP アドレスを持つことが許可されます。また、外部 IP アドレスの取得を明示的に禁止するインスタンスを示すdeniedValues
リストを指定できます。このリストに含まれないすべてのインスタンスは、外部 IP アドレスを持つことが暗黙的に許可されます。allowedValues
またはdeniedValues
のどちらか一方だけ指定できます。たとえば、以下に示すのは、組織内の特定のプロジェクトのインスタンスが外部 IP アドレスを持つことができるように、
compute.vmExternalIpAccess
制約を組織に適用するリクエストです。POST https://cloudresourcemanager.googleapis.com/v1/organizations/ORGANIZATION_ID:setOrgPolicy
ORGANIZATION_ID
は組織の数値 ID です。次に、リクエスト本文で、この制約のポリシーを指定します。
{ "policy": { "constraint": "constraints/compute.vmExternalIpAccess", "listPolicy": { "allowedValues": [ "projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME", "projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME", "projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME" ] } } }
外部 IP アクセスを必要としないインスタンスの場合は、
allValues
をDENY
に設定したポリシーを設定できます。{ "policy": { "constraint": "constraints/compute.vmExternalIpAccess", "listPolicy": { "allValues": "DENY" } } }
プロジェクト レベルでのポリシーの設定
プロジェクト レベルでポリシーを設定すると、そのポリシーは組織レベルのポリシーよりも優先されます。たとえば、組織レベルでは
allowedValues
リストにexample-vm-1
があり、プロジェクト レベルのポリシーで同じインスタンスがdeniedValues
リストにある場合、インスタンスに外部 IP アドレスを割り当てることはできません。コンソール
組織レベルでのポリシー制約の設定と同じ手順を行いますが、組織ではなくプロジェクト セレクタでプロジェクトを選択してください。
gcloud
gcloud resource-manager org-policies set-policy
コマンドを使用してポリシーを設定します。JSON ファイルでポリシーを指定する必要があります。次の形式の JSON ファイルを作成します。{ "constraint": "constraints/compute.vmExternalIpAccess", "listPolicy": { "allowedValues": [ "projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME" ] } }
次のように置き換えます。
また、外部 IP アドレスの取得を明示的に禁止するインスタンスの
deniedValues
リストを指定できます。このリストに含まれないすべてのインスタンスは、外部 IP アドレスを持つことが暗黙的に許可されます。allowedValues
またはdeniedValues
のどちらか一方だけ指定できます。次に、リクエストでこのファイルを渡します。
gcloud resource-manager org-policies set-policy MY_POLICY.JSON --project=example-project
REST
setOrgPolicy
API を使用して制約を定義します。allowedValue
リストに指定したインスタンスは、外部 IP アドレスを持つことが許可されます。また、外部 IP アドレスの取得を明示的に禁止するインスタンスを示すdeniedValues
リストを指定できます。このリストに含まれないインスタンスは、外部 IP アドレスを持つことが暗黙的に許可されます。allowedValues
またはdeniedValues
を指定できますが、両方は指定できません。次の例は、特定のインスタンスが外部 IP アドレスを持つことを許可するように
compute.vmExternalIpAccess
制約をプロジェクトに設定するリクエストです。POST https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setOrgPolicy
PROJECT_ID
は、このリクエストのプロジェクト ID で置き換えます。リクエストの本文にはこの制約のポリシーを格納します。
{ "policy": { "constraint": "constraints/compute.vmExternalIpAccess", "listPolicy": { "allowedValues": [ "projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME" ] } } }
外部 IP アドレスの制限に関するベスト プラクティス
静的外部 IP アドレスを管理する
以降のセクションでは、インスタンスの静的外部 IP アドレスを管理する方法について説明します。
内部 IP アドレスがエフェメラルか静的かを判別する
静的内部 IP アドレスとエフェメラル内部 IP アドレスは、ほとんどのコンテキストで同じように動作します。ただし、静的内部 IP アドレスを使用すると、リソースを削除して再作成した場合でも、同じリソースには同じ IP アドレスを使用できます。通常、特定のリソースを停止または削除すると、エフェメラル IP アドレスが 1 つ解放されます。
アドレスが静的かエフェメラルかを判別するには、次のようにします。
静的外部 IP アドレスの割り当てを解除する
IP アドレスの割り当てを解除すると、その IP アドレスはリソースから削除されますが、予約されたままになります。IP アドレスの割り当てを解除したら、その IP アドレスを別のリソースに再割り当てできます。この手順はデュアルスタック インスタンスでサポートされていますが、IPv6 のみのインスタンスではサポートされていません。
インスタンスを削除して、IPv4 アドレスまたは IPv6 アドレスの割り当てを解除することもできます。
コンソール
gcloud
これで指定の静的外部 IP アドレスが使用可能になったので、別のインスタンスに割り当てることができます。
REST
静的外部 IPv4 アドレスまたは静的外部 IPv6 アドレスの割り当てを解除するには、次の操作を行います。
Java
Python
静的外部 IP アドレスを解放する
静的外部 IPv4 アドレスや静的外部 IPv6 アドレスが不要になったら、IP アドレス リソースを削除して IP アドレスを解放できます。インスタンスを削除しても、静的外部 IP アドレスは自動的に解放されません。静的外部 IP アドレスが不要になったら手動で解放する必要があります。
静的外部 IP アドレスを解放するには、VPC ドキュメントの静的外部 IP アドレスを解放するをご覧ください。
次のステップ
特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンスにより使用許諾されます。コードサンプルは Apache 2.0 ライセンスにより使用許諾されます。詳しくは、Google Developers サイトのポリシーをご覧ください。Java は Oracle および関連会社の登録商標です。
最終更新日 2025-03-27 UTC。
-