Kontrol pencegahan untuk konfigurasi resource yang dapat diterima

Last reviewed 2023-12-20 UTC

Sebaiknya tentukan batasan kebijakan yang menerapkan konfigurasi resource yang dapat diterima dan mencegah konfigurasi yang berisiko. Blueprint menggunakan kombinasi batasan kebijakan organisasi dan validasi Infrastructure as Code (IaC) di pipeline Anda. Kontrol ini mencegah pembuatan resource yang tidak memenuhi panduan kebijakan Anda. Menerapkan kontrol ini sejak awal desain dan build workload membantu Anda menghindari pekerjaan perbaikan di kemudian hari.

Batasan kebijakan organisasi

Layanan Kebijakan Organisasi menerapkan batasan untuk memastikan bahwa konfigurasi resource tertentu tidak dapat dibuat di organisasi Google Cloud Anda, bahkan oleh seseorang yang memiliki peran IAM dengan hak istimewa yang memadai.

Blueprint menerapkan kebijakan pada node organisasi sehingga kontrol ini diwariskan oleh semua folder dan project dalam organisasi. Paket kebijakan ini dirancang untuk mencegah konfigurasi berisiko tinggi tertentu, seperti mengekspos VM ke internet publik atau memberikan akses publik ke bucket penyimpanan, kecuali jika Anda sengaja mengizinkan pengecualian kebijakan.

Tabel berikut memperkenalkan batasan kebijakan organisasi yang diterapkan dalam cetak biru:

Batasan kebijakan organisasi Deskripsi

compute.disableNestedVirtualization

Virtualisasi bertingkat pada VM Compute Engine dapat menghindari pemantauan dan alat keamanan lainnya untuk VM Anda jika dikonfigurasi dengan buruk. Batasan ini mencegah pembuatan virtualisasi bertingkat.

compute.disableSerialPortAccess

Peran IAM seperti compute.instanceAdmin memungkinkan akses dengan hak istimewa ke port serial instance menggunakan kunci SSH. Jika kunci SSH terbuka, penyerang dapat mengakses port serial serta mengabaikan kontrol jaringan dan firewall. Batasan ini mencegah akses port serial.

compute.disableVpcExternalIpv6

Subnet IPv6 eksternal dapat terekspos ke akses internet tanpa izin jika tidak dikonfigurasi dengan benar. Batasan ini mencegah pembuatan subnet IPv6 eksternal.

compute.requireOsLogin

Perilaku default dalam menyetel kunci SSH dalam metadata dapat memungkinkan akses jarak jauh yang tidak sah ke VM jika kunci tersebut terekspos. Batasan ini menerapkan penggunaan OS Login, bukan kunci SSH berbasis metadata.

compute.restrictProtocolForwardingCreationForTypes

Penerusan protokol VM untuk alamat IP eksternal dapat menyebabkan traffic keluar internet yang tidak sah jika penerusan tidak dikonfigurasi dengan baik. Batasan ini mengizinkan penerusan protokol VM hanya untuk alamat internal.

compute.restrictXpnProjectLienRemoval

Menghapus project host VPC Bersama dapat mengganggu semua project layanan yang menggunakan resource jaringan. Batasan ini mencegah penghapusan yang tidak disengaja atau berbahaya pada project host VPC Bersama dengan mencegah penghapusan project lien pada project tersebut.

compute.setNewProjectDefaultToZonalDNSOnly

Setelan lama untuk DNS internal global (seluruh) project tidak direkomendasikan karena akan mengurangi ketersediaan layanan. Batasan ini mencegah penggunaan setelan lama.

compute.skipDefaultNetworkCreation

Jaringan VPC default dan aturan firewall VPC default yang terlalu permisif dibuat di setiap project baru yang mengaktifkan Compute Engine API. Batasan ini tidak akan membuat jaringan default dan aturan firewall VPC default.

compute.vmExternalIpAccess

Secara default, VM dibuat dengan alamat IPv4 eksternal yang dapat menyebabkan akses internet tanpa izin. Batasan ini mengonfigurasi daftar alamat IP eksternal yang diizinkan dan kosong yang dapat digunakan VM dan menolak yang lainnya.

essentialcontacts.allowedContactDomains

Secara default, Kontak Penting dapat dikonfigurasi untuk mengirim notifikasi tentang domain Anda ke domain lainnya. Batasan ini menetapkan bahwa hanya alamat email dalam domain yang disetujui yang dapat ditetapkan sebagai penerima untuk Kontak Penting.

iam.allowedPolicyMemberDomains

Secara default, kebijakan izinkan dapat diberikan ke Akun Google mana pun, termasuk akun yang tidak dikelola, dan akun milik organisasi eksternal. Batasan ini memastikan bahwa kebijakan izinkan di organisasi Anda hanya dapat diberikan ke akun terkelola dari domain Anda sendiri. Secara opsional, Anda dapat mengizinkan domain tambahan.

iam.automaticIamGrantsForDefaultServiceAccounts

Secara default, akun layanan default otomatis diberi peran yang terlalu permisif. Batasan ini mencegah pemberian peran IAM otomatis ke akun layanan default.

iam.disableServiceAccountKeyCreation

Kunci akun layanan adalah kredensial persisten berisiko tinggi, dan dalam sebagian besar kasus, alternatif yang lebih aman untuk kunci akun layanan dapat digunakan. Batasan ini mencegah pembuatan kunci akun layanan.

iam.disableServiceAccountKeyUpload

Mengupload materi kunci akun layanan dapat meningkatkan risiko jika materi kunci terekspos. Batasan ini mencegah upload kunci akun layanan.

sql.restrictAuthorizedNetworks

Instance Cloud SQL dapat terekspos ke akses internet yang tidak diautentikasi jika instance dikonfigurasi untuk menggunakan jaringan yang diizinkan tanpa Proxy Auth Cloud SQL. Kebijakan ini mencegah konfigurasi jaringan yang diizinkan untuk akses database dan memaksa penggunaan Cloud SQL Auth Proxy sebagai gantinya.

sql.restrictPublicIp

Instance Cloud SQL dapat terekspos ke akses internet yang tidak diautentikasi jika instance dibuat dengan alamat IP publik. Batasan ini mencegah alamat IP publik pada instance Cloud SQL.

storage.uniformBucketLevelAccess

Secara default, objek dalam Cloud Storage dapat diakses melalui Daftar Kontrol Akses (ACL) lama, bukan IAM, yang dapat menyebabkan kontrol akses yang tidak konsisten dan eksposur yang tidak disengaja jika salah dikonfigurasi. Akses ACL lama tidak terpengaruh oleh batasan iam.allowedPolicyMemberDomains. Batasan ini memberlakukan bahwa akses hanya dapat dikonfigurasi melalui akses level bucket seragam IAM, bukan ACL lama.

storage.publicAccessPrevention

Bucket Cloud Storage dapat terekspos ke akses internet yang tidak diautentikasi jika salah dikonfigurasi. Batasan ini mencegah izin ACL dan IAM yang memberikan akses ke allUsers dan allAuthenticatedUsers.

Kebijakan ini merupakan titik awal yang kami rekomendasikan untuk sebagian besar pelanggan dan sebagian besar skenario, tetapi Anda mungkin perlu mengubah batasan kebijakan organisasi untuk mengakomodasi jenis beban kerja tertentu. Misalnya, beban kerja yang menggunakan bucket Cloud Storage sebagai backend untuk Cloud CDN guna menghosting resource publik diblokir oleh storage.publicAccessPrevention, atau aplikasi Cloud Run yang ditampilkan kepada publik dan tidak memerlukan autentikasi akan diblokir oleh iam.allowedPolicyMemberDomains. Dalam kasus ini, ubah kebijakan organisasi di level folder atau project untuk mengizinkan pengecualian yang sempit. Anda juga dapat menambahkan batasan ke kebijakan organisasi secara bersyarat dengan menentukan tag yang memberikan pengecualian atau penerapan untuk kebijakan, lalu menerapkan tag ke project dan folder.

Untuk batasan tambahan, lihat batasan yang tersedia dan batasan khusus.

Validasi pra-deployment infrastruktur sebagai kode

Blueprint ini menggunakan pendekatan GitOps untuk mengelola infrastruktur, yang berarti bahwa semua perubahan infrastruktur diterapkan melalui infrastruktur sebagai kode (IaC) yang dikontrol versi dan dapat divalidasi sebelum di-deploy.

Kebijakan yang diterapkan dalam blueprint menentukan konfigurasi resource yang dapat diterima yang dapat di-deploy oleh pipeline Anda. Jika kode yang dikirimkan ke repositori GitHub Anda tidak lulus pemeriksaan kebijakan, tidak ada resource yang di-deploy.

Untuk mendapatkan informasi tentang penggunaan pipeline dan cara penerapan kontrol melalui otomatisasi CI/CD, lihat metodologi deployment.

Langkah selanjutnya