Mengizinkan akses ke resource yang dilindungi dari alamat IP internal

Halaman ini menjelaskan cara mengizinkan traffic dari alamat IP internal di Jaringan VPC ke perimeter layanan menggunakan aturan masuk dan keluar.

Ringkasan

Anda dapat menggunakan Kontrol Layanan VPC untuk menentukan kondisi guna mengizinkan IP tertentu rentang alamat IP jaringan VPC untuk mengakses project dan jaringan VPC. Dengan fitur ini, Anda dapat melakukan hal berikut tugas:

  • Mendukung akses dasar level Anda menjadi mengizinkan rentang alamat IP internal jaringan VPC.

  • Izinkan penggunaan kondisi tingkat akses ini untuk API masuk atau keluar panggilan masuk atau keluar dari batas perimeter layanan.

Fitur ini memberikan manfaat sebagai berikut:

  • Anda dapat menetapkan kondisi dalam konfigurasi Kontrol Layanan VPC yang diizinkan dari alamat IP internal dalam jaringan VPC.

  • Alur kerja yang memerlukan panggilan API untuk melewati beberapa perimeter layanan dapat membatasi akses untuk hanya mengizinkan beberapa subnet, bukan mengizinkan seluruh project atau jaringan VPC.

  • Anda dapat mengonfigurasi berbagai resource lokal agar dapat mengakses resource Google Cloud tertentu saja. Anda perlu menggunakan IP subnet rentang alamat IP yang terkait dengan resource lokal dan zona landing ini Jaringan VPC sebagai bagian dari tingkat akses.

Gambar 1 menunjukkan contoh penyiapan yang mengizinkan akses ke perangkat tertentu yang dilindungi dari alamat IP internal resmi.

Batasan penggunaan alamat IP internal

Saat Anda menggunakan alamat IP internal di Kontrol Layanan VPC, batasan berlaku:

  • Anda dapat mengaktifkan alamat IP internal hanya dengan tingkat akses dasar, bukan dengan tingkat akses kustom.

  • Sebaiknya Anda tidak menegasikan tingkat akses dengan alamat IP internal kondisi tertentu karena dapat menyebabkan perilaku yang tidak terduga.

  • Batasan untuk menambahkan jaringan VPC ke perimeter layanan juga akan berlaku.

  • Saat Kontrol Layanan VPC mencatat log audit kebijakan yang ditolak, nama akan disamarkan dalam jaringan VPC sebagai __UNKNOWN__ dalam log audit.

  • Jaringan VPC dengan SUBNET_MODE yang ditetapkan ke custom tetapi tidak memiliki subnet, tidak didukung. Mengaktifkan alamat IP internal mengharuskan jaringan VPC yang berisi setidaknya satu subnet.

  • Anda hanya dapat menetapkan 500 VPC jaringan di seluruh tingkat akses dalam kebijakan akses.

  • Saat Anda menghapus jaringan VPC yang direferensikan oleh akses level atau perimeter layanan, lalu membuat ulang VPC lain menggunakan nama yang sama, Kontrol Layanan VPC tidak otomatis mengaktifkan alamat IP internal pada jaringan VPC yang dibuat ulang. Kepada mengatasi keterbatasan ini, buat sebuah jaringan VPC nama yang berbeda dan menambahkannya ke perimeter.

  • Anda tidak dapat menggunakan alamat IP internal untuk mengizinkan akses dari alamat IP yang dikelola Google layanan IT perusahaan mereka. Misalnya, Cloud SQL.

  • Jika Anda menggunakan tingkat akses yang memiliki kondisi berbasis alamat IP internal dengan aturan traffic keluar, sebaiknya jangan tambahkan kondisi lain seperti jenis perangkat, identitas pengguna, hingga tingkat akses.

  • Alamat IP internal tidak cocok dengan tingkat akses yang mengacu pada lokasi geografis region.

Menggunakan alamat IP internal di tingkat akses

  1. Tentukan nama jaringan VPC dan rentang alamat IP di kolom Kolom vpcNetworkSources dari tingkat akses dasar kondisi.

    • Nama jaringan VPC. Anda harus menentukan VPC dalam format berikut:

      //compute.googleapis.com/projects/PROJECT_ID/global/networks/NETWORK_NAME
      

      Misalnya, //compute.googleapis.com/projects/my-project/global/networks/my-vpc.

    • Rentang alamat IP. Rentang alamat IP yang ditentukan di VpcSubNetwork bidang VpcNetworkSource harus mengikuti spesifikasi subnetwork IP blok CIDR. Anda dapat menggunakan alamat IP apa pun rentang yang merupakan rentang IPv4 yang valid untuk subnet.

  2. Gunakan tingkat akses ini dengan kondisi izinkan di IngressSource atau EgressSource

Dengan menggunakan contoh skenario, bagian berikut menjelaskan cara melakukannya langkah-langkah untuk mengaktifkan alamat IP internal.

Contoh penggunaan alamat IP internal untuk menyiapkan akses subnet

Dalam contoh berikut, Anda memiliki dua project:

  1. Project host jaringan: Project1 menghosting jaringan VPC: default. Dua VM di Project1, VM1, dan VM2, menggunakan jaringan ini sebagai antarmuka jaringan untuk mengirim lalu lintas.

  2. Project Cloud Storage: Project2 berisi bucket Cloud Storage.

Anda dapat menggunakan Kontrol Layanan VPC untuk hanya mengizinkan VM1 dari Project1 mengakses Bucket Cloud Storage di Project2 yang menggunakan alamat IP internal. Untuk melakukan penyiapan ini, Anda perlu melakukan langkah-langkah berikut:

  1. Anda membuat perimeter layanan sp1 di sekitar Project1 dan layanan lainnya keliling sp2 di sekitar Project2.

  2. Kemudian, Anda dapat menambahkan aturan masuk dan keluar ke perimeter layanan untuk hanya mengizinkan akses subnet VM1 ke bucket Cloud Storage.

Diagram berikut menunjukkan penyiapan yang dijelaskan dalam contoh ini.

Mengonfigurasi kebijakan akses di tingkat organisasi

  1. Pastikan Anda memiliki kebijakan akses di tingkat organisasi. Jika Anda jika tidak memiliki kebijakan akses di tingkat ini, jalankan perintah Perintah gcloud CLI:

    gcloud access-context-manager policies create \
        --organization=ORGANIZATION_ID --title=POLICY_TITLE
    

    Ganti kode berikut:

    • ORGANIZATION_ID: ID numerik organisasi Anda.

    • POLICY_TITLE: Judul yang dapat dibaca manusia untuk kebijakan akses Anda.

    Untuk informasi selengkapnya, lihat Membuat akses tingkat organisasi kebijakan kami.

  2. Mendapatkan nama akses Anda kebijakan kami.

  3. Untuk menetapkan kebijakan ini sebagai kebijakan akses default, jalankan perintah berikut Perintah gcloud CLI:

    gcloud config set access_context_manager/policy POLICY_NAME
    

    Ganti POLICY_NAME dengan nama numerik untuk kebijakan akses Anda.

    Untuk informasi selengkapnya, lihat Menetapkan kebijakan akses default untuk alat command line gcloud.

Membuat perimeter untuk melindungi project host jaringan dan project Cloud Storage

  1. Untuk membuat sp1 perimeter di sekitar Project1, jalankan perintah berikut Perintah gcloud CLI:

    gcloud access-context-manager perimeters create sp1 --title="sp1" --resources=PROJECT_NUMBER \
        --restricted-services=storage.googleapis.com --policy=POLICY_NAME
    

    Ganti kode berikut:

    • PROJECT_NUMBER: Nomor project dari project host jaringan. Contoh, projects/111.

    • POLICY_NAME: Nama numerik kebijakan akses Anda. Contoh, 1234567890.

  2. Untuk membuat sp2 perimeter di sekitar Project2 yang membatasi Cloud Storage, jalankan perintah gcloud CLI berikut:

    gcloud access-context-manager perimeters create sp2 --title="sp2" --resources=PROJECT_NUMBER \
        --restricted-services=storage.googleapis.com --policy=POLICY_NAME
    

    Ganti kode berikut:

    • PROJECT_NUMBER: Nomor project Cloud Storage proyek. Contoh, projects/222.

    • POLICY_NAME: Nama numerik kebijakan akses Anda. Contoh, 1234567890.

Untuk informasi selengkapnya tentang pembuatan perimeter layanan, lihat Membuat layanan perimeter.

Setelah Anda membuat dua perimeter ini, bucket Cloud Storage tidak lagi dapat diakses dari dua VM.

Membuat tingkat akses dengan kondisi akses berbasis alamat IP internal

Buat tingkat akses yang hanya mengizinkan traffic yang berasal dari subnet VM1.

  1. Buat file YAML yang menentukan kondisi akses Anda. Contoh berikut hanya menunjukkan atribut yang Anda perlukan untuk mengaktifkan alamat IP internal:

    echo """
    - vpcNetworkSources:
      - vpcSubnetwork:
          network: VPC_NETWORK_NAME
          vpcIpSubnetworks:
          - IP_RANGE
    
    """ > level.yaml
    

    Ganti kode berikut:

    • VPC_NETWORK_NAME: Nama jaringan VPC tempat VM1 berada. Contohnya, //compute.googleapis.com/projects/Project1/global/networks/default.

    • IP_RANGE: Rentang alamat IP subnet. Contoh, 10.10.0.0/24.

    Gunakan format nama jaringan VPC dan rentang alamat IP dijelaskan sebelumnya.

    Untuk informasi lebih lanjut tentang file YAML, lihat basic-level-spec YAML file.

  2. Untuk membuat tingkat akses menggunakan file YAML, jalankan perintah berikut Perintah gcloud CLI:

    gcloud access-context-manager levels create LEVEL_NAME \
        --title="TITLE" --basic-level-spec=FILE_NAME
    

    Ganti kode berikut:

    • LEVEL_NAME: Nama unik untuk tingkat akses. Contoh, allowvm1.

    • TITLE: Judul singkat yang dapat dibaca manusia untuk tingkat akses. Contoh, allowvm1.

    • FILE_NAME: File YAML yang menentukan kondisi akses Anda untuk tingkat akses. Contoh, level.yaml.

    Untuk informasi selengkapnya, lihat Membuat akses dasar level aplikasi.

Mengonfigurasi kebijakan masuk untuk mengizinkan traffic API masuk ke bucket Cloud Storage

Untuk hanya mengizinkan akses dari VM1, konfigurasikan kebijakan masuk di sp2 perimeter untuk memungkinkan traffic Cloud Storage API memasuki perimeter.

  1. Buat file YAML yang menentukan kebijakan traffic masuk Anda.

    echo """
    - ingressFrom:
        identityType: ANY_IDENTITY
        sources:
        - accessLevel: accessPolicies/POLICY_NAME/accessLevels/ACCESS_LEVEL_NAME
      ingressTo:
        operations:
        - methodSelectors:
          - method: '*'
          serviceName: storage.googleapis.com
        resources:
        - '*'
    
    """ > ingress.yaml
    

    Ganti kode berikut:

    • POLICY_NAME: Nama numerik kebijakan akses Anda. Contoh, 1234567890.

    • ACCESS_LEVEL_NAME: Nama tingkat akses Anda. Contoh, allowvm1.

    Untuk informasi selengkapnya tentang file YAML, lihat Aturan masuk .

  2. Untuk memperbarui kebijakan masuk untuk perimeter layanan, jalankan perintah berikut Perintah gcloud CLI:

    gcloud access-context-manager perimeters update PERIMETER --set-ingress-policies=FILE_NAME
    

    Ganti kode berikut:

    • PERIMETER: Nama perimeter layanan Anda yang melindungi project Cloud Storage. Contoh, sp2.

    • FILE_NAME: File YAML yang menentukan kebijakan traffic masuk Anda. Contoh, ingress.yaml.

    Untuk informasi selengkapnya, lihat Memperbarui kebijakan masuk dan keluar untuk perimeter layanan.

Mengonfigurasi kebijakan keluar untuk mengizinkan traffic API keluar ke bucket Cloud Storage

Selain itu, konfigurasikan kebijakan keluar di perimeter sp1 untuk mengizinkan traffic Cloud Storage API untuk keluar dari perimeter.

  1. Membuat file YAML yang menentukan kebijakan traffic keluar Anda. Pastikan Anda mengatur kolom sourceRestriction sebagai SOURCE_RESTRICTION_ENABLED pada YAML .

    echo """
    - egressFrom:
        identityType: ANY_IDENTITY
        sourceRestriction: SOURCE_RESTRICTION_ENABLED
        sources:
        - accessLevel: accessPolicies/POLICY_NAME/accessLevels/ACCESS_LEVEL_NAME
      egressTo:
        operations:
        - methodSelectors:
          - method: '*'
          serviceName: storage.googleapis.com
        resources:
        - '*'
    
    """ > egress.yaml
    

    Ganti kode berikut:

    • POLICY_NAME: Nama numerik kebijakan akses Anda. Contoh, 1234567890.

    • ACCESS_LEVEL_NAME: Nama tingkat akses Anda. Contoh, allowvm1.

    Untuk informasi selengkapnya tentang file YAML, lihat Aturan traffic keluar .

  2. Untuk memperbarui kebijakan keluar bagi perimeter layanan, jalankan perintah berikut berikut:

    gcloud access-context-manager perimeters update PERIMETER --set-egress-policies=FILE_NAME
    

    Ganti kode berikut:

    • PERIMETER: Nama perimeter layanan Anda yang melindungi project host jaringan Anda. Contoh, sp1.

    • FILE_NAME: File YAML yang menentukan kebijakan traffic keluar Anda. Contoh, egress.yaml.

    Untuk informasi selengkapnya, lihat Memperbarui kebijakan masuk dan keluar untuk perimeter layanan.

Setelah Anda mengonfigurasi kebijakan masuk dan keluar, bucket Cloud Storage dapat diakses dari VM1, sedangkan bucket Cloud Storage tidak dapat diakses dari VM2.

Rekomendasi

  • Saat mengaktifkan alamat IP internal, sebaiknya Anda menonaktifkan IP untuk VM Anda. Penerusan IP mengizinkan VM dalam jaringan VPC yang sama untuk mengirim permintaan menggunakan alamat IP yang berbeda, yang menimbulkan risiko spoofing alamat IP.

  • Jika Anda ingin mengaktifkan penerusan IP, sebaiknya gunakan konfigurasi berikut untuk mengurangi risiko spoofing alamat IP:

    • Gunakan kebijakan organisasi Restrict VM IP Forwarding batasan (constraints/compute.vmCanIpForward) untuk memastikan hanya VM yang diotorisasi yang dapat mengaktifkan penerusan IP.

    • Menggunakan sumber untuk aturan firewall untuk membatasi alamat IP yang dapat berkomunikasi dengan VM yang memiliki IP penerusan diaktifkan. Selesaikan tugas-tugas berikut:

      • Siapkan aturan firewall masuk untuk mengizinkan traffic masuk hanya dari Rentang alamat IP ke VM yang mengaktifkan penerusan IP.

      • Siapkan aturan firewall keluar untuk mengizinkan traffic keluar hanya ke Rentang alamat IP dari VM yang mengaktifkan penerusan IP.