Mengonfigurasi Kontrol Layanan VPC

Kontrol Layanan VPC adalah fitur Google Cloud yang memungkinkan Anda menyiapkan perimeter yang aman untuk mencegah pemindahan data yang tidak sah. Panduan ini menunjukkan cara menggunakan Kontrol Layanan VPC dengan fungsi Cloud Run untuk meningkatkan keamanan fungsi Anda.

Untuk batasan pada integrasi ini, lihat dokumentasi Kontrol Layanan VPC.

Penyiapan tingkat organisasi

Untuk menggunakan Kontrol Layanan VPC dengan fungsi 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 fungsi Cloud Run dan bahwa developer hanya dapat men-deploy layanan yang mematuhi Kontrol Layanan VPC. Pelajari pewarisan dan pelanggaran lebih lanjut saat menetapkan kebijakan organisasi.

Menyiapkan perimeter Kontrol Layanan VPC

Untuk menyiapkan perimeter layanan, Anda memerlukan Organization Viewer (roles/resourcemanager.organizationViewer) dan Access Context Manager Editor ( roles/accesscontextmanager.policyEditor).

Ikuti Panduan Memulai Kontrol Layanan VPC untuk:

  1. Membuat perimeter layanan.

  2. Tambahkan satu atau beberapa project ke perimeter.

  3. Batasi Cloud Functions API dan Cloud Run Admin API.

Setelah menyiapkan perimeter layanan Anda, semua panggilan ke API yang dibatasi akan diperiksa untuk memastikan bahwa panggilan berasal dari dalam perimeter yang sama.

Opsional: Mengaktifkan akses perimeter untuk mesin pengembangan

Karena pemeriksaan Kontrol Layanan VPC diterapkan untuk Cloud Functions API, panggilan ke Cloud Functions API akan gagal kecuali panggilan tersebut berasal dari dalam perimeter layanan. Oleh karena itu, untuk mengelola fungsi dengan Cloud Functions API, UI fungsi Cloud Run di Google Cloud Console, atau Google Cloud CLI, pilih salah satu opsi berikut:

  • Gunakan mesin di dalam perimeter Kontrol Layanan VPC. Misalnya, Anda dapat menggunakan VM Compute Engine atau mesin lokal yang terhubung ke jaringan VPC Anda menggunakan VPN.

  • Beri developer fungsi akses ke perimeter. Misalnya, Anda dapat membuat tingkat akses yang mengaktifkan akses perimeter berdasarkan alamat IP atau identitas pengguna. Lihat Mengizinkan akses ke resource yang dilindungi dari luar perimeter untuk mengetahui informasi selengkapnya.

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 jaringan yang diizinkan untuk fungsi Cloud Run di perimeter layanan.

Batasi setelan ingress yang diizinkan

Kebijakan organisasi run.allowedIngress mengontrol setelan ingress yang boleh digunakan developer untuk fungsi Cloud Run. Tetapkan kebijakan organisasi ini untuk mewajibkan developer menggunakan nilai internal:

Konsol

  1. Buka halaman kebijakan Setelan masuk yang diizinkan di Google Cloud Console:

    Buka organization policy

  2. Klik Manage Policy.

  3. Di halaman Edit policy, pilih Customize.

  4. Di bagian Policy enforcement, pilih Replace.

  5. Di bagian Policy values, pilih Custom.

  6. Di bagian Policy values, pilih Allow.

  7. Di bagian Custom values, masukkan internal.

  8. Klik Set Policy.

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.

Setelah kebijakan organisasi ini diterapkan, semua fungsi harus menggunakan nilai internal untuk setelan ingress-nya. Artinya, fungsi HTTP hanya dapat menerima traffic yang berasal dari jaringan VPC dalam perimeter layanan. Deployment fungsi yang menentukan nilai berbeda akan gagal.

Batasi setelan egress konektor VPC yang diizinkan

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

Konsol

  1. Buka halaman kebijakan Setelan egress Konektor VPC yang diizinkan di konsol Google Cloud:

    Buka organization policy

  2. Klik Manage Policy.

  3. Di halaman Edit policy, pilih Customize.

  4. Di bagian Policy enforcement, pilih Replace.

  5. Di bagian Policy values, pilih Custom.

  6. Di bagian Policy values, pilih Allow.

  7. Di bagian Custom values, masukkan all-traffic.

  8. Klik Set Policy.

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.

Setelah kebijakan organisasi ini diterapkan, semua fungsi harus menggunakan nilai all-traffic untuk setelan egress-nya. Artinya, fungsi tersebut harus merutekan semua traffic keluar melalui jaringan VPC Anda. Deployment fungsi yang menentukan nilai yang berbeda akan gagal.

Dikombinasikan dengan kebijakan organisasi cloudfunctions.requireVPCConnector, kebijakan ini memaksa semua traffic keluar melintasi jaringan VPC yang tunduk pada aturan firewall dan perutean yang dikonfigurasi.

Penyiapan level project

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

Mengonfigurasi jaringan VPC

Untuk mengakses Google API dan layanan Google sekaligus memitigasi risiko pemindahan data yang tidak sah, permintaan harus dikirim ke rentang IP virtual (VIP) terbatas ,199.36.153.4/30 (restricted.googleapis.com ).

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

  1. Konfigurasi aturan firewallagar 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.

  2. Konfigurasikan DNS untuk me-resolve *.googleapis.com ke restricted.googleapis.com.

  3. Konfigurasi DNS dengan data A yang memetakan *.cloudfunctions.net ke rentang IP 199.36.153.4/30. Anda dapat melakukannya dengan Cloud DNS:

    gcloud dns managed-zones create ZONE_NAME \
    --visibility=private \
    --networks=https://www.googleapis.com/compute/v1/projects/PROJECT_NAME/global/networks/VPC_NAME \
    --description=none \
    --dns-name=cloudfunctions.net
    
    gcloud dns record-sets transaction start --zone=ZONE_NAME
    
    gcloud dns record-sets transaction add --name=*.cloudfunctions.net. \
    --type=A 199.36.153.4 199.36.153.5 199.36.153.6 199.36.153.7 \
    --zone=ZONE_NAME \
    --ttl=300
    
    gcloud dns record-sets transaction execute --zone=ZONE_NAME
    
  4. Aktifkan Akses Google Pribadi untuk Subnet Konektor VPC Anda.

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.

Memberi akun layanan Cloud Build akses ke perimeter Kontrol Layanan VPC

Fungsi Cloud Run menggunakan Cloud Build untuk mem-build kode sumber Anda ke dalam container yang dapat dijalankan. Untuk menggunakan fungsi Cloud Run dengan Kontrol Layanan VPC, Anda harus mengonfigurasi akun layanan Cloud Build (baik default maupun kustom) agar memiliki akses ke perimeter layanan Anda.

Menemukan nama akun layanan

Jika menggunakan akun layanan Cloud Build default, Anda dapat menemukan namanya sebagai berikut:

  1. Gunakan halaman IAM di Google Cloud Console untuk menemukan akun layanan Cloud Build.

    Membuka IAM

  2. Pastikan project yang benar ditampilkan di drop-down project.

  3. Telusuri cloudbuild.gserviceaccount.com. Alamat email dalam formulir PROJECT_NUMBER@cloudbuild.gserviceaccount.com adalah nama akun layanan.

Jika Anda memiliki akun layanan Cloud Build kustom, gunakan nama tersebut.

Memberi akun layanan akses ke perimeter layanan

Setelah Anda memiliki nama akun layanan, ikuti panduan di Membatasi akses menurut pengguna atau akun layanan untuk membuat tingkat akses untuk akun layanan. Kemudian, ikuti Menambahkan tingkat akses ke perimeter yang ada untuk menambahkan tingkat akses ke perimeter layanan Anda.

Men-deploy fungsi yang sesuai dengan Kontrol Layanan VPC

Setelah Kontrol Layanan VPC dikonfigurasi untuk fungsi Cloud Run, Anda harus memastikan bahwa semua fungsi yang di-deploy dalam perimeter layanan mematuhi kebijakan organisasi yang ditentukan. 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.
  • Semua layanan harus merutekan semua traffic keluar melalui jaringan VPC. Lihat Setelan egress untuk mengetahui informasi lebih lanjut.

Deployment fungsi yang tidak memenuhi kriteria ini akan gagal.

Mengaudit fungsi yang ada untuk memastikan 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.

Sebaiknya Anda mengaudit fungsi yang ada dan mengupdate atau men-deploy ulang fungsi jika diperlukan. Untuk memfasilitasi proses ini, Anda dapat membuat skrip yang menggunakan Cloud Functions API untuk mencantumkan fungsi dan menandai fungsi yang tidak menetapkan setelan jaringan yang tepat.

Menggunakan Kontrol Layanan VPC dengan fungsi di luar perimeter

Bagian sebelumnya berlaku untuk skenario saat Anda men-deploy fungsi Cloud Run dalam perimeter layanan Kontrol Layanan VPC.

Jika Anda perlu men-deploy fungsi di luar perimeter layanan, tetapi fungsi tersebut memerlukan akses ke resource di dalam perimeter, gunakan konfigurasi berikut:

  1. Beri akun layanan Cloud Build akses ke perimeter Kontrol Layanan VPC.
  2. Beri akses akun layanan runtime fungsi ke perimeter. Anda dapat melakukannya dengan membuat tingkat akses dan menambahkan tingkat akses ke perimeter layanan, atau dengan membuat kebijakan ingress di perimeter.
  3. Hubungkan fungsi ke jaringan VPC.
  4. Rutekan semua traffic keluar dari fungsi melalui jaringan VPC. Lihat Setelan egress untuk mengetahui informasi lebih lanjut.

Setelah Anda menyelesaikan konfigurasi ini, fungsi tersebut akan dapat menjangkau resource yang dilindungi oleh perimeter.