Mengembangkan aplikasi di lingkungan Google Cloud yang terbatas

Dokumen kami sering kali ditulis untuk membantu Anda menyiapkan 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 batasan keamanannya sendiri.

Artikel ini membantu Anda memecahkan masalah error deployment aplikasi yang mungkin Anda lihat di 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 tersebut disebabkan oleh pelanggaran kebijakan. Respons 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, perbarui konfigurasi deployment resource agar berfungsi dalam batasan.

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

  3. Jika Anda tidak yakin mengapa batasan diterapkan atau apa yang harus dilakukan, hubungi tim keamanan 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 telah dikonfigurasi dan membatasi deployment aplikasi Anda.

Masalah batasan keamanan umum

Saat men-deploy aplikasi di Google Cloud, Anda mungkin mengalami error seperti 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 dijelaskan 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. Konfigurasikan VM Anda untuk menonaktifkan virtualisasi bertingkat dengan akselerasi hardware.

Secara default, fitur ini diaktifkan untuk semua VM Compute Engine yang berjalan di platform CPU Intel Haswell atau yang lebih baru.
constraints/compute.requireShieldedVm Mewajibkan instance VM baru untuk menggunakan disk image Shielded dengan opsi Booting Aman, vTPM, dan Pemantauan Integritas diaktifkan. Opsi ini mencegah VM dimodifikasi dan data diakses atau diubah. Jangan aktifkan VM yang dilindungi saat Anda membuat VM.

Untuk membuat cluster GKE, Anda harus mengaktifkan node GKE yang dilindungi.

Dataflow saat ini tidak mendukung pekerja VM yang dilindungi.
constraints/compute.disableSerialPortAccess Menghapus vektor keamanan untuk berinteraksi dengan VM atau melihat output diagnostik yang dapat digunakan untuk membentuk serangan. Jangan aktifkan 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.

Alamat IP dan jaringan virtual

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

Sebagai gantinya, konfigurasi 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.
constraints/storage.uniformBucketLevelAccess Minimalkan risiko izin yang salah atau tidak konsisten diterapkan ke bucket penyimpanan dengan hanya mengizinkan Identity and Access Management (IAM) untuk digunakan. Aktifkan akses level bucket yang seragam untuk mengamankan bucket Cloud Storage Anda.
constraints/iam.allowedPolicyMemberDomains Membatasi akses resource Google Cloud hanya ke domain yang disetujui. Menggunakan akun dalam salah satu domain yang disetujui. Ada masalah umum tambahan untuk batasan ini.

Contoh error respons API

Pada contoh sebelumnya tentang pembatasan alamat IP publik eksternal dengan Cloud SQL, pelanggaran kebijakan menyebabkan API menampilkan error. Contoh yang lebih mendetail berikut menunjukkan respons API yang memberi tahu Anda batasan 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

Mencantumkan kebijakan organisasi yang diterapkan ke project Anda

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

Untuk melihat kebijakan atau pengecualian yang diterapkan untuk project Anda, gunakan perintah gcloud org-policies list:

gcloud org-policies list --project=PROJECT_ID

Ganti PROJECT_ID dengan project yang kebijakannya ingin Anda lihat diterapkan.

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

gcloud org-policies describe POLICY_NAME \
  --project=PROJECT_ID

Ganti kode berikut:

  • POLICY_NAME: nama kebijakan organisasi

  • PROJECT_ID: project yang kebijakannya ingin Anda lihat diterapkan

Langkah selanjutnya

Jika Anda tidak dapat menentukan tempat kebijakan diterapkan dan cara mengatasi batasan keamanan, hubungi tim keamanan atau operasi IT Anda. Setiap organisasi menerapkan kebijakan dan blueprint yang disesuaikan dengan lingkungannya.

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