Mengembangkan aplikasi di lingkungan Google Cloud yang terbatas

Dokumen kami sering kali ditulis untuk membantu Anda mengaktifkan dan menjalankan produk atau fitur, tetapi beberapa dokumen mungkin tidak berfungsi dengan benar jika organisasi Anda menerapkan batasan keamanan. Misalnya, perusahaan Anda mungkin menerapkan beberapa batasan keamanan dari Cloud Foundation Toolkit, blueprint keamanan Google Cloud, atau membuat blueprint keamanannya sendiri.

Artikel ini membantu Anda memecahkan masalah error deployment aplikasi yang mungkin Anda temui pada organisasi yang menggunakan batasan keamanan.

Memecahkan masalah batasan keamanan

Tim keamanan atau operasi IT Anda dapat mengaktifkan batasan keamanan melalui kebijakan organisasi. Batasan ini membatasi cara penggunaan resource organisasi Anda.

Saat Anda membuat permintaan API yang menampilkan error, respons API akan memberi tahu Anda apakah error disebabkan oleh pelanggaran kebijakan. Respons tersebut harus menjelaskan batasan yang dilanggar. Langkah-langkah pemecahan masalah berikut membantu Anda menentukan dan memahami apakah pelanggaran terjadi:

  1. Tinjau pesan error respons API. Dapatkah Anda mengidentifikasi batasan keamanan yang dilanggar oleh deployment Anda?

    Contoh berikut memberi tahu Anda bahwa batasan sql.restrictPublicIp adalah masalahnya:

    Organization Policy check failure
    The external IP of this instance violates the constraints/sql.restrictPublicIp enforced
    
  2. Jika Anda memahami pelanggaran kebijakan tersebut, perbarui konfigurasi deployment resource agar berfungsi sesuai batasan.

    Pada contoh sebelumnya tentang pembatasan alamat IP publik eksternal, konfigurasikan instance Cloud SQL Anda untuk menggunakan alamat IP pribadi internal.

  3. Jika tidak yakin mengapa batasan tersebut diterapkan atau apa yang harus dilakukan, bekerja samalah dengan tim keamanan Anda untuk memahami tempat kebijakan diterapkan dalam hierarki organisasi dan solusi yang disarankan.

    Periksa apakah ada template deployment, seperti template Terraform, yang dibagikan di organisasi Anda. Template ini harus menjelaskan cara infrastruktur Google Cloud dikonfigurasi dan membatasi deployment aplikasi Anda.

Masalah kendala keamanan yang umum

Saat men-deploy aplikasi di Google Cloud, Anda mungkin menemukan error seperti dalam contoh berikut:

ERROR: (gcloud.alpha.sql.instances.create) HTTPError 400: Invalid request:
Organization Policy check failure: the external IP of this instance violates the
constraints/sql.restrictPublicIp enforced at the 123456789 project.

Dalam contoh ini, Anda tidak dapat mengonfigurasi instance Cloud SQL untuk menggunakan alamat IP publik eksternal. Batasan keamanan diterapkan dari kebijakan yang diterapkan ke lingkungan Anda.

Batasan keamanan umum berikut dapat diaktifkan dan diperinci dalam respons error API saat Anda mengembangkan aplikasi.

Compute Engine

Nama batasan Alasan penerapannya Solusi yang disarankan
constraints/compute.disableNestedVirtualization Mencegah hypervisor yang kompatibel dengan KVM diinstal di dalam VM. Perilaku ini dapat menimbulkan risiko keamanan tanpa patch dan pengelolaan yang memadai. Konfigurasi VM Anda untuk menonaktifkan virtualisasi bertingkat dengan akselerasi hardware.

Secara default, opsi ini diaktifkan untuk semua VM Compute Engine yang berjalan di Intel Haswell atau platform CPU yang lebih baru.
constraints/compute.requireShieldedVm Memerlukan instance VM baru untuk menggunakan disk image Terlindungi dengan opsi Booting Aman, vTPM, dan Pemantauan Integritas yang diaktifkan. Opsi ini mencegah VM dirusak dan data diakses atau diubah. Jangan mengaktifkan shielded VM saat membuat VM.

Untuk membuat cluster GKE, Anda harus mengaktifkan node GKE terlindung.

Dataflow saat ini tidak mendukung pekerja shielded VM.
constraints/compute.disableSerialPortAccess Menghapus vektor keamanan untuk berinteraksi dengan VM atau melihat output diagnostik yang dapat digunakan untuk membentuk serangan. Jangan mengaktifkan akses port serial saat Anda membuat VM.
constraints/compute.disableGuestAttributesAccess Minimalkan jumlah informasi tentang host dan platform dasar yang dapat disalahgunakan oleh aplikasi berbahaya. Jangan gunakan Compute Engine API untuk membaca atribut tamu VM Compute Engine Anda.
constraints/compute.vmExternalIpAccess Mencegah aplikasi berjalan dengan alamat IP eksternal dan dapat diakses dari Internet. Nonaktifkan akses IP eksternal untuk VM Anda. Anda hanya dapat menggunakan alamat IP pribadi internal.

GKE dapat menggunakan cluster pribadi tanpa alamat IP publik.

Dataprep dan Dataflow saat ini tidak mendukung alamat IP pribadi.

Jaringan virtual dan alamat IP

Nama batasan Alasan penerapannya Solusi yang disarankan
constraints/compute.skipDefaultNetworkCreation Pastikan hanya Virtual Private Cloud (VPC) yang dikelola perusahaan yang dapat dibuat dan aturan pemfilteran atau traffic jaringan diterapkan. Hubungkan aplikasi Anda ke VPC yang ada di organisasi Anda. VPC yang dibuat otomatis default tidak di-deploy untuk project baru.
constraints/compute.restrictXpnProjectLienRemoval Mencegah VPC bersama terhapus secara tidak sengaja saat resource dalam project lain mengandalkan layanan jaringan yang disediakannya. Jangan mencoba menghapus VPC bersama. Pastikan Anda menargetkan resource yang benar untuk dihapus.
constraints/sql.restrictPublicIp Cegah instance Cloud SQL berjalan dengan alamat IP eksternal dan dapat diakses dari Internet. Jangan mengonfigurasi instance Cloud SQL Anda untuk menggunakan alamat IP publik eksternal.

Sebagai gantinya, konfigurasikan instance Cloud SQL Anda untuk menggunakan alamat IP pribadi internal.

Identitas dan autentikasi

Nama batasan Alasan penerapannya Solusi yang disarankan
constraints/iam.disableServiceAccountKeyCreation Kunci akun layanan dapat menimbulkan risiko keamanan jika terekspos, jadi cegah kunci tersebut diekspor. Lakukan autentikasi dengan menggunakan alternatif yang lebih aman untuk kunci akun layanan.
batasan/storage.uniformBucketLevelAccess Minimalkan risiko penerapan izin yang salah atau tidak konsisten ke bucket penyimpanan dengan hanya mengizinkan penggunaan Identity and Access Management (IAM). Aktifkan akses level bucket seragam untuk mengamankan bucket Cloud Storage.
constraints/iam.allowedPolicyMemberDomains Batasi akses resource Google Cloud hanya untuk domain yang disetujui. Gunakan akun dalam salah satu domain yang disetujui. Ada masalah umum tambahan untuk batasan ini.

Contoh error respons API

Pada contoh sebelumnya yang membatasi alamat IP publik eksternal dengan Cloud SQL, pelanggaran kebijakan menyebabkan API menampilkan error. Contoh yang lebih detail berikut menunjukkan respons API yang memberi tahu Anda batasan mana yang menyebabkan permintaan gagal. Lihat respons API Anda sendiri untuk memahami alasan deployment aplikasi gagal.

Kegagalan Cloud SQL dengan Google Cloud CLI:

$ gcloud alpha sql instances create mysql-node --project my-sql-project

ERROR: (gcloud.alpha.sql.instances.create) HTTPError 400: Invalid request:
Organization Policy check failure: the external IP of this instance violates the
constraints/sql.restrictPublicIp enforced at the 123456789 project.

Kegagalan Cloud SQL dengan Terraform:

$ terraform apply plan.out

[...]
module.mysql-db.google_sql_database_instance.default: Creating...

Error: Error, failed to create instance backend01-db-1c81e0e3: googleapi:
Error 400: Invalid request: Organization Policy check failure: the external IP
of this instance violates the constraints/sql.restrictPublicIp enforced at the
123456789 project., invalid

Cantumkan kebijakan organisasi yang diterapkan ke project Anda

Project Anda mungkin mewarisi kebijakan dari tingkat folder atau organisasi. Bergantung pada peran akses, Anda mungkin tidak dapat melihat kebijakan yang diterapkan pada tingkat yang lebih tinggi dalam hierarki untuk melihat tempat batasan yang dilanggar diterapkan.

Untuk melihat kebijakan atau pengecualian yang diterapkan pada project Anda, gunakan perintah gcloud alpha resource-manager org-policies list dan tentukan project ID Anda dengan parameter --project:

gcloud alpha resource-manager org-policies list --project <project-id>

Untuk mengetahui informasi selengkapnya tentang kebijakan yang diterapkan, gunakan perintah gcloud alpha resource-manager org-policies meet. Berikan nama kebijakan yang akan dijelaskan, dan project ID Anda dengan parameter --project:

gcloud alpha resource-manager org-policies describe <policy-name> --project <project-id>

Langkah selanjutnya

Jika Anda tidak dapat menentukan di mana kebijakan diterapkan dan cara mengatasi kendala keamanan, hubungi tim operasi atau keamanan IT Anda. Setiap organisasi menerapkan kebijakan dan cetak biru yang disesuaikan dengan lingkungannya.

Untuk mengetahui informasi selengkapnya tentang semua kontrol yang dapat diterapkan di organisasi Anda, lihat daftar batasan kebijakan organisasi.