Membuat kebijakan jaringan intra-project

Halaman ini memberikan petunjuk untuk mengonfigurasi kebijakan jaringan traffic intra-project di Google Distributed Cloud (GDC) air-gapped.

Kebijakan jaringan project menentukan aturan masuk atau keluar. Anda dapat menentukan kebijakan yang mengizinkan komunikasi dalam project, antar-project, dan ke alamat IP eksternal.

Secara default, kebijakan ini berlaku secara global di semua zona. Untuk mengetahui informasi selengkapnya tentang resource global di semesta GDC, lihat Ringkasan multi-zona.

Jika penegakan traffic intra-project diperlukan dalam satu zona, lihat Membuat kebijakan intra-project tingkat workload zona tunggal.

Sebelum memulai

Untuk mengonfigurasi kebijakan jaringan traffic intra-project, Anda harus memiliki hal berikut:

  • Peran identitas dan akses yang diperlukan. Untuk mengelola kebijakan project tertentu, Anda memerlukan peran project-networkpolicy-admin. Untuk lingkungan multi-zona tempat Anda perlu mengelola kebijakan yang mencakup semua zona, Anda memerlukan peran global-project-networkpolicy-admin. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan peran dan akses yang telah ditetapkan.
  • Project yang ada. Untuk mengetahui informasi selengkapnya, lihat Membuat project.

Membuat kebijakan intra-project

Untuk traffic dalam project, GDC menerapkan kebijakan jaringan project yang telah ditentukan sebelumnya, yaitu kebijakan intra-project, ke setiap project secara default. Secara default, workload di namespace project dapat berkomunikasi satu sama lain tanpa mengekspos apa pun ke resource eksternal.

Secara default, tidak ada kebijakan egress, sehingga traffic keluar diizinkan untuk semua traffic intra-project. Namun, saat Anda menetapkan satu kebijakan keluar, hanya traffic yang ditentukan kebijakan yang diizinkan.

Membuat kebijakan ingress intra-project

Saat membuat project, Anda secara implisit membuat resource ProjectNetworkPolicy dasar default yang memungkinkan komunikasi dalam project. Kebijakan ini mengizinkan traffic masuk dari workload lain dalam project yang sama.

Anda dapat menghapus kebijakan default, tetapi perlu diketahui bahwa penghapusan ini akan menolak komunikasi dalam project untuk semua layanan dan beban kerja dalam project. Untuk menghapus kebijakan, gunakan perintah kubectl delete:

kubectl --kubeconfig GLOBAL_API_SERVER delete pnp base-policy-allow-intra-project-traffic -n PROJECT

Anda dapat menambahkan kembali kebijakan default dengan menerapkan manifes berikut:

kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
apiVersion: networking.global.gdc.goog/v1
kind: ProjectNetworkPolicy
metadata:
  namespace: PROJECT
  name: base-policy-allow-intra-project-traffic
spec:
  policyType: Ingress
  ingress:
  - from:
    - projectSelector:
        projects:
          matchNames:
          - PROJECT
EOF

Ganti kode berikut:

  • GLOBAL_API_SERVER: jalur kubeconfig server API global. Untuk mengetahui informasi selengkapnya, lihat Server API global dan zonal. Jika Anda belum membuat file kubeconfig untuk server API, lihat Login untuk detailnya.
  • PROJECT: nama project Anda.

Membuat kebijakan intra-project egress

Saat Anda menonaktifkan pencegahan eksfiltrasi data dan menerapkan kebijakan keluar ProjectNetworkPolicy ke project, seperti mencegah akses ke resource eksternal, gunakan kebijakan wajib berikut untuk mengizinkan traffic keluar intra-project:

kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
apiVersion: networking.global.gdc.goog/v1
kind: ProjectNetworkPolicy
metadata:
  namespace: PROJECT
  name: allow-intra-project-outbound-traffic
spec:
  policyType: Egress
  egress:
  - to:
    - projectSelector:
        projects:
          matchNames:
          - PROJECT
EOF

Ganti kode berikut:

  • GLOBAL_API_SERVER: jalur kubeconfig server API global. Untuk mengetahui informasi selengkapnya, lihat Server API global dan zonal. Jika Anda belum membuat file kubeconfig untuk server API, lihat Login untuk detailnya.
  • PROJECT: nama project Anda.

Membuat kebijakan intra-project tingkat workload

Kebijakan jaringan tingkat workload menawarkan kontrol terperinci atas komunikasi antar-workload dalam suatu project. Perincian ini memungkinkan kontrol akses jaringan yang lebih ketat, sehingga meningkatkan keamanan dan penggunaan resource.

Membuat kebijakan intra-project tingkat workload ingress

Saat membuat project, Anda secara implisit membuat resource dasar ProjectNetworkPolicy default yang memungkinkan komunikasi dalam project di antara semua beban kerja. Kebijakan ini mengizinkan traffic masuk dari workload lain dalam project yang sama.

Untuk membuat kebijakan intra-project tingkat beban kerja ingress, kebijakan dasar default harus dihapus terlebih dahulu. Jika tidak, perilaku yang tidak terduga dapat terjadi.

  1. Untuk menghapus kebijakan dasar default, jalankan perintah berikut:

    kubectl --kubeconfig GLOBAL_API_SERVER delete pnp base-policy-allow-intra-project-traffic -n PROJECT
    
  2. Untuk membuat kebijakan intra-project tingkat workload ingress, buat dan terapkan resource kustom berikut:

    kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
    apiVersion: networking.global.gdc.goog/v1
    kind: ProjectNetworkPolicy
    metadata:
      namespace: PROJECT
      name: allow-intra-project-inbound-traffic-from-target-to-subject
    spec:
      policyType: Ingress
      subject:
        subjectType: UserWorkload
        workloadSelector:
          matchLabels:
            SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE
      ingress:
      - from:
        - projectSelector:
            projects:
              matchNames:
              - PROJECT
            workloads:
              matchLabels:
                TARGET_LABEL_KEY: TARGET_LABEL_VALUE
    EOF
    

    Ganti kode berikut:

    • GLOBAL_API_SERVER: jalur kubeconfig server API global. Untuk mengetahui informasi selengkapnya, lihat Server API global dan zonal. Jika Anda belum membuat file kubeconfig untuk server API, lihat Login untuk detailnya.
    • PROJECT: nama project Anda.
    • SUBJECT_LABEL_KEY: kunci label yang digunakan untuk memilih beban kerja sumber. Misalnya, app, tier, atau role.
    • SUBJECT_LABEL_VALUE: nilai yang terkait dengan SUBJECT_LABEL_KEY. Objek ini menentukan workload mana yang menjadi sumber traffic yang diizinkan. Misalnya, jika SUBJECT_LABEL_KEY adalah app, dan SUBJECT_LABEL_VALUE adalah backend, maka workload dengan label app: backend adalah sumber traffic.
    • TARGET_LABEL_KEY: kunci label yang digunakan untuk memilih beban kerja tujuan.
    • TARGET_LABEL_VALUE: nilai yang terkait dengan TARGET_LABEL_KEY. Tindakan ini menentukan workload mana yang menjadi tujuan traffic yang diizinkan.

Membuat kebijakan intra-project tingkat workload egress

  • Untuk membuat kebijakan intra-project tingkat beban kerja egress, buat dan terapkan resource kustom berikut:

    kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
    apiVersion: networking.global.gdc.goog/v1
    kind: ProjectNetworkPolicy
    metadata:
      namespace: PROJECT
      name: allow-intra-project-outbound-traffic-to-subject-from-target
    spec:
      policyType: Egress
      subject:
        subjectType: UserWorkload
        workloadSelector:
          matchLabels:
            SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE
      egress:
      - to:
        - projectSelector:
            projects:
              matchNames:
              - PROJECT
            workloads:
              matchLabels:
                TARGET_LABEL_KEY: TARGET_LABEL_VALUE
    EOF
    

    Ganti kode berikut:

    • GLOBAL_API_SERVER: jalur kubeconfig server API global. Untuk mengetahui informasi selengkapnya, lihat Server API global dan zonal. Jika Anda belum membuat file kubeconfig untuk server API, lihat Login untuk detailnya.
    • PROJECT: nama project Anda.
    • SUBJECT_LABEL_KEY: kunci label yang digunakan untuk memilih beban kerja sumber. Misalnya, app, tier, atau role.
    • SUBJECT_LABEL_VALUE: nilai yang terkait dengan SUBJECT_LABEL_KEY. Objek ini menentukan workload mana yang menjadi sumber traffic yang diizinkan. Misalnya, jika SUBJECT_LABEL_KEY adalah app, dan SUBJECT_LABEL_VALUE adalah backend, maka workload dengan label app: backend adalah sumber traffic.
    • TARGET_LABEL_KEY: kunci label yang digunakan untuk memilih beban kerja tujuan.
    • TARGET_LABEL_VALUE: nilai yang terkait dengan TARGET_LABEL_KEY. Tindakan ini menentukan workload mana yang menjadi tujuan traffic yang diizinkan.

Membuat kebijakan intra-project tingkat beban kerja zona tunggal

Kebijakan jaringan tingkat beban kerja dapat menerapkan PNP di satu zona. Label tertentu dapat ditambahkan ke workload dalam satu zona, sehingga Anda dapat mengontrol komunikasi antara workload individual dalam satu project atau di project yang berbeda untuk zona tersebut.

Membuat kebijakan intra-project tingkat workload ingress zona tunggal

Saat membuat project, Anda secara implisit membuat resource dasar ProjectNetworkPolicy default yang memungkinkan komunikasi dalam project di antara semua beban kerja. Kebijakan ini mengizinkan traffic masuk dari workload lain dalam project yang sama.

Untuk membuat kebijakan intra-project tingkat beban kerja ingress zona tunggal, kebijakan dasar default harus dihapus terlebih dahulu. Jika tidak, perilaku yang tidak terduga dapat terjadi.

  1. Untuk menghapus kebijakan dasar default, jalankan perintah berikut:

    kubectl --kubeconfig GLOBAL_API_SERVER delete pnp base-policy-allow-intra-project-traffic -n PROJECT
    
  2. Untuk membuat kebijakan jaringan traffic intra-project tingkat beban kerja ingress zona tunggal, buat dan terapkan resource kustom berikut:

    kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
    apiVersion: networking.global.gdc.goog/v1
    kind: ProjectNetworkPolicy
    metadata:
      namespace: PROJECT
      name: allow-single-zone-intra-project-inbound-traffic-from-target-to-subject
    spec:
      policyType: Ingress
      subject:
        subjectType: UserWorkload
        workloadSelector:
          matchLabels:
            SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE
            ZONE_SUBJECT_LABEL_KEY: ZONE_SUBJECT_LABEL_VALUE
      ingress:
      - from:
        - projectSelector:
            projects:
              matchNames:
              - PROJECT
            workloads:
              matchLabels:
                TARGET_LABEL_KEY: TARGET_LABEL_VALUE
                ZONE_TARGET_LABEL_KEY: ZONE_TARGET_LABEL_VALUE
    EOF
    

    Ganti kode berikut:

    • GLOBAL_API_SERVER: jalur kubeconfig server API global. Untuk mengetahui informasi selengkapnya, lihat Server API global dan zonal. Jika Anda belum membuat file kubeconfig untuk server API, lihat Login untuk detailnya.
    • PROJECT: nama project Anda.
    • SUBJECT_LABEL_KEY: kunci label yang digunakan untuk memilih beban kerja sumber. Misalnya, app, tier, atau role.
    • SUBJECT_LABEL_VALUE: nilai yang terkait dengan SUBJECT_LABEL_KEY. Objek ini menentukan workload mana yang menjadi sumber traffic yang diizinkan. Misalnya, jika SUBJECT_LABEL_KEY adalah app, dan SUBJECT_LABEL_VALUE adalah backend, maka workload dengan label app: backend adalah sumber traffic.
    • TARGET_LABEL_KEY: kunci label yang digunakan untuk memilih beban kerja tujuan.
    • TARGET_LABEL_VALUE: nilai yang terkait dengan TARGET_LABEL_KEY. Tindakan ini menentukan workload mana yang menjadi tujuan traffic yang diizinkan.
    • ZONE_SUBJECT_LABEL_KEY: kunci label yang digunakan untuk memilih zona sumber. Misalnya, zone, atau region.
    • ZONE_SUBJECT_LABEL_VALUE: nilai yang terkait dengan ZONE_SUBJECT_LABEL_KEY. Menentukan zona mana yang menjadi sumber traffic yang diizinkan. Misalnya, jika ZONE_SUBJECT_LABEL_KEY adalah zone, dan ZONE_SUBJECT_LABEL_VALUE adalah us-central1-a, maka workload dengan label zone: us-central1-a adalah sumber traffic.
    • ZONE_TARGET_LABEL_KEY: kunci label yang digunakan untuk memilih zona tujuan.
    • ZONE_TARGET_LABEL_VALUE: nilai yang terkait dengan ZONE_TARGET_LABEL_KEY. Tindakan ini menentukan zona mana yang menjadi tujuan traffic yang diizinkan.

Membuat kebijakan intra-project level workload traffic keluar satu zona

  • Untuk membuat kebijakan intra-project tingkat beban kerja egress satu zona, buat dan terapkan resource kustom berikut:

    kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
    apiVersion: networking.global.gdc.goog/v1
    kind: ProjectNetworkPolicy
    metadata:
      namespace: PROJECT
      name: allow-single-zone-intra-project-outbound-traffic-to-subject-from-target
    spec:
      policyType: Egress
      subject:
        subjectType: UserWorkload
        workloadSelector:
          matchLabels:
            SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE
            ZONE_SUBJECT_LABEL_KEY: ZONE_SUBJECT_LABEL_VALUE
      egress:
      - to:
        - projectSelector:
            projects:
              matchNames:
              - PROJECT
            workloads:
              matchLabels:
                TARGET_LABEL_KEY: TARGET_LABEL_VALUE
                ZONE_TARGET_LABEL_KEY: ZONE_TARGET_LABEL_VALUE
    EOF
    

    Ganti kode berikut:

    • GLOBAL_API_SERVER: jalur kubeconfig server API global. Untuk mengetahui informasi selengkapnya, lihat Server API global dan zonal. Jika Anda belum membuat file kubeconfig untuk server API, lihat Login untuk detailnya.
    • PROJECT: nama project Anda.
    • SUBJECT_LABEL_KEY: kunci label yang digunakan untuk memilih beban kerja sumber. Misalnya, app, tier, atau role.
    • SUBJECT_LABEL_VALUE: nilai yang terkait dengan SUBJECT_LABEL_KEY. Objek ini menentukan workload mana yang menjadi sumber traffic yang diizinkan. Misalnya, jika SUBJECT_LABEL_KEY adalah app, dan SUBJECT_LABEL_VALUE adalah backend, maka workload dengan label app: backend adalah sumber traffic.
    • TARGET_LABEL_KEY: kunci label yang digunakan untuk memilih beban kerja tujuan.
    • TARGET_LABEL_VALUE: nilai yang terkait dengan TARGET_LABEL_KEY. Tindakan ini menentukan workload mana yang menjadi tujuan traffic yang diizinkan.
    • ZONE_SUBJECT_LABEL_KEY: kunci label yang digunakan untuk memilih zona sumber. Misalnya, zone, atau region.
    • ZONE_SUBJECT_LABEL_VALUE: nilai yang terkait dengan ZONE_SUBJECT_LABEL_KEY. Menentukan zona mana yang menjadi sumber traffic yang diizinkan. Misalnya, jika ZONE_SUBJECT_LABEL_KEY adalah zone, dan ZONE_SUBJECT_LABEL_VALUE adalah us-central1-a, maka workload dengan label zone: us-central1-a adalah sumber traffic.
    • ZONE_TARGET_LABEL_KEY: kunci label yang digunakan untuk memilih zona tujuan.
    • ZONE_TARGET_LABEL_VALUE: nilai yang terkait dengan ZONE_TARGET_LABEL_KEY. Tindakan ini menentukan zona mana yang menjadi tujuan traffic yang diizinkan.