Ringkasan Keamanan

Halaman ini memberikan ringkasan tentang fitur keamanan Container-Optimized OS yang berjalan di Google Cloud.

Keamanan OS

Berdasarkan Chromium OS, Container-Optimized OS dari Google menerapkan beberapa prinsip desain keamanan untuk menyediakan platform yang dikonfigurasi dengan baik untuk menjalankan layanan produksi.

Jejak OS minimal

Hal ini merupakan inti dari keamanan Container-Optimized OS. Karena Container-Optimized OS dioptimalkan untuk menjalankan container dan container memaketkan dependensi mereka sendiri, kita dapat memangkas paket yang tidak perlu sehingga meminimalkan permukaan serangan OS.

Sistem file root yang tidak dapat diubah dan booting terverifikasi

Sistem file root Container-Optimized OS selalu dipasang sebagai hanya baca. Selain itu, checksum-nya dihitung pada waktu build dan diverifikasi oleh kernel pada setiap booting. Mekanisme ini mencegah penyerang "memiliki" komputer melalui perubahan lokal permanen. Selain itu, beberapa pemasangan lainnya tidak dapat dieksekusi secara default. Lihat Sistem File untuk mengetahui detailnya.

Konfigurasi stateless

Meskipun memiliki sistem file root hanya baca baik untuk keamanan, hal ini membuat sistem sulit digunakan. Misalnya, kita harus dapat membuat dan menambahkan pengguna agar dapat login ke sistem. Untuk mengatasi hal ini, kita menyesuaikan sistem file root sehingga /etc/ dapat ditulis, tetapi stateless. Hal ini memungkinkan Anda menulis setelan konfigurasi pada waktu proses, tetapi setelan tersebut tidak dipertahankan di seluruh proses mulai ulang. Dengan demikian, setiap kali node Container-Optimized OS dimulai ulang, node tersebut akan dimulai dari awal. Data tertentu, seperti direktori rumah, log, dan image Docker pengguna, tetap ada di seluruh mulai ulang, karena bukan bagian dari sistem file root.

Kernel yang dioptimalkan keamanannya

Container-Optimized OS mengaktifkan beberapa fitur kernel hardening keamanan, termasuk Integrity Measurement Architecture (IMA), Audit, Kernel Page Table Isolation (KPTI), dan beberapa Linux Security Module (LSM) dari Chromium OS. Selain itu, Container-Optimized OS mendukung fitur keamanan seperti seccomp dan AppArmor yang memungkinkan penerapan kebijakan keamanan yang lebih terperinci.

Default yang berfokus pada keamanan

Container-Optimized OS memberikan tingkat hardening lain dengan menyediakan nilai default yang mengutamakan keamanan untuk beberapa fitur. Hal ini mencakup hal-hal seperti setelan sysctl yang menonaktifkan ptrace dan BPF tanpa hak istimewa, mengunci firewall, dan sebagainya. Setelan default ini, jika diterapkan secara otomatis ke kumpulan instance, akan membantu mengamankan seluruh cluster, project, dan organisasi.

Update otomatis

Fitur update otomatis Container-Optimized OS memungkinkan pengiriman patch keamanan secara tepat waktu ke VM yang sedang berjalan. Saat Container-Optimized OS dikelola oleh Kubernetes Engine, upgrade otomatis node akan menyeimbangkan keamanan dan stabilitas.

Filesystem

Berikut adalah daftar jalur dalam sistem file image node Container-Optimized OS, beserta properti dan penggunaan yang direkomendasikan:

Jalur Properti Tujuan
/
  • hanya baca
  • dapat dieksekusi
Sistem file root dipasang sebagai hanya baca untuk menjaga integritas. Kernel memverifikasi integritas sistem file root selama booting, dan akan menolak booting jika terjadi error.
/home
/var
  • dapat ditulis
  • tidak dapat dieksekusi
  • stateful
Jalur ini dimaksudkan untuk menyimpan data yang akan dipertahankan selama boot disk masih digunakan. File tersebut dipasang dari /mnt/stateful_partition.
/var/lib/google
/var/lib/docker
/var/lib/toolbox
  • dapat ditulis
  • dapat dieksekusi
  • stateful
Jalur ini merupakan direktori kerja untuk paket Compute Engine (misalnya, layanan pengelola akun), Docker, dan Toolbox.
/var/lib/cloud
  • dapat ditulis
  • dapat dieksekusi
  • stateless
  • tmpfs
Jalur ini adalah direktori kerja paket cloud-init.
/etc
  • dapat ditulis
  • dapat dieksekusi
  • stateless
  • tmpfs
Biasanya menyimpan konfigurasi Anda (misalnya, layanan systemd yang ditentukan melalui cloud-init). Sebaiknya tangkap status instance yang diinginkan dari instance Anda di cloud-init, karena cloud-init diterapkan saat instance baru dibuat serta saat instance dimulai ulang.
/tmp
  • dapat ditulis
  • tidak dapat dieksekusi
  • stateless
  • tmpfs
Biasanya digunakan sebagai kapasitas sementara dan tidak boleh digunakan untuk menyimpan data persisten.
/mnt/disks
  • dapat ditulis
  • dapat dieksekusi
  • stateless
  • tmpfs
Anda dapat memasang persistent disk di direktori pada /mnt/disks.

Firewall

Secara default, Container-Optimized OS dikonfigurasi untuk menghentikan semua koneksi TCP/UDP yang masuk kecuali SSH di port 22. Lihat Mengonfigurasi Firewall Host tentang cara mengubah setelan default untuk membuka lebih banyak port.

Akses instance

Secara default, Container-Optimized OS tidak berisi akun pengguna yang dapat diakses. Akun pengguna dan kunci SSH dikelola melalui metadata instance atau project atau Login OS. Login OS memungkinkan Anda mengelola akses ke instance menggunakan IAM. Hal ini memungkinkan kontrol akses yang lebih terperinci (sudo versus non-sudo), kunci SSH yang dapat diidentifikasi, dan kebijakan login organisasi.

Daemon SSH dikonfigurasi untuk tidak mengizinkan autentikasi berbasis sandi dan untuk tidak mengizinkan login root. Namun, hal ini tidak mencegah pengguna mendapatkan hak istimewa root menggunakan sudo setelah login, kecuali jika akun pengguna dikelola dengan Login OS.

Keamanan Infrastruktur

Selain berbagai fitur hardening di OS itu sendiri, tim Container-Optimized OS juga menangani supply chain software dengan serius dan memprioritaskan keamanan infrastruktur saat mengembangkan, mem-build, dan men-deploy image, berdasarkan pengalaman bertahun-tahun dari Chromium OS dan Google secara umum.

Dibuat dari sumber di Google

Setiap paket di Container-Optimized OS, termasuk kernel Linux itu sendiri, di-build dari sumber dari repositori kode ChromiumOS. Artinya, kita tahu dengan tepat apa yang masuk ke OS, siapa yang memeriksanya, versi mana yang diperkenalkan, dll. Hal ini juga memungkinkan kita melakukan patch dan mengupdate paket dengan cepat jika ada kerentanan yang ditemukan, di tingkat mana pun.

Pemindaian dan respons kerentanan berkelanjutan (CVE)

Sistem pemindaian CVE akan memberi tahu kami setiap kali kerentanan ditemukan di kernel atau paket OS apa pun. Ini adalah sistem yang sama dengan yang digunakan untuk mendeteksi kerentanan di Android dan Chromium OS. Tim Container-Optimized OS merespons dengan prioritas untuk membuat rilis yang di-patch. Tim Container-Optimized OS juga bekerja sama dengan tim respons insiden Google untuk menyediakan patch keamanan yang lebih luas dengan cepat di Container-Optimized OS.

Proses pengujian dan kualifikasi

Sebelum memublikasikan image OS yang Dioptimalkan untuk Container baru ke Google Cloud, kami mengujinya di beberapa tingkat—termasuk pengujian fuzz kernel oleh syzkaller, pengujian Kubernetes tingkat cluster, pengujian integrasi dengan fitur Compute Engine, dan beberapa benchmark performa. Hal ini memastikan stabilitas dan kualitas rilis kami.