Menggunakan Kontrol Layanan VPC

Untuk mengamankan konfigurasi Network Connectivity Center (NCC), gunakan Kontrol Layanan VPC.

Kontrol Layanan VPC memberikan keamanan tambahan untuk Google API dan layanan, termasuk konfigurasi NCC Anda. Selain IAM, Kontrol Layanan VPC membatasi sistem sumber yang dapat mengubah konfigurasi NCC.

Halaman ini menjelaskan kasus penggunaan umum dan contoh konfigurasi untuk mengizinkan akses antara hub NCC dan spoke VPC yang dipisahkan oleh perimeter layanan.

Untuk dokumentasi yang komprehensif, lihat Ringkasan Kontrol Layanan VPC.

Contoh: Usulan spoke VPC lintas project di seluruh perimeter layanan

Jika konfigurasi Anda mengharuskan hub NCC dan jari-jari VPC-nya berada di project yang berbeda yang termasuk dalam perimeter Kontrol Layanan VPC terpisah, Anda harus mengonfigurasi aturan ingress dan egress di kedua perimeter. Hal ini memungkinkan administrator spoke mengusulkan spoke VPC yang mereferensikan hub, dan memungkinkan administrator hub menerima spoke yang diusulkan.

Contoh di halaman ini mengasumsikan bahwa administrator hub dan administrator spoke berasal dari organisasi yang berbeda.

Tabel berikut merangkum aturan yang diperlukan untuk contoh ini:

Perimeter Aturan Tujuan
Perimeter spoke
(project spoke)
Aturan ingress 1 Izinkan administrator spoke untuk memulai proposal spoke dengan membuat spoke di project spoke (jika mengelola dari luar SpokePerimeter)
Aturan keluar 1 Izinkan proposal spoke keluar untuk memulai lampiran ke hub dalam project hub, yang mencakup memverifikasi jaringan VPC pendukung
Perimeter hub
(project hub)
Aturan ingress 1 Mengizinkan administrator hub mengelola hub di project hub, termasuk menyetujui atau menolak proposal spoke (jika mengelola hub dari luar HubPerimeter)
Aturan ingress 2 Mengizinkan proposal spoke masuk untuk memulai lampiran ke hub
Aturan keluar 1 Mengizinkan proposal spoke inbound untuk memanggil kembali ke project spoke guna menyelesaikan penautan spoke ke hub, yang mencakup memverifikasi jaringan VPC pendukung

Aturan perimeter spoke

Untuk mengaktifkan pembuatan dan pengelolaan spoke, administrator spoke mengonfigurasi aturan ingress dan egress berikut:

Aturan Detail
Aturan ingress 1: Pembuatan spoke Saat administrator spoke memulai proposal spoke dengan mengeluarkan perintah pembuatan dari luar perimeter (seperti dari workstation administrator, Cloud Shell, atau konsol Google Cloud ), Kontrol Layanan VPC mengevaluasi panggilan sebagai permintaan ingress ke project spoke. SpokePerimeter harus mengizinkan ingress dari identitas administrator spoke dan asal jaringan untuk NCC API.

Aturan ini tidak diperlukan jika pengelolaan spoke dilakukan secara eksklusif dari dalam jaringan VPC yang dilindungi oleh SpokePerimeter.
Aturan egress 1: Verifikasi jaringan dan lampiran hub Saat administrator spoke mengusulkan spoke, permintaan akan memulai lampiran ke hub dalam project hub. Sebagai bagian dari permintaan, NCC API juga memverifikasi jaringan VPC pendukung menggunakan Compute Engine API. SpokePerimeter harus mengizinkan keluar dari administrator spoke untuk NCC dan Compute Engine API.

Definisi perimeter spoke

Contoh aturan ingress dan egress di bagian berikut didasarkan pada definisi perimeter berikut.

Untuk mengetahui informasi selengkapnya tentang perimeter layanan, lihat Detail dan konfigurasi perimeter layanan.

# Spoke perimeter definition
name: accessPolicies/2345678901/servicePerimeters/SpokePerimeter
status:
  resources:
  - projects/222222222222
  restrictedServices:
  - networkconnectivity.googleapis.com
  - compute.googleapis.com
title: SpokePerimeter

Aturan ingress spoke

Bagian ini memberikan contoh yang menerapkan aturan ingress untuk perimeter spoke seperti yang dijelaskan dalam Aturan perimeter spoke. Aturan ini hanya diperlukan jika mengelola spoke dari luar SpokePerimeter.

Untuk mengetahui detail tentang sintaksis aturan, lihat referensi aturan ingress. Untuk menerapkan aturan, lihat Mengonfigurasi kebijakan ingress dan egress.

echo """
# Rule 1: Allow the spoke administrator to initiate a spoke proposal by creating
# a spoke in the spoke project (if managing from outside SpokePerimeter)
- ingressFrom:
    identities:
    # Specify the principal identifier for the spoke administrator or deployment pipeline:
    - serviceAccount:spoke-admin-sa@spoke-project.iam.gserviceaccount.com
    # - group:spoke-admins@example.org
    # - user:spoke-admin@example.org
    sources:
    - accessLevel: accessPolicies/2345678901/accessLevels/SpokeAdminAccessLevel
    # Alternatively, specify a management project or VPC network if managing
    # from a VPC network outside the perimeter:
    # - resource: projects/MANAGEMENT_PROJECT_NUMBER
  ingressTo:
    operations:
    - serviceName: networkconnectivity.googleapis.com
      methodSelectors:
      - method: "*"
    resources:
    - projects/222222222222
""" > spoke-ingress.yaml

Sebagai praktik terbaik, tentukan aturan ingress yang sespesifik mungkin:

  • identities: Tentukan hanya ID prinsipal yang diperlukan untuk lingkungan Anda, bukan jenis identitas yang luas. Dalam contoh ini, Aturan 1 menentukan akun layanan untuk pipeline deployment otomatis. Atau, Anda dapat menentukan grup Google untuk administrasi tim, atau akun pengguna perorangan. Untuk mengetahui detailnya, lihat Identitas yang didukung untuk aturan ingress dan egress.

  • sources: Membatasi asal ke tingkat akses yang diketahui. Contoh ini menentukan tingkat akses dari kebijakan akses yang mengelola SpokePerimeter untuk mengizinkan sumber eksternal seperti workstation administrator, Cloud Shell, atau konsol Google Cloud . Atau, Anda dapat mengizinkan akses dari jaringan VPC pengelolaan di luar perimeter menggunakan atribut - resource: untuk menentukan project atau jaringan VPC. Untuk mengetahui detailnya, lihat Mengizinkan akses dari luar perimeter dan Akses kontekstual dengan aturan ingress.

  • operations: Batasan untuk networkconnectivity.googleapis.com diterapkan di tingkat layanan, sehingga memerlukan method: "*". Metode yang lebih terperinci tidak tersedia untuk layanan ini.

  • resources: Tentukan nomor project spoke yang tepat di resources. Hindari karakter pengganti (*).

Aturan keluar spoke

Bagian ini memberikan contoh yang menerapkan aturan egress untuk perimeter spoke seperti yang dijelaskan dalam Aturan perimeter spoke.

Untuk mengetahui detail tentang sintaksis aturan, lihat referensi aturan egress.

echo """
# Rule 1: Allow the outbound spoke proposal to initiate attachment to the hub in
# the hub project, which includes verifying the backing VPC network
- egressTo:
    operations:
    - serviceName: networkconnectivity.googleapis.com
      methodSelectors:
      - method: "*"
    - serviceName: compute.googleapis.com
      methodSelectors:
      - method: NetworksService.Get
    resources:
    - projects/111111111111
  egressFrom:
    identities:
    # Specify the principal identifier for the spoke administrator or deployment pipeline:
    - serviceAccount:spoke-admin-sa@spoke-project.iam.gserviceaccount.com
    # - group:spoke-admins@example.org
    # - user:spoke-admin@example.org
""" > spoke-egress.yaml

Sebagai praktik terbaik, tentukan aturan traffic keluar yang sespesifik mungkin:

  • identities: Tentukan hanya ID prinsipal yang diperlukan untuk lingkungan Anda, bukan jenis identitas yang luas. Dalam contoh ini, Aturan 1 menentukan akun layanan untuk pipeline deployment otomatis. Atau, Anda dapat menentukan grup Google untuk administrasi tim atau akun pengguna perorangan. Untuk mengetahui detailnya, lihat Identitas yang didukung untuk aturan ingress dan egress.

  • operations: Batasan untuk networkconnectivity.googleapis.com diterapkan di tingkat layanan, sehingga memerlukan method: "*". Untuk compute.googleapis.com, tentukan method: NetworksService.Get untuk memberikan izin guna memverifikasi jaringan VPC pendukung saat memulai lampiran ke hub.

  • resources: Tentukan nomor project hub yang tepat di resources. Hindari karakter pengganti (*).

Aturan perimeter hub

Untuk mengaktifkan administrasi hub dan mengizinkan proposal spoke masuk, administrator hub mengonfigurasi aturan ingress dan egress berikut:

Aturan Detail
Aturan ingress 1: Pengelolaan hub Saat administrator hub mengelola hub dari luar perimeter (seperti dari workstation administrator, Cloud Shell, atau konsol Google Cloud ), Kontrol Layanan VPC mengevaluasi panggilan sebagai permintaan ingress ke project hub. Aturan ini memungkinkan administrator hub meninjau spoke yang diusulkan dan menerimanya (mengubah spoke ke ACTIVE) atau menolaknya (mengubah spoke ke REJECTED). HubPerimeter harus mengizinkan ingress dari identitas dan asal jaringan administrator hub.

Aturan ini tidak diperlukan jika pengelolaan hub dilakukan secara eksklusif dari dalam jaringan VPC yang dilindungi oleh HubPerimeter.
Aturan ingress 2: Lampiran hub Saat administrator spoke mengusulkan spoke, permintaan akan memulai lampiran ke hub dalam project hub. HubPerimeter harus mengizinkan ingress dari identitas dan asal jaringan administrator spoke untuk NCC API di seluruh perimeter layanan.
Aturan keluar 1: Verifikasi jaringan dan penautan spoke Saat administrator spoke mengusulkan spoke, permintaan akan memanggil kembali ke project spoke untuk menyelesaikan penautan spoke ke hub dan menempatkan spoke ke dalam status PENDING_REVIEW. Sebagai bagian dari permintaan, NCC API juga memverifikasi jaringan VPC pendukung menggunakan Compute Engine API. HubPerimeter harus mengizinkan keluar dari administrator spoke untuk NCC dan Compute Engine API.

Definisi perimeter hub

Contoh aturan ingress dan egress di bagian berikut didasarkan pada definisi perimeter berikut.

Untuk mengetahui informasi selengkapnya tentang perimeter layanan, lihat Detail dan konfigurasi perimeter layanan.

# Hub perimeter definition
name: accessPolicies/1234567890/servicePerimeters/HubPerimeter
status:
  resources:
  - projects/111111111111
  restrictedServices:
  - networkconnectivity.googleapis.com
  - compute.googleapis.com
title: HubPerimeter

Aturan ingress hub

Bagian ini memberikan contoh yang menerapkan aturan ingress untuk perimeter hub seperti yang dijelaskan dalam Aturan perimeter hub.

Untuk mengetahui detail tentang sintaksis aturan, lihat referensi aturan ingress. Untuk menerapkan aturan, lihat Mengonfigurasi kebijakan ingress dan egress.

echo """
# Rule 1: Allow the hub administrator to manage the hub in the hub project
# (if managing from outside HubPerimeter)
- ingressFrom:
    identities:
    # Specify the principal identifier for the hub administrator:
    - group:hub-admins@example.com
    # - user:hub-admin@example.com
    # - serviceAccount:hub-admin-sa@hub-project.iam.gserviceaccount.com
    sources:
    - accessLevel: accessPolicies/1234567890/accessLevels/HubAdminAccessLevel
    # Alternatively, specify a management project or VPC network if managing
    # from a VPC network outside the perimeter:
    # - resource: projects/MANAGEMENT_PROJECT_NUMBER
  ingressTo:
    operations:
    - serviceName: networkconnectivity.googleapis.com
      methodSelectors:
      - method: "*"
    resources:
    - projects/111111111111

# Rule 2: Allow the inbound spoke proposal to initiate attachment to the hub
- ingressFrom:
    identities:
    # Specify the principal identifier for the spoke administrator or deployment pipeline:
    - serviceAccount:spoke-admin-sa@spoke-project.iam.gserviceaccount.com
    # - group:spoke-admins@example.org
    # - user:spoke-admin@example.org
    sources:
    # Specify an access level defined in the hub organization's access policy if
    # the spoke administrator manages spokes from the Google Cloud console or
    # external networks:
    - accessLevel: accessPolicies/1234567890/accessLevels/SpokeAdminAccessLevel
    # Alternatively, specify the spoke project if the spoke administrator
    # manages from a VPC network in the spoke project:
    # - resource: projects/222222222222
  ingressTo:
    operations:
    - serviceName: networkconnectivity.googleapis.com
      methodSelectors:
      - method: "*"
    resources:
    - projects/111111111111
""" > hub-ingress.yaml

Sebagai praktik terbaik, tentukan aturan ingress yang sespesifik mungkin:

  • identities: Tentukan hanya ID prinsipal yang diperlukan untuk lingkungan Anda, bukan jenis identitas yang luas:

    • Dalam Aturan 1, contoh ini menentukan grup Google administrator hub untuk administrasi tim. Atau, Anda dapat menentukan akun pengguna atau akun layanan individual. Aturan ini hanya diperlukan jika mengelola hub dari luar HubPerimeter.
    • Dalam Aturan 2, contoh ini menentukan akun layanan administrator spoke untuk pipeline deployment otomatis. Atau, Anda dapat menentukan grup Google untuk administrasi tim atau akun pengguna perorangan.

    Untuk mengetahui informasi selengkapnya, lihat Identitas yang didukung untuk aturan ingress dan egress.

  • sources: Batasi asal ke tingkat akses atau project yang diketahui:

    • Dalam Aturan 1, contoh ini menentukan tingkat akses untuk administrator hub dari kebijakan akses yang mengelola HubPerimeter untuk mengizinkan sumber eksternal seperti workstation administrator, Cloud Shell, atau konsol Google Cloud . Atau, Anda dapat mengizinkan akses dari jaringan VPC pengelolaan di luar perimeter menggunakan atribut - resource: untuk menentukan project atau jaringan VPC. Untuk mengetahui detailnya, lihat Mengizinkan akses dari luar perimeter dan Akses kontekstual dengan aturan ingress.
    • Dalam Aturan 2, contoh ini menentukan tingkat akses untuk administrator spoke dari kebijakan akses yang mengelola HubPerimeter untuk mengizinkan sumber eksternal seperti workstation administrator, Cloud Shell, atau konsol Google Cloud . Atau, Anda dapat mengizinkan akses dari jaringan VPC di project spoke menggunakan atribut - resource: untuk menentukan nomor project spoke (seperti untuk pipeline deployment otomatis).
  • operations: Batasan untuk networkconnectivity.googleapis.com diterapkan di tingkat layanan, sehingga memerlukan method: "*". Metode yang lebih terperinci tidak tersedia untuk layanan ini.

  • resources: Tentukan nomor project hub yang tepat di resources. Hindari karakter pengganti (*).

Aturan keluar hub

Bagian ini memberikan contoh yang menerapkan aturan egress untuk perimeter hub seperti yang dijelaskan dalam Aturan perimeter hub.

Untuk mengetahui detail tentang sintaksis aturan, lihat referensi aturan egress.

echo """
# Rule 1: Allow the inbound spoke proposal to call back to the spoke project to
# complete linking the spoke to the hub, which includes verifying the backing
# VPC network
- egressTo:
    operations:
    - serviceName: networkconnectivity.googleapis.com
      methodSelectors:
      - method: "*"
    - serviceName: compute.googleapis.com
      methodSelectors:
      - method: NetworksService.Get
    resources:
    - projects/222222222222
  egressFrom:
    identities:
    # Specify the principal identifier for the spoke administrator or deployment pipeline:
    - serviceAccount:spoke-admin-sa@spoke-project.iam.gserviceaccount.com
    # - group:spoke-admins@example.org
    # - user:spoke-admin@example.org
""" > hub-egress.yaml

Sebagai praktik terbaik, tentukan aturan traffic keluar yang sespesifik mungkin:

  • identities: Tentukan ID akun utama untuk administrator spoke (seperti akun layanan, grup, atau akun pengguna pipeline deployment). Saat administrator spoke mengusulkan spoke, HubPerimeter mengevaluasi egress dengan identitas administrator spoke untuk menyelesaikan penautan spoke ke hub dalam project spoke, yang mencakup verifikasi jaringan VPC pendukung.

    Untuk mengetahui detailnya, lihat Identitas yang didukung untuk aturan ingress dan egress.

  • operations: Batasan untuk networkconnectivity.googleapis.com diterapkan di tingkat layanan, sehingga memerlukan method: "*". Untuk compute.googleapis.com, tentukan method: NetworksService.Get untuk memberikan izin guna memverifikasi jaringan VPC pendukung saat menyelesaikan penautan ke project spoke.

  • resources: Tentukan nomor project spoke yang tepat di resources. Hindari karakter pengganti (*).