Menggunakan Kontrol Layanan VPC (VPC SC)

Kontrol Layanan VPC adalah fitur Google Cloud yang memungkinkan Anda menyiapkan perimeter yang aman untuk mencegah pemindahan data yang tidak sah. URL run.app default dan domain kustom tunduk pada Kontrol Layanan VPC. Panduan ini menunjukkan cara menggunakan Kontrol Layanan VPC dengan Cloud Run untuk memberikan keamanan tambahan pada layanan Anda.

Batasan dan saran

  • Untuk Artifact Registry atau Container Registry:

    • Registry tempat Anda menyimpan container harus berada di perimeter layanan Kontrol Layanan VPC yang sama dengan project yang di-deploy.
    • Kode yang dibuat harus berada dalam perimeter yang sama dengan registry tempat container dikirim.
  • Fitur deployment berkelanjutan tidak tersedia untuk project di dalam perimeter Kontrol Layanan VPC.

  • Saat layanan Cloud Run dipanggil, penegakan kebijakan Kontrol Layanan VPC tidak menggunakan informasi autentikasi IAM klien. Permintaan tersebut memiliki batasan berikut:

    • Aturan kebijakan ingress Kontrol Layanan VPC yang menggunakan akun utama IAM tidak didukung.
    • Tingkat akses perimeter Kontrol Layanan VPC yang menggunakan akun utama IAM tidak didukung.

Menyiapkan organisasi Anda untuk mendukung Kontrol Layanan VPC

Untuk menggunakan Kontrol Layanan VPC dengan Cloud Run, Anda dapat mengonfigurasi perimeter layanan di tingkat organisasi. Dengan mengonfigurasi kebijakan organisasi yang sesuai, Anda dapat memastikan bahwa pemeriksaan Kontrol Layanan VPC diterapkan saat menggunakan Cloud Run dan bahwa developer hanya dapat men-deploy layanan yang sesuai dengan Kontrol Layanan VPC. Pelajari pewarisan dan pelanggaran lebih lanjut saat menetapkan kebijakan organisasi.

Menyiapkan perimeter Kontrol Layanan VPC

Langkah-langkah berikut menunjukkan cara menyiapkan perimeter Kontrol Layanan VPC.

  1. Pastikan Anda memiliki peran yang diperlukan untuk mengelola Kontrol Layanan VPC.

  2. Di konsol Google Cloud, buka halaman Kontrol Layanan VPC.

    Buka halaman Kontrol Layanan VPC

  3. Jika diminta, pilih Organisasi Anda.

  4. Klik Perimeter Baru. Ketik nama untuk perimeter.

  5. Pilih project yang ingin Anda amankan di dalam perimeter.

    1. Klik Project.

    2. Di jendela Tambahkan Project, pilih project yang ingin ditambahkan.

      Jika menggunakan VPC Bersama, pastikan untuk menambahkan project host dan project layanan.

    3. Klik tombol Tambahkan Project.

  6. Pilih Cloud Run sebagai layanan yang ingin Anda amankan di dalam perimeter.

    1. Klik Layanan yang Dibatasi.

    2. Klik Tambahkan Layanan.

    3. Telusuri "Cloud Run". Kemudian, pilih Cloud Run Admin API.

    4. Klik Tambahkan Cloud Run Admin API.

  7. Aktifkan akses untuk developer.

    Mengaktifkan Kontrol Layanan VPC untuk Cloud Run akan mencegah semua akses dari luar perimeter, termasuk melihat dan men-deploy layanan dari mesin yang tidak berada di dalam perimeter, seperti laptop perusahaan. Agar developer dan operator aplikasi dapat melihat dan men-deploy resource dalam perimeter, Anda harus mengonfigurasi kebijakan ingress perimeter:

    1. Klik Kebijakan Ingress.

    2. Tentukan Sumber, Identitas, Project, dan Layanan.

    3. Klik Add Rule.

    Jika organisasi Anda menggunakan Access Context Manager, Anda juga dapat mengaktifkan akses untuk developer dengan menetapkan tingkat akses.

  8. Klik Buat Perimeter.

Setelah Anda menyelesaikan langkah-langkah ini, semua panggilan ke Cloud Run Admin API akan diperiksa untuk memastikan bahwa panggilan berasal dari dalam perimeter yang sama.

Menyiapkan kebijakan organisasi

Untuk mengelola kebijakan organisasi, Anda memerlukan peran Administrator Kebijakan Organisasi (roles/orgpolicy.policyAdmin).

Untuk mematuhi Kontrol Layanan VPC dan melindungi dari pemindahan data yang tidak sah, siapkan kebijakan organisasi berikut yang mengontrol setelan ingress dan egress yang diizinkan untuk Cloud Run di perimeter layanan.

Membatasi setelan ingress yang diizinkan

Kebijakan organisasi run.allowedIngress mengontrol setelan ingress yang boleh digunakan developer untuk Cloud Run. Tetapkan kebijakan organisasi ini untuk mewajibkan developer menggunakan nilai internal jika Anda hanya ingin mengizinkan permintaan internal, atau internal-and-cloud-load-balancing jika Anda ingin mengizinkan permintaan melalui Load Balancer Aplikasi eksternal, dengan kontrol akses yang dikelola oleh Cloud Load Balancing.

Untuk informasi lebih lanjut tentang setelan ini, lihat Membatasi ingress untuk Cloud Run

Konsol

  1. Buka halaman kebijakan Setelan ingress yang diizinkan (Cloud Run) di konsol Google Cloud:

    Buka kebijakan organisasi

  2. Klik Edit.

  3. Pada halaman Edit, pilih Sesuaikan.

  4. Di bagian Penegakan kebijakan, pilih Ganti.

  5. Di bagian Policy values, pilih Custom.

  6. Di bagian Policy values, pilih Allow.

  7. Di bagian Nilai kustom, masukkan internal. Jika Anda juga ingin mengizinkan traffic Cloud Load Balancing, klik Nilai kebijakan baru dan masukkan internal-and-cloud-load-balancing.

  8. Klik Simpan.

gcloud

Gunakan perintah gcloud resource-manager org-policies allow.

gcloud resource-manager org-policies allow \
  run.allowedIngress internal \
  --organization ORGANIZATION_ID

dengan ORGANIZATION_ID sebagai ID organisasi Anda. Jika Anda juga ingin mengizinkan traffic Cloud Load Balancing, ganti run.allowedIngress internal dengan run.allowedIngress internal-and-cloud-load-balancing.

Setelah kebijakan organisasi ini diterapkan, semua layanan harus menggunakan nilai yang diizinkan untuk setelan ingress mereka. Artinya, layanan Cloud Run hanya dapat menerima traffic yang berasal dari jaringan VPC dalam perimeter layanan. Percobaan untuk menetapkan ingress ke nilai yang berbeda akan diblokir oleh kebijakan organisasi.

Membatasi setelan egress konektor VPC yang diizinkan

Kebijakan organisasi run.allowedVPCEgress mengontrol setelan egress yang boleh digunakan developer untuk Cloud Run. Tetapkan kebijakan organisasi ini untuk hanya mengizinkan nilai all-traffic:

Konsol

  1. Buka halaman kebijakan Setelan egress VPC yang diizinkan (Cloud Run) di konsol Google Cloud:

    Buka kebijakan organisasi

  2. Klik Edit.

  3. Pada halaman Edit, pilih Sesuaikan.

  4. Di bagian Penegakan kebijakan, pilih Ganti.

  5. Di bagian Policy values, pilih Custom.

  6. Di bagian Policy values, pilih Allow.

  7. Di bagian Nilai kustom, masukkan all-traffic.

  8. Klik Simpan.

gcloud

Gunakan perintah gcloud resource-manager org-policies allow.

gcloud resource-manager org-policies allow \
  run.allowedVPCEgress all-traffic \
  --organization ORGANIZATION_ID

dengan ORGANIZATION_ID sebagai ID organisasi Anda.

Perilaku setelah kebijakan organisasi ditetapkan

Setelah kebijakan organisasi diterapkan, semua revisi baru harus menggunakan konektor VPC dan harus menggunakan nilai all-traffic untuk setelan egress. Kombinasi setelan ini merutekan semua traffic egress dari revisi ini melalui jaringan VPC, sehingga traffic ini tunduk pada aturan firewall jaringan VPC dan setelan lainnya. Deployment revisi baru yang menentukan nilai yang berbeda akan diblokir oleh kebijakan organisasi.

Kebijakan organisasi dan migrasi traffic

Untuk layanan yang ada sebelum kebijakan organisasi ditetapkan, Anda dapat terus memigrasikan traffic ke revisi yang tidak mematuhi kebijakan hingga semua traffic yang menayangkan revisi telah mematuhi kebijakan.

Perilaku ini memungkinkan Anda menguji dan meluncurkan revisi baru secara bertahap yang mematuhi kebijakan. Setelah semua revisi yang menayangkan traffic mematuhi kebijakan, setiap upaya memindahkan traffic ke revisi yang tidak mematuhi kebijakan akan diblokir oleh kebijakan organisasi.

Menyiapkan project untuk mendukung Kontrol Layanan VPC

Untuk project individu dalam perimeter layanan, Anda harus melakukan konfigurasi tambahan agar dapat menggunakan Kontrol Layanan VPC.

Mengonfigurasi jaringan VPC

Bagian ini menunjukkan cara mengonfigurasi jaringan VPC Anda agar permintaan dikirim ke IP virtual googleapis.com reguler yang secara otomatis dirutekan ke rentang IP virtual (VIP) yang dibatasi terbatas, 199.36.153.4/30 (restricted.googleapis.com) tempat layanan Cloud Run Anda tayangkan. Perubahan kode tidak diperlukan.

Untuk setiap jaringan VPC dalam sebuah project, ikuti langkah-langkah berikut untuk memblokir traffic keluar kecuali untuk traffic ke rentang VIP yang dibatasi:

  1. Aktifkan Akses Google Pribadi di subnet yang menghosting resource jaringan VPC Anda.

  2. Konfigurasi aturan firewall agar data tidak keluar dari jaringan VPC:

    • Buat penolakan akan egress yang memblokir semua traffic keluar.

    • Buat perizinan aturan egress yang mengizinkan traffic ke 199.36.153.4/30 di port TCP 443. Pastikan aturan tersebut memiliki prioritas sebelum penolakan aturan egress yang baru saja Anda buat—aturan ini hanya mengizinkan egress rentang VIP yang dibatasi.

  3. Buat kebijakan respons Cloud DNS.

    gcloud dns response-policies create RESPONSE_POLICY \
    --networks=NETWORK \
    --description=DESCRIPTION
    

    Ganti kode berikut:

    • RESPONSE_POLICY: nama untuk kebijakan respons Anda.
    • NETWORK: nama jaringan yang dikaitkan dengan kebijakan ini. Untuk menentukan beberapa jaringan, pisahkan nama tiap jaringan dengan koma, misalnya: network1,network2.
    • DESCRIPTION: deskripsi kebijakan respons, seperti Cloud Run VPC Service Controls response policy
  4. Tambahkan aturan ke kebijakan respons untuk me-resolve *.googleapis.com ke restricted.googleapis.com. Rentang alamat IP untuk restricted.googleapis.com adalah 199.36.153.4/30.

    gcloud dns response-policies rules create RESPONSE_POLICY_RULE \
    --response-policy=RESPONSE_POLICY \
    --dns-name=*.googleapis.com. \
    --local-data=name="restricted.googleapis.com.",type="A",ttl=300,rrdatas="199.36.153.4|199.36.153.5|199.36.153.6|199.36.153.7"
    

    Ganti kode berikut:

    • RESPONSE_POLICY_RULE: nama untuk aturan kebijakan respons Anda.
    • RESPONSE_POLICY: nama kebijakan respons yang Anda buat di langkah sebelumnya, dalam tanda kutip.
  5. Tambahkan aturan ke kebijakan respons untuk me-resolve *.run.app ke restricted.googleapis.com. Rentang alamat IP untuk restricted.googleapis.com adalah 199.36.153.4/30.

    gcloud dns response-policies rules create RESPONSE_POLICY_RULE \
    --response-policy=RESPONSE_POLICY \
    --dns-name=*.run.app. \
    --local-data=name="restricted.googleapis.com.",type="A",ttl=300,rrdatas="199.36.153.4|199.36.153.5|199.36.153.6|199.36.153.7"
    

    Ganti kode berikut:

    • RESPONSE_POLICY_RULE: nama untuk aturan kebijakan respons Anda.
    • RESPONSE_POLICY: nama kebijakan respons yang Anda tentukan pada langkah sebelumnya, dalam tanda kutip.

Pada tahap ini, permintaan yang berasal dari dalam jaringan VPC:

  • Tidak dapat keluar dari jaringan VPC, sehingga mencegah egress di luar perimeter layanan.
  • Hanya dapat menjangkau Google API dan layanan yang memeriksa Kontrol Layanan VPC, sehingga mencegah pemindahan yang tidak sah melalui Google API.

Men-deploy layanan Cloud Run yang mematuhi Kontrol Layanan VPC

Setelah Kontrol Layanan VPC dikonfigurasi untuk Cloud Run, pastikan semua layanan yang di-deploy dalam perimeter layanan yang mengaktifkan Kontrol Layanan VPC. Hal ini berarti:

  • Semua layanan harus menggunakan konektor Akses VPC Serverless. Lihat Menghubungkan ke jaringan VPC untuk mengetahui informasi lebih lanjut.
  • Semua layanan hanya boleh mengizinkan traffic dari sumber internal. Lihat Setelan ingress untuk mengetahui informasi lebih lanjut. Menyetel ingress ke "all" akan menonaktifkan penegakan Kontrol Layanan VPC.
  • Semua layanan harus merutekan semua traffic keluar melalui jaringan VPC. Lihat Setelan egress untuk mengetahui informasi lebih lanjut.

Mengaudit layanan yang ada untuk kepatuhan Kontrol Layanan VPC

Setelah menyiapkan Kontrol Layanan VPC, layanan baru yang dibuat di project dalam perimeter layanan akan otomatis diperiksa kepatuhannya. Namun, untuk menghindari gangguan workload yang ada, layanan yang ada akan terus berfungsi dan mungkin tidak mematuhi kebijakan organisasi.

Google merekomendasikan agar Anda mengaudit layanan secara berkala untuk memastikan setelan ingress dan egress Anda sesuai dengan persyaratan, serta mengupdate atau men-deploy ulang layanan jika diperlukan. Misalnya, Anda dapat membuat skrip yang menggunakan Cloud Run Admin API untuk mencantumkan dan menandai layanan Anda yang tidak menetapkan setelan jaringan yang tepat.