Kebijakan jaringan

Untuk menetapkan kebijakan jaringan untuk workload virtual machine (VM) di tingkat namespace project, gunakan resource ProjectNetworkPolicy, kebijakan jaringan multi-cluster untuk Google Distributed Cloud air-gapped (GDC). Hal ini memungkinkan Anda menentukan kebijakan, yang mengizinkan komunikasi dalam project, antar-project, dan ke alamat IP eksternal.

Untuk traffic dalam project, GDC menerapkan kebijakan jaringan project yang telah ditentukan sebelumnya, yaitu kebijakan intra-project, ke setiap project secara default. Untuk mengaktifkan dan mengontrol traffic di seluruh project dalam organisasi yang sama, tentukan kebijakan lintas project. Jika ada beberapa kebijakan, GDC akan menggabungkan aturan untuk setiap project secara aditif. GDC juga mengizinkan traffic jika setidaknya salah satu aturan cocok.

Meminta izin dan akses

Untuk melakukan tugas yang tercantum di halaman ini, Anda harus memiliki peran Project NetworkPolicy Admin. Minta Admin IAM Project Anda untuk memberi Anda peran Project NetworkPolicy Admin (project-networkpolicy-admin) di namespace project tempat VM berada.

Traffic intra-project

Secara default, workload VM di namespace project memiliki kemampuan untuk berkomunikasi satu sama lain tanpa mengekspos layanan ke dunia luar, meskipun VM adalah bagian dari cluster yang berbeda dalam project yang sama.

Kebijakan jaringan traffic intra-project ingress

Saat membuat project, Anda membuat ProjectNetworkPolicy dasar default di server Management API untuk mengizinkan komunikasi dalam project. Kebijakan ini mengizinkan traffic ingress dari workload lain dalam project yang sama. Anda dapat menghapusnya, tetapi berhati-hatilah jika melakukannya, karena tindakan ini akan menolak komunikasi beban kerja dalam proyek dan penampung.

Kebijakan jaringan traffic intra-project keluar

Secara default, Anda tidak perlu melakukan tindakan apa pun terkait keluar. Hal ini karena jika tidak ada kebijakan keluar, semua traffic diizinkan. Namun, saat Anda menetapkan satu kebijakan, hanya traffic yang ditentukan kebijakan yang diizinkan.

Saat Anda menonaktifkan Pencegahan Pencurian Data dan menerapkan ProjectNetworkPolicy keluar ke project, seperti mencegah akses ke resource eksternal, gunakan kebijakan yang diperlukan untuk mengizinkan keluar dalam project:

kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f - <<EOF
apiVersion: networking.gdc.goog/v1
kind: ProjectNetworkPolicy
metadata:
  namespace: PROJECT_1
  name: allow-intra-project-egress-traffic
spec:
  policyType: Egress

  ingress:
  - from:
    - projects:
        matchNames:
        - PROJECT_1
EOF

Traffic lintas project (dalam organisasi)

Beban kerja VM dari namespace project yang berbeda tetapi dalam organisasi yang sama dapat saling berkomunikasi dengan menerapkan kebijakan jaringan lintas project.

Kebijakan jaringan traffic lintas project ingress

Agar workload project mengizinkan koneksi dari workload lain di project lain, Anda harus mengonfigurasi kebijakan Ingress untuk mengizinkan workload project lain melakukan transfer data keluar.

Kebijakan berikut memungkinkan workload dalam project PROJECT_1 mengizinkan koneksi dari workload dalam project PROJECT_2, serta traffic kembali untuk alur yang sama. Jika Anda ingin mengakses VM di PROJECT_1 dari sumber di dalam PROJECT_2, Anda juga dapat menggunakan kebijakan ini. Jalankan perintah berikut untuk menerapkan kebijakan:

kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f - <<EOF
apiVersion: networking.gdc.goog/v1
kind: ProjectNetworkPolicy
metadata:
  namespace: PROJECT_1
  name: allow-ingress-traffic-from-PROJECT_2
spec:
  policyType: Ingress
  subject:
    subjectType: UserWorkload
  ingress:
  - from:
    - projects:
        matchNames:
        - PROJECT_2
EOF

Perintah sebelumnya mengizinkan PROJECT_2 untuk membuka PROJECT_1, tetapi tidak mengizinkan koneksi yang dimulai dari PROJECT_1 ke PROJECT_2. Untuk yang terakhir, Anda memerlukan kebijakan timbal balik di project PROJECT_2. Jalankan perintah berikut untuk menerapkan kebijakan timbal balik:

kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f - <<EOF
apiVersion: networking.gdc.goog/v1
kind: ProjectNetworkPolicy
metadata:
  namespace: PROJECT_2
  name: allow-ingress-traffic-from-PROJECT_1
spec:
  policyType: Ingress
  subject:
    subjectType: UserWorkload
  ingress:
  - from:
    - projects:
        matchNames:
        - PROJECT_1
EOF

Anda kini telah mengizinkan koneksi yang dimulai ke dan dari PROJECT_1 dan PROJECT_2.

Gunakan definisi berikut untuk variabel Anda.

VariabelDefinisi
MANAGEMENT_API_SERVERJalur server Management API kubeconfig.
PROJECT_1Nama project GDC yang sesuai dengan PROJECT_1 dalam contoh.
PROJECT_2Nama project GDC yang sesuai dengan PROJECT_2 dalam contoh.

Kebijakan jaringan traffic lintas project keluar

Saat Anda memberikan kebijakan traffic lintas project ingress untuk mengaktifkan workload di satu project, PROJECT_1, agar mengizinkan koneksi dari workload di project lain, PROJECT_2, hal ini juga memberikan traffic kembali untuk alur yang sama. Oleh karena itu, Anda tidak memerlukan kebijakan jaringan traffic lintas project egress.

Traffic lintas organisasi

Untuk menghubungkan workload VM ke tujuan di luar project Anda yang berada di organisasi yang berbeda memerlukan persetujuan eksplisit. Persetujuan tersebut disebabkan oleh Pencegahan Pemindahan Data Secara Tidak Sah, yang diaktifkan GDC secara default dan mencegah project memiliki egress ke workload di luar organisasi tempat project berada. Petunjuk untuk menambahkan kebijakan keluar tertentu dan mengaktifkan pencurian data adalah sebagai berikut di bagian ini.

Kebijakan jaringan traffic lintas organisasi ingress

Untuk mengizinkan traffic ingress di berbagai organisasi, ProjectNetworkPolicy harus diterapkan yang mengizinkan traffic dari klien eksternal organisasi ke project Anda, misalnya terhubung ke VM menggunakan SSH.

Kebijakan Egress yang sesuai tidak diperlukan untuk traffic balasan. Traffic kembali diizinkan secara implisit.

Jika Anda ingin mengakses VM di PROJECT_1 dari sumber di luar organisasi tempat VM berada, Anda harus menerapkan kebijakan berikut untuk melakukannya. Anda harus mendapatkan dan menggunakan CIDR yang berisi alamat IP sumber Anda. CIDR harus dalam notasi network/len. Misalnya, 192.0.2.0/21 adalah salah satu yang valid.

  1. Konfigurasi dan terapkan ProjectNetworkPolicy Ingress Anda, dengan mengikuti contoh kubectl. Terapkan kebijakan pada semua beban kerja pengguna di PROJECT_1. Kebijakan ini memungkinkan traffic masuk ke semua host di CIDR, yang berada di luar organisasi.

  2. Terapkan konfigurasi ProjectNetworkPolicy Anda:

    kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f - <<EOF
    apiVersion: networking.gdc.goog/v1
    kind: ProjectNetworkPolicy
    metadata:
      namespace: PROJECT_1
      name: allow-external-traffic
    spec:
      policyType: Ingress
      subject:
        subjectType: UserWorkload
      ingress:
       - from:
         - ipBlock:
             cidr: CIDR
    EOF
    

Kebijakan jaringan traffic lintas organisasi keluar

Untuk mengaktifkan transfer data keluar ke layanan di luar organisasi, sesuaikan kebijakan jaringan project Anda, ProjectNetworkPolicy. Karena Pencegahan Pencurian Data diaktifkan secara default, ProjectNetworkPolicy Egress yang disesuaikan akan menampilkan error validasi di kolom status, dan dataplane akan mengabaikannya. Proses ini terjadi sesuai desain.

Seperti yang dinyatakan dalam Keamanan dan konektivitas, workload dapat mentransfer data keluar jika Anda mengizinkan eksfiltrasi data untuk project tertentu. Traffic yang Anda izinkan untuk transfer data keluar adalah terjemahan alamat jaringan (NAT) sumber menggunakan alamat IP yang diketahui yang dialokasikan untuk project. Keamanan dan konektivitas juga memberikan detail tentang penerapan (ProjectNetworkPolicy) kebijakan jaringan project.

Kebijakan Ingress yang sesuai tidak diperlukan untuk traffic balasan. Traffic kembali diizinkan secara implisit.

Aktifkan kebijakan keluar yang disesuaikan:

  1. Konfigurasi dan terapkan Egress yang disesuaikan sendiri ProjectNetworkPolicy, dengan mengikuti contoh kubectl. Terapkan kebijakan pada semua workload pengguna di PROJECT_1. Kebijakan ini mengizinkan traffic keluar ke semua host di CIDR, yang berada di luar organisasi. Upaya pertama Anda menyebabkan error status yang diperlukan, yang memang dimaksudkan.

  2. Terapkan konfigurasi ProjectNetworkPolicy Anda:

    kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f - <<EOF
    apiVersion: networking.gdc.goog/v1
    kind: ProjectNetworkPolicy
    metadata:
      namespace: PROJECT_1
      name: allow-egress-traffic-to-NAME
    spec:
      policyType: Egress
      subject:
        subjectType: UserWorkload
      egress:
       - to:
         - ipBlock:
             cidr: CIDR
    EOF
    
  3. Setelah selesai, konfirmasi bahwa Anda melihat error validasi dalam status Anda.

  4. Meminta pengguna administrator untuk menonaktifkan Pencegahan Pemindahan Data yang Tidak Sah. Tindakan ini mengaktifkan konfigurasi Anda, sekaligus mencegah semua egress lainnya.

  5. Periksa ProjectNetworkPolicy yang baru saja Anda buat dan verifikasi bahwa error di kolom status validasi sudah tidak ada, dan status Ready adalah True, yang menunjukkan bahwa kebijakan Anda sudah berlaku:

    kubectl --kubeconfig MANAGEMENT_API_SERVER get projectnetworkpolicy
    allow-egress-traffic-to-NAME -n PROJECT_1 -o yaml
    

    Ganti variabel menggunakan definisi berikut.

    VariabelDefinisi
    MANAGEMENT_API_SERVERJalur kubeconfig server Management API.
    PROJECT_1Nama project GDC.
    CIDRBlok Classless Inter-Domain Routing (CIDR) tujuan yang diizinkan.
    NAMENama yang terkait dengan tujuan.

    Setelah Anda menerapkan kebijakan ini, dan selama Anda belum menentukan kebijakan keluar lainnya, semua traffic keluar lainnya akan ditolak untuk PROJECT_1.