
【アップデート】Cloud Number RegistryがPreviewでリリースされました #GoogleCloudNext
はじめに
こんにちは。
クラウド事業本部コンサルティング部の渡邉です。
2026年4月22日、Google Cloud Next '26 にて Cloud Number Registry が Preview として発表されました。
Cloud Number Registry は、Google Cloud 上の IP アドレス使用状況を一元的に可視化・管理・計画できる IPAM(IP Address Management)サービスです。
大規模な Google Cloud 環境では、VPC ネットワークやサブネットが増えるにつれて「どの IP アドレスが使われているか」「空き IP はどこにあるか」を把握することが難しくなります。Cloud Number Registry はこの課題を解決するためのサービスです。
今回は Cloud Number Registry の概要、主な機能、そして gcloud CLI を使ったハンズオンを紹介します。
Cloud Number Registry とは
Cloud Number Registry は、Google Cloud 上の IP アドレスリソースを組織全体で一元管理するための IPAM サービスです。
主にできることは以下の3つです。
| できること | 説明 |
|---|---|
| IP アドレス使用率の確認 | サブネットやカスタム範囲ごとに使用率を可視化する |
| 空き IP アドレスの検索 | 指定したプレフィックス長の空き IP 範囲を見つける |
| IP リソースの検索 | レルム・IP アドレス・属性などで IP リソースを検索する |
主なリソース
Cloud Number Registry を理解するうえで、4つの主要リソースを把握しておく必要があります。
IPAM admin scope
Cloud Number Registry の設定起点となるリソースです。専用プロジェクトで IPAM admin scope を作成すると、親組織配下の Compute Engine リソース(VPC・サブネット・IP アドレスなど)の探索(ディスカバリー)が開始されます。
1つの組織に対して、IPAM admin scope を持てるプロジェクトは 1つだけ です。そのため、Cloud Number Registry 専用のプロジェクトを作成することが強く推奨されています。
Registry book
IP アドレス管理情報を格納するコンテナです。IPAM admin scope を作成すると default という名前のレジストリブックが自動作成され、ディスカバリーしたリソースが格納されます。
追加のレジストリブックを作成し、プロジェクトを「claimed scope」として割り当てることで、リソースを分類管理できます。1つのプロジェクトは1つのレジストリブックにしか割り当てられません。
Realm
ネットワークルーティングドメインを表す、IP アドレス範囲の集合です。ディスカバリーによって VPC ネットワークごとにレルムが自動作成されます。
カスタムレルムを作成して、Google Cloud 外部の IP 範囲(オンプレミスなど)を含めることも可能です。
Discovered range / Custom range
| 種類 | 説明 |
|---|---|
| Discovered range | ディスカバリーによって自動インポートされた IP 範囲(VPC サブネット・IP アドレスなど)。直接変更は不可(Compute Engine リソースを変更すると反映される) |
| Custom range | ユーザーが手動で追加した IP 範囲。直接更新・削除が可能 |
サポートされるリソース
ディスカバリーでインポートされる Compute Engine リソースは以下の通りです。
| レルム | 含まれるリソース |
|---|---|
| VPC ネットワーク(内部 IPv4) | サブネットのプライマリ/セカンダリ IPv4 範囲、エフェメラル/予約済み内部 IPv4 アドレス |
| VPC ネットワーク(内部 IPv6) | サブネットの内部 IPv6 範囲、エフェメラル/予約済み内部 IPv6 範囲 |
google-owned-ipv4 |
エフェメラル/予約済み外部 IPv4 アドレス |
google-owned-ipv6 |
サブネットの外部 IPv6 範囲、予約済み外部 IPv6 範囲 |
やってみた
前提条件
- 組織(Organization)が設定されていること
- Cloud Number Registry 専用のプロジェクトを用意すること(既存プロジェクトへの混在は非推奨)
- IAM ロールとして
roles/cloudnumberregistry.ipamAdminが必要になります。
1. API の有効化
まずは、Cloud Number Registry 専用プロジェクトの Cloud Shell で gcloud コマンドを使って Cloud Number Registry API を有効にします。
gcloud services enable cloudnumberregistry.googleapis.com
2. 利用可能かどうか確認する
組織で Cloud Number Registry を構成できるプロジェクトは1つだけです。
同一組織内で既に設定済みのプロジェクトがないかgcloudコマンドを利用することで確認することができます。
gcloud alpha number-registry ipam-admin-scopes check-availability \
--scopes=organizations/YOUR_ORG_ID \
--location=global
以下のレスポンスが返されました。
scopeAvailabilities:
- availability: AVAILABLE
scope: organizations/YOUR_ORG_ID
AVAILABLE が返れば設定可能です。UNAVAILABLE の場合は既に別のプロジェクトで設定済みです。
これでIPAMの設定をすることが可能なことがわかりました。
3. IPAM admin scope を作成する
gcloud alpha number-registry ipam-admin-scopes create my-ipam-scope \
--enabled-addon-platforms=gce \
--scopes=organizations/YOUR_ORG_ID \
--location=global
設定が完了するまで少し時間がかかります。
Create request issued for: [my-ipam-scope]
Waiting for operation [projects/*****/locations/global/operations/*****] to complete...done.
Created ipamAdminScope [my-ipam-scope].
以下のコマンドを実行してステータスを確認します。
gcloud alpha number-registry ipam-admin-scopes describe my-ipam-scope \
--location=global
レスポンスが返ってきました。
createTime: '2026-04-23T22:57:45.199690103Z'
enabledAddonPlatforms:
- COMPUTE_ENGINE
name: projects/*****/locations/global/ipamAdminScopes/my-ipam-scope
scopes:
- organizations/*****
state: SETUP_IN_PROGRESS
updateTime: '2026-04-23T22:57:59.206255425Z'
SETUP_IN_PROGRESSの場合は、セットアップは開始されたが、同期は完了していない状態です。
少し時間をおいて再度コマンドを実行してみます。
createTime: '2026-04-23T22:57:45.199690103Z'
enabledAddonPlatforms:
- COMPUTE_ENGINE
name: projects/*****/locations/global/ipamAdminScopes/my-ipam-scope
scopes:
- organizations/*****
state: READY_FOR_USE
updateTime: '2026-04-23T22:57:59.206255425Z'
READY_FOR_USEの場合は、同期が完了し、Cloud Number Registry を使用できる状態になります。
4. レジストリブックの確認
まずは、現時点でのレジストリブックの一覧を取得してみます。
gcloud alpha number-registry registry-books list \
--location=global
デフォルトのレジストリブックが作成されています。
createTime: '2026-04-23T22:57:46.704329908Z'
isDefault: true
name: projects/*****/locations/global/registryBooks/default
updateTime: '2026-04-23T22:57:47.184329741Z'
5. レルムの確認
現時点でのレルムの情報も取得してみます。
gcloud alpha number-registry realms list \
--location=global
createTime: '2026-04-23T22:57:50.745441490Z'
discoveryMetadata:
createTime: '2026-04-23T22:57:50.701211Z'
eventTime: '2026-04-23T22:57:50.701187Z'
resource: projects/*****/locations/global/realms/google-owned-ipv4
resourceUri: https://cloudnumberregistry.googleapis.com/v1/projects/*****/locations/global/realms/google-owned-ipv4
sourceId: //cloudnumberregistry.googleapis.com/projects/*****/locations/global/realms/google-owned-ipv4
sourceSubId: google-owned-ipv4
state: EXISTS
updateTime: '2026-04-23T22:57:50.701215Z'
ipVersion: IPV4
managementType: CNR
name: projects/*****/locations/global/realms/google-owned-ipv4
registryBook: projects/*****/locations/global/registryBooks/default
trafficType: INTERNET
updateTime: '2026-04-23T22:57:51.236960371Z'
---
createTime: '2026-04-23T22:57:53.439236977Z'
discoveryMetadata:
createTime: '2026-04-23T22:57:53.400333Z'
eventTime: '2026-04-23T22:57:53.400312Z'
resource: projects/*****/locations/global/realms/google-owned-ipv6
resourceUri: https://cloudnumberregistry.googleapis.com/v1/projects/*****/locations/global/realms/google-owned-ipv6
sourceId: //cloudnumberregistry.googleapis.com/projects/*****/locations/global/realms/google-owned-ipv6
sourceSubId: google-owned-ipv6
state: EXISTS
updateTime: '2026-04-23T22:57:53.400336Z'
ipVersion: IPV6
managementType: CNR
name: projects/*****/locations/global/realms/google-owned-ipv6
registryBook: projects/*****/locations/global/registryBooks/default
trafficType: INTERNET
updateTime: '2026-04-23T22:57:53.725048844Z'
この時点では google-owned-ipv4 と google-owned-ipv6 の2つのレルムのみが表示されており、組織内に存在する VPC ネットワークのレルムが追加されていませんでした。
再作成後は VPC ネットワークのレルムが正しく追加されます。Preview 段階のバグと思われます。
createTime: '2026-04-24T04:25:07.458745296Z'
discoveryMetadata:
createTime: '2025-12-21T04:21:35.941Z'
eventTime: '2026-04-23T22:00:00Z'
resource: projects/*****/global/networks/dns-lab-vpc-hub
resourceUri: https://www.googleapis.com/compute/v1/projects/*****/global/networks/dns-lab-vpc-hub
sourceId: //compute.googleapis.com/projects/*****/locations/global/networks/dns-lab-vpc-hub
sourceSubId: private-ipv4
state: EXISTS
updateTime: '2025-12-21T05:32:31.732636Z'
ipVersion: IPV4
managementType: CNR
name: projects/*****/locations/global/realms/vpc-global-*****-*****
registryBook: projects/*****/locations/global/registryBooks/default
trafficType: PRIVATE
updateTime: '2026-04-24T04:25:08.109980228Z'
---
createTime: '2026-04-24T04:25:11.197895153Z'
discoveryMetadata:
createTime: '2025-10-10T04:56:13.451Z'
eventTime: '2026-04-23T22:00:00Z'
resource: projects/*****/global/networks/spoke-vpc01
resourceUri: https://www.googleapis.com/compute/v1/projects/*****/global/networks/spoke-vpc01
sourceId: //compute.googleapis.com/projects/*****/locations/global/networks/spoke-vpc01
sourceSubId: private-ipv4
state: EXISTS
updateTime: '2025-10-10T04:56:23.205949Z'
ipVersion: IPV4
managementType: CNR
name: projects/*****/locations/global/realms/vpc-global-*****-*****
registryBook: projects/*****/locations/global/registryBooks/default
trafficType: PRIVATE
updateTime: '2026-04-24T04:25:11.870053266Z'
---
createTime: '2026-04-24T03:59:37.897868050Z'
discoveryMetadata:
createTime: '2026-04-24T03:59:37.852968Z'
eventTime: '2026-04-24T03:59:37.852947Z'
resource: projects/*****/locations/global/realms/google-owned-ipv4
resourceUri: https://cloudnumberregistry.googleapis.com/v1/projects/*****/locations/global/realms/google-owned-ipv4
sourceId: //cloudnumberregistry.googleapis.com/projects/*****/locations/global/realms/google-owned-ipv4
sourceSubId: google-owned-ipv4
state: EXISTS
updateTime: '2026-04-24T03:59:37.852971Z'
ipVersion: IPV4
managementType: CNR
name: projects/*****/locations/global/realms/google-owned-ipv4
registryBook: projects/*****/locations/global/registryBooks/default
trafficType: INTERNET
updateTime: '2026-04-24T03:59:38.247270132Z'
---
createTime: '2026-04-24T03:59:40.600047600Z'
discoveryMetadata:
createTime: '2026-04-24T03:59:40.551313Z'
eventTime: '2026-04-24T03:59:40.551299Z'
resource: projects/*****/locations/global/realms/google-owned-ipv6
resourceUri: https://cloudnumberregistry.googleapis.com/v1/projects/*****/locations/global/realms/google-owned-ipv6
sourceId: //cloudnumberregistry.googleapis.com/projects/*****/locations/global/realms/google-owned-ipv6
sourceSubId: google-owned-ipv6
state: EXISTS
updateTime: '2026-04-24T03:59:40.551316Z'
ipVersion: IPV6
managementType: CNR
name: projects/*****/locations/global/realms/google-owned-ipv6
registryBook: projects/*****/locations/global/registryBooks/default
trafficType: INTERNET
updateTime: '2026-04-24T03:59:40.870836632Z'
6. Discovered ranges の確認
IPAM admin scope の再作成後、レルムの確認に合わせて検出済みの IP 範囲(Discovered ranges)も確認します。
gcloud alpha number-registry discovered-ranges list \
--location=global
組織内の VPC サブネットが自動インポートされていることが確認できます。
---
attributes:
- key: rangeType
value: subnetwork
- key: resourceName
value: projects/*****/regions/asia-northeast1/subnetworks/test-subnet
- key: sourceId
value: //compute.googleapis.com/projects/*****/locations/asia-northeast1/subnetworks/test-subnet
- key: subnetworkType
value: primary
createTime: '2026-04-24T05:25:13.646147682Z'
discoveryMetadata:
createTime: '2025-10-11T13:54:41.702Z'
eventTime: '2026-04-24T01:00:00Z'
resource: projects/*****/regions/asia-northeast1/subnetworks/test-subnet
resourceUri: https://www.googleapis.com/compute/v1/projects/*****/regions/asia-northeast1/subnetworks/test-subnet
sourceId: //compute.googleapis.com/projects/*****/locations/asia-northeast1/subnetworks/test-subnet
sourceSubId: primary-ipv4
state: EXISTS
updateTime: '2025-11-07T02:15:44.284243Z'
ipv4CidrRange: 192.168.0.0/24
name: projects/*****/locations/global/discoveredRanges/compute-asia-northeast1-*****-subnetworks-*****-primary-ipv4
realm: projects/*****/locations/global/realms/vpc-global-*****-*****
registryBook: projects/*****/locations/global/registryBooks/default
updateTime: '2026-04-24T05:25:14.185438831Z'
---
attributes:
- key: rangeType
value: instance
- key: resourceName
value: projects/*****/zones/asia-northeast1-b/instances/vm01
- key: sourceId
value: //compute.googleapis.com/projects/*****/locations/asia-northeast1-b/instances/vm01
createTime: '2026-04-24T05:25:52.675288851Z'
discoveryMetadata:
createTime: '2026-04-23T22:38:58.031Z'
eventTime: '2026-04-25T07:00:00Z'
resource: projects/*****/zones/asia-northeast1-b/instances/vm01
resourceUri: https://www.googleapis.com/compute/v1/projects/*****/zones/asia-northeast1-b/instances/vm01
sourceId: //compute.googleapis.com/projects/*****/locations/asia-northeast1-b/instances/vm01
sourceSubId: nic0-network-ipv4
state: EXISTS
updateTime: '2026-04-25T04:36:23.308695Z'
ipv4CidrRange: 192.168.0.4/32
name: projects/*****/locations/global/discoveredRanges/compute-asia-northeast1-b-*****-instances-*****
parentRange: projects/*****/locations/global/discoveredRanges/compute-asia-northeast1-*****-subnetworks-*****-primary-ipv4
realm: projects/*****/locations/global/realms/vpc-global-*****-*****
registryBook: projects/*****/locations/global/registryBooks/default
updateTime: '2026-04-25T14:55:12.950620721Z'
7. IP 使用率の確認
特定のサブネット範囲の IP 使用率を確認します。
先ほどdiscovered-ranges list で取得したhttps://www.googleapis.com/compute/v1/projects/*****/regions/asia-northeast1/subnetworks/test-subnetを対象にDiscovered range の名前を指定します。
gcloud alpha number-registry discovered-ranges show-utilization DISCOVERED_RANGE_NAME \
--location=global
サブネットの総 IP 数・使用中 IP 数・使用率(パーセント)が確認できます。サブネット設計の見直しやリソース逼迫の早期検知に活用できます。
この場合は、以下のように評価できます。
- 総 IP 数 : 256 (/24)
- 使用中 IP 数 : 4
- 使用率 : 1.56%(ほぼ未使用)
discoveredRange:
createTime: '2026-04-24T05:25:13.996812Z'
discoveryMetadata:
createTime: '2025-10-11T13:54:41.702Z'
eventTime: '2026-04-24T01:00:00Z'
resource: projects/*****/regions/asia-northeast1/subnetworks/test-subnet
resourceUri: https://www.googleapis.com/compute/v1/projects/*****/regions/asia-northeast1/subnetworks/test-subnet
sourceId: //compute.googleapis.com/projects/*****/locations/asia-northeast1/subnetworks/test-subnet
sourceSubId: primary-ipv4
state: EXISTS
updateTime: '2025-11-07T02:15:44.284243Z'
ipv4CidrRange: 192.168.0.0/24
name: projects/*****/locations/global/discoveredRanges/compute-asia-northeast1-*****-subnetworks-*****-primary-ipv4
realm: projects/*****/locations/global/realms/vpc-global-*****-*****
registryBook: projects/*****/locations/global/registryBooks/default
updateTime: '2026-04-24T05:25:13.996812Z'
rangeUtilization:
totalConsumed: '4'
totalProduced: '256'
usage: 0.015625
8. 空き IP の検索
特定の Discovered range 内で空き IP 範囲を検索します。新しいサブネットや VM を追加したいときに、どの範囲が使えるか素早く把握できます。
以下の例では /28(16 アドレス)の空き範囲を3つ探します。
gcloud alpha number-registry discovered-ranges find-free-ip-ranges DISCOVERED_RANGE_NAME \
--cidr-prefix-length=28 \
--range-count=3 \
--location=global
以下のような形式で空きIP範囲がリストで出力されます。
freeIpCidrRanges:
- 10.0.0.0/28
- 10.0.0.16/28
- 10.0.0.32/28
9. IP リソースを検索する
レジストリブック内のリソースを条件検索できます。
# 特定の IP アドレスが含まれる範囲を検索
gcloud alpha number-registry registry-books search-ip-resources default \
--query="ip_address=192.168.0.4" \
--show-utilization \
--location=global
IP アドレス 192.168.0.4 を持つリソースを検索して出力できます。
ranges:
- discoveredRange:
attributes:
- key: rangeType
value: instance
- key: resourceName
value: projects/[PROJECT_ID_1]/zones/asia-northeast1-b/instances/[INSTANCE_NAME]
- key: sourceId
value: //compute.googleapis.com/projects/[PROJECT_NUMBER_1]/locations/asia-northeast1-b/instances/[INSTANCE_NAME]
createTime: '2026-04-24T05:25:55.495239Z'
discoveryMetadata:
createTime: '2026-04-23T22:38:58.031Z'
eventTime: '2026-04-25T07:00:00Z'
resource: projects/[PROJECT_ID_1]/zones/asia-northeast1-b/instances/[INSTANCE_NAME]
resourceUri: https://www.googleapis.com/compute/v1/projects/[PROJECT_ID_1]/zones/asia-northeast1-b/instances/[INSTANCE_NAME]
sourceId: //compute.googleapis.com/projects/[PROJECT_NUMBER_1]/locations/asia-northeast1-b/instances/[INSTANCE_NAME]
sourceSubId: nic0-network-ipv4
state: EXISTS
updateTime: '2026-04-25T04:36:23.308695Z'
ipv4CidrRange: [IP_ADDRESS]/32
name: projects/[PROJECT_NUMBER_2]/locations/global/discoveredRanges/[RESOURCE_ID_1]
parentRange: projects/[PROJECT_NUMBER_2]/locations/global/discoveredRanges/[RESOURCE_ID_2]
realm: projects/[PROJECT_NUMBER_2]/locations/global/realms/[REALM_ID_1]
registryBook: projects/[PROJECT_NUMBER_2]/locations/global/registryBooks/default
updateTime: '2026-04-25T14:55:11.309633Z'
utilization:
totalConsumed: '0'
totalProduced: '1'
usage: 0.0
- discoveredRange:
attributes:
- key: rangeType
value: shared
childCidrOverlapAllowed: true
createTime: '2026-04-24T05:25:53.095704Z'
discoveryMetadata:
sourceId: //compute.googleapis.com/projects/[PROJECT_NUMBER_1]/locations/asia-northeast1/subnetworks/[SUBNET_NAME_1]
sourceSubId: usage-[IP_ADDRESS]-32
ipv4CidrRange: [IP_ADDRESS]/32
name: projects/[PROJECT_NUMBER_2]/locations/global/discoveredRanges/[RESOURCE_ID_3]
parentRange: projects/[PROJECT_NUMBER_2]/locations/global/discoveredRanges/[RESOURCE_ID_2]
realm: projects/[PROJECT_NUMBER_2]/locations/global/realms/[REALM_ID_1]
registryBook: projects/[PROJECT_NUMBER_2]/locations/global/registryBooks/default
updateTime: '2026-04-24T05:25:53.095704Z'
utilization:
totalConsumed: '0'
totalProduced: '1'
usage: 0.0
- discoveredRange:
attributes:
- key: rangeType
value: subnetwork
- key: resourceName
value: projects/[PROJECT_ID_2]/regions/asia-northeast1/subnetworks/[SUBNET_NAME_2]
- key: sourceId
value: //compute.googleapis.com/projects/[PROJECT_NUMBER_3]/locations/asia-northeast1/subnetworks/[SUBNET_NAME_2]
- key: subnetworkType
value: primary
createTime: '2026-04-24T05:22:57.931115Z'
discoveryMetadata:
createTime: '2025-10-10T04:57:25.048Z'
eventTime: '2026-04-24T01:00:00Z'
resource: projects/[PROJECT_ID_2]/regions/asia-northeast1/subnetworks/[SUBNET_NAME_2]
resourceUri: https://www.googleapis.com/compute/v1/projects/[PROJECT_ID_2]/regions/asia-northeast1/subnetworks/[SUBNET_NAME_2]
sourceId: //compute.googleapis.com/projects/[PROJECT_NUMBER_3]/locations/asia-northeast1/subnetworks/[SUBNET_NAME_2]
sourceSubId: primary-ipv4
state: EXISTS
updateTime: '2025-11-05T03:07:40.099378Z'
ipv4CidrRange: [IP_RANGE]/24
name: projects/[PROJECT_NUMBER_2]/locations/global/discoveredRanges/[RESOURCE_ID_4]
realm: projects/[PROJECT_NUMBER_2]/locations/global/realms/[REALM_ID_2]
registryBook: projects/[PROJECT_NUMBER_2]/locations/global/registryBooks/default
updateTime: '2026-04-24T05:22:57.931115Z'
utilization:
totalConsumed: '0'
totalProduced: '256'
usage: 0.0
- discoveredRange:
attributes:
- key: rangeType
value: subnetwork
- key: resourceName
value: projects/[PROJECT_ID_1]/regions/asia-northeast1/subnetworks/[SUBNET_NAME_1]
- key: sourceId
value: //compute.googleapis.com/projects/[PROJECT_NUMBER_1]/locations/asia-northeast1/subnetworks/[SUBNET_NAME_1]
- key: subnetworkType
value: primary
createTime: '2026-04-24T05:25:13.996812Z'
discoveryMetadata:
createTime: '2025-10-11T13:54:41.702Z'
eventTime: '2026-04-24T01:00:00Z'
resource: projects/[PROJECT_ID_1]/regions/asia-northeast1/subnetworks/[SUBNET_NAME_1]
resourceUri: https://www.googleapis.com/compute/v1/projects/[PROJECT_ID_1]/regions/asia-northeast1/subnetworks/[SUBNET_NAME_1]
sourceId: //compute.googleapis.com/projects/[PROJECT_NUMBER_1]/locations/asia-northeast1/subnetworks/[SUBNET_NAME_1]
sourceSubId: primary-ipv4
state: EXISTS
updateTime: '2025-11-07T02:15:44.284243Z'
ipv4CidrRange: [IP_RANGE]/24
name: projects/[PROJECT_NUMBER_2]/locations/global/discoveredRanges/[RESOURCE_ID_2]
realm: projects/[PROJECT_NUMBER_2]/locations/global/realms/[REALM_ID_1]
registryBook: projects/[PROJECT_NUMBER_2]/locations/global/registryBooks/default
updateTime: '2026-04-24T05:25:13.996812Z'
utilization:
totalConsumed: '4'
totalProduced: '256'
usage: 0.015625
制限事項
Cloud Number Registry には現時点でいくつかの制限があります。
| 制限事項 | 詳細 |
|---|---|
| ディスカバリーされないリソース | BYOIP(Bring Your Own IP)のパブリックアドバタイズドプレフィックス/パブリックデリゲートプレフィックス、BYOIP の内部 IPv6 サブネット範囲、Internal ranges |
| IAM 設計が重要 | IPAM admin scope を持つプロジェクトを参照できると、組織全体の IP 情報が見える。閲覧者を限定するため、専用プロジェクト + IAM ポリシーの適切な設定が必須 |
| Preview 制約 | 開発・テスト・プロトタイプ用途のみ。商用データ処理や本番用途は対象外 |
| VPC レルムが表示されない場合がある | IPAM admin scope 作成後に VPC レルムが追加されず google-owned-ipv4 / google-owned-ipv6 のみ表示されることがある。IPAM admin scope を削除して再作成することで解消。Preview 段階のバグと思われる |
活用シーン
大規模組織での IP アドレス管理の一元化
複数のプロジェクト・複数の VPC が混在する組織では、「このサブネットの残り IP はどのくらいか」「どの VPC にどんな範囲があるか」をすぐに答えられないことが多いです。
従来はスプレッドシートや独自スクリプトで管理していた情報を、Cloud Number Registry が自動的にディスカバリーして一元管理してくれます。手動での棚卸し作業が不要になり、常に最新の状態を保てます。
新規サブネット追加時の CIDR 重複防止
新しいプロジェクトやサブネットを追加する際、既存の CIDR 範囲と重複していないかの確認は見落としやすいミスポイントです。特に VPC ピアリングや Shared VPC を使っている環境では、ルーティング可能な範囲が広く、重複のリスクが高まります。
find-free-ip-ranges コマンドを使えば、空き CIDR ブロックをコマンド一発で発見でき、新規サブネット設計時の確認作業を効率化できます。
IP 逼迫の早期発見
show-utilization コマンドを定期的に実行することで、IP アドレスが逼迫しつつあるサブネットを先手で検知できます。使用率が高いサブネットが見つかれば、サブネット拡張やサブネット追加の計画を余裕を持って進められます。
オンプレミスを含むハイブリッド環境での IP 管理
Custom range を使えば、Google Cloud 外部の IP 範囲(オンプレミスや他クラウドなど)も Cloud Number Registry に登録できます。クラウドとオンプレミスの IP 空間を一箇所で把握することで、拠点追加や VPN・Interconnect 構成時の重複リスクを防ぎやすくなります。
コンプライアンス・監査対応
search-ip-resources コマンドで「この IP アドレスはどのリソースに割り当てられているか」を素早く検索できます。セキュリティインシデント発生時の IP 追跡や、定期的なネットワーク棚卸しの効率化に役立ちます。
特に効果を発揮する環境
| 環境 | 理由 |
|---|---|
| プロジェクト数が多い組織 | 分散した IP 情報を自動集約できる |
| VPC ピアリング・Shared VPC を多用している | ルーティング可能な範囲が広く、CIDR 重複のリスクが高い |
| オンプレミスとのハイブリッド構成 | クラウド・オンプレ双方の IP を一元管理できる |
| ネットワーク設計・変更が頻繁にある | 空き IP の検索・使用率の確認を都度行える |
CLI 活用 Tips
コンソール UI がまだない分、CLI を使いこなすことが Cloud Number Registry を活用するカギです。日常的に役立つコマンドパターンをまとめました。
全サブネットの使用率を一括確認する
default VPCを除く、discovered-ranges list で取得した range 名をループし、すべてのサブネットの使用率を一度に確認します。
for range in $(gcloud alpha number-registry discovered-ranges list \
--location=global --filter="NOT discoveryMetadata.resource:default" --format="value(name)"); do
echo "=== $range ==="
gcloud alpha number-registry discovered-ranges show-utilization "$range" \
--location=global
done
サブネット数が多い環境でも、1コマンドで組織全体の使用状況をスキャンできます。
=== projects/*****/locations/global/discoveredRanges/compute-asia-northeast1-*****-subnetworks-*****-secondary-ipv4-secondary ===
discoveredRange:
createTime: '2026-04-24T05:24:31.131165Z'
discoveryMetadata:
createTime: '2025-10-11T13:54:41.702Z'
eventTime: '2026-04-24T01:00:00Z'
resource: projects/*****/regions/asia-northeast1/subnetworks/test-subnet
resourceUri: https://www.googleapis.com/compute/v1/projects/*****/regions/asia-northeast1/subnetworks/test-subnet
sourceId: //compute.googleapis.com/projects/*****/locations/asia-northeast1/subnetworks/test-subnet
sourceSubId: secondary-ipv4-secondary
state: EXISTS
updateTime: '2025-11-07T02:15:44.284243Z'
ipv4CidrRange: 10.0.0.0/24
name: projects/*****/locations/global/discoveredRanges/compute-asia-northeast1-*****-subnetworks-*****-secondary-ipv4-secondary
realm: projects/*****/locations/global/realms/vpc-global-*****-*****
registryBook: projects/*****/locations/global/registryBooks/default
updateTime: '2026-04-24T05:24:31.131165Z'
rangeUtilization:
totalConsumed: '0'
totalProduced: '256'
usage: 0.0
=== projects/*****/locations/global/discoveredRanges/compute-asia-northeast1-b-*****-instances-***** ===
discoveredRange:
createTime: '2026-04-24T05:25:55.495239Z'
discoveryMetadata:
createTime: '2026-04-23T22:38:58.031Z'
eventTime: '2026-04-25T07:00:00Z'
resource: projects/*****/zones/asia-northeast1-b/instances/vm01
resourceUri: https://www.googleapis.com/compute/v1/projects/*****/zones/asia-northeast1-b/instances/vm01
sourceId: //compute.googleapis.com/projects/*****/locations/asia-northeast1-b/instances/vm01
sourceSubId: nic0-network-ipv4
state: EXISTS
updateTime: '2026-04-25T04:36:23.308695Z'
ipv4CidrRange: 192.168.0.4/32
name: projects/*****/locations/global/discoveredRanges/compute-asia-northeast1-b-*****-instances-*****
parentRange: projects/*****/locations/global/discoveredRanges/compute-asia-northeast1-*****-subnetworks-*****-primary-ipv4
realm: projects/*****/locations/global/realms/vpc-global-*****-*****
registryBook: projects/*****/locations/global/registryBooks/default
updateTime: '2026-04-25T14:55:11.309633Z'
rangeUtilization:
totalConsumed: '0'
totalProduced: '1'
usage: 0.0
VPC レルムのみをテーブル形式で確認する
google-owned-ipv4 / google-owned-ipv6 を除いた VPC 固有のレルムだけを見やすく表示します。
gcloud alpha number-registry realms list \
--location=global \
--filter="NOT name:google-owned" \
--format="table(name, ipVersion, trafficType)"
以下の形式で出力されます。
NAME: projects/*****/locations/global/realms/vpc-global-*****-*****
IP_VERSION: IPV4
TRAFFIC_TYPE: PRIVATE
NAME: projects/*****/locations/global/realms/vpc-global-*****-*****
IP_VERSION: IPV4
TRAFFIC_TYPE: PRIVATE
NAME: projects/*****/locations/global/realms/vpc-global-*****-*****
IP_VERSION: IPV4
TRAFFIC_TYPE: PRIVATE
全 VPC を横断して空き /28 を一括検索する
新規リソース追加時に空き CIDR ブロックを効率よく探したいときに使えます。空きがある range のみ出力します。
for range in $(gcloud alpha number-registry discovered-ranges list \
--location=global --filter="discoveryMetadata.resource:test-subnet" --format="value(name)"); do
result=$(gcloud alpha number-registry discovered-ranges find-free-ip-ranges "$range" \
--cidr-prefix-length=28 --range-count=3 --location=global 2>/dev/null)
if [ -n "$result" ]; then
echo "=== $range ==="
echo "$result"
fi
done
以下の形式で出力されます。
=== projects/*****/locations/global/discoveredRanges/compute-asia-southeast3-*****-subnetworks-*****-primary-ipv4 ===
freeIpCidrRanges:
- 10.232.0.0/28
- 10.232.0.16/28
- 10.232.0.32/28
=== projects/*****/locations/global/discoveredRanges/compute-us-east4-*****-subnetworks-*****-primary-ipv4 ===
freeIpCidrRanges:
- 10.150.0.0/28
- 10.150.0.16/28
- 10.150.0.32/28
まとめ
2026年4月22日にGoogle Cloud Next '26 にPreviewとしてリリースされた Cloud Number Registry についての紹介と実際に触って検証してみました。
Cloud Number Registryは、Google Cloud 上の IP アドレスを組織全体で一元管理できる待望の IPAM サービスです。
機能面としては以下になります。
| 機能 | 概要 |
|---|---|
| 自動ディスカバリー | Compute Engine の VPC・サブネット・IP アドレスを自動インポート |
| 使用率の可視化 | 範囲ごとの IP 使用率をコマンドで確認可能 |
| 空き IP 検索 | CIDR プレフィックス長を指定して空き IP を効率的に発見 |
| 柔軟な検索 | IP アドレス・レルム・属性などで IP リソースを横断検索 |
| カスタム範囲対応 | オンプレミスなど Google Cloud 外部の IP 範囲も管理可能 |
現時点では gcloud CLI が alpha コマンドであることからもわかるように、まだ Preview 段階です。
そして、コンソール画面からも確認することができないのでコマンドベースでの管理になってしまいます。
Cloud Number Registryなどの管理サービスはコンソール画面などのUIによる管理・確認ができたほうが良いと思うので、コンソール対応を待ちたいと思います。
大規模な Google Cloud 環境で IP アドレス管理に課題を感じている方には、ぜひ試してみる価値のある機能だと思います。
この記事が誰かの助けになれば幸いです。
以上、クラウド事業本部コンサルティング部の渡邉でした!






