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.
Pastikan Anda memiliki peran yang diperlukan untuk mengelola Kontrol Layanan VPC.
Di konsol Google Cloud, buka halaman Kontrol Layanan VPC.
Jika diminta, pilih Organisasi Anda.
Klik Kelola Kebijakan Akses. Pilih kebijakan akses atau buat kebijakan. Kebijakan akses harus menyertakan semua project yang ingin Anda tambahkan ke perimeter.
Klik Perimeter Baru. Ketik nama untuk perimeter.
Pilih project yang ingin Anda amankan di dalam perimeter.
Klik Project.
Di jendela Tambahkan Project, pilih project yang ingin ditambahkan.
Jika menggunakan VPC Bersama, pastikan untuk menambahkan project host dan project layanan.
Klik tombol Tambahkan Project.
Pilih Cloud Run sebagai layanan yang ingin Anda amankan di dalam perimeter.
Klik Layanan yang Dibatasi.
Klik Tambahkan Layanan.
Telusuri "Cloud Run". Kemudian pilih Cloud Run Admin API.
Klik Tambahkan Cloud Run Admin API.
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:
Klik Kebijakan Ingress.
Tentukan Sumber, Identitas, Project, dan Layanan.
Klik Add Rule.
Jika organisasi Anda menggunakan Access Context Manager, Anda juga dapat mengaktifkan akses untuk developer dengan menetapkan tingkat akses.
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.
Batasi 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
Buka halaman kebijakan Setelan ingress yang diizinkan (Cloud Run) di konsol Google Cloud:
Klik Edit.
Pada halaman Edit, pilih Sesuaikan.
Di bagian Penegakan kebijakan, pilih Ganti.
Di bagian Policy values, pilih Custom.
Di bagian Policy values, pilih Allow.
Di bagian Nilai kustom, masukkan
internal
. Jika Anda juga ingin mengizinkan traffic Cloud Load Balancing, klik Nilai kebijakan baru dan masukkaninternal-and-cloud-load-balancing
.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 traffic keluar 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
Buka halaman kebijakan Setelan egress VPC yang diizinkan (Cloud Run) di konsol Google Cloud:
Klik Edit.
Pada halaman Edit, pilih Sesuaikan.
Di bagian Penegakan kebijakan, pilih Ganti.
Di bagian Policy values, pilih Custom.
Di bagian Policy values, pilih Allow.
Di bagian Nilai kustom, masukkan
all-traffic
.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 traffic keluar VPC Langsung atau konektor Akses VPC Serverless dan harus menggunakan nilai all-traffic
untuk setelan egress. Kombinasi ini
merutekan semua traffic keluar 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
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 yang dikirim ke domain googleapis.com
reguler secara otomatis
dirutekan ke rentang IP virtual (VIP) yang dibatasi terbatas,
199.36.153.4/30
(restricted.googleapis.com
) tempat layanan Cloud Run
Anda ditayangkan. 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:
Aktifkan Akses Google Pribadi di subnet yang menghosting resource jaringan VPC Anda.
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.
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, sepertiCloud Run VPC Service Controls response policy
Tambahkan aturan ke kebijakan respons untuk me-resolve
*.googleapis.com
kerestricted.googleapis.com
. Rentang alamat IP untukrestricted.googleapis.com
adalah199.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.
Tambahkan aturan ke kebijakan respons untuk me-resolve
*.run.app
kerestricted.googleapis.com
. Rentang alamat IP untukrestricted.googleapis.com
adalah199.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 dan tugas Cloud Run yang mematuhi Kontrol Layanan VPC
Setelah Kontrol Layanan VPC dikonfigurasi untuk Cloud Run, pastikan semua layanan dan tugas Cloud Run yang di-deploy dalam perimeter layanan mengaktifkan Kontrol Layanan VPC. Hal ini memerlukan hal berikut:
- Layanan dan tugas Cloud Run harus menggunakan traffic keluar VPC Langsung atau konektor Akses VPC Serverless. Lihat Menghubungkan ke jaringan VPC untuk mengetahui informasi lebih lanjut.
- Layanan dan tugas Cloud Run harus merutekan semua traffic keluar melalui jaringan VPC. Lihat Setelan egress untuk mengetahui informasi selengkapnya.
- Layanan Cloud Run 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.
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.