Kredensial Tersimpan OverlayFS Memisahkan Akses Overlay dari Akses Filesystem Dasar

Sebuah proses membuka path melalui mount OverlayFS dan tampak mengakses satu objek filesystem biasa. Kernel sebenarnya dapat mengacu ke layer atas, layer bawah, atau keduanya, sedangkan operasi tulis dapat memicu copy-up sebelum operasi yang diminta diteruskan. Indireksi ini membentuk persoalan otorisasi: pemanggil harus diizinkan memakai objek yang disajikan overlay, sementara akses internal ke filesystem dasar juga harus berjalan dengan identitas keamanan yang terdefinisi.

OverlayFS menangani pemeriksaan tersebut dengan dua konteks kredensial. Akses terhadap objek overlay dievaluasi memakai kredensial task saat ini. Operasi yang dijalankan OverlayFS pada filesystem atas atau bawah memakai kredensial yang tersimpan bersama superblock overlay. Pemisahan ini merupakan bagian dari model izin filesystem, bukan sekadar detail implementasi.

Satu pathname melintasi dua konteks otorisasi

Pemeriksaan izin pertama berlaku pada objek yang disajikan OverlayFS. Discretionary access control biasa dan kebijakan Linux Security Module yang relevan dapat menolak pemanggil pada layer ini. Pemeriksaan tersebut mengikuti kredensial pemanggil saat ini, sehingga perubahan identitas proses dapat mengubah kemampuannya mengakses namespace overlay.

Jika pemeriksaan itu berhasil, OverlayFS mungkin perlu menjalankan operasi pada inode nyata di filesystem atas atau bawah. Operasi dasar tersebut diperiksa lagi, tetapi memakai kredensial tersimpan. Pemeriksaan kedua mencegah implementasi overlay sekadar meminjam otoritas filesystem dasar yang kebetulan dimiliki pemanggil saat ini.

Kedua pemeriksaan menjawab persoalan yang berbeda. Pemeriksaan overlay menentukan apakah pemanggil boleh bertindak pada objek gabungan. Pemeriksaan dasar menentukan apakah identitas yang diberikan kepada OverlayFS boleh menjalankan pekerjaan filesystem yang diperlukan untuk memenuhi permintaan tersebut. Karena itu, sebuah deployment dapat menghasilkan penolakan meskipun salah satu sisi batas akan mengizinkan operasi jika diperiksa secara terpisah.

Pemisahan ini terlihat jelas saat filesystem dasar memiliki kebijakan yang tidak identik dengan tampilan overlay gabungan. Mode POSIX, ACL, label LSM, kondisi mount, dan perilaku izin khusus filesystem dapat memengaruhi hasil akhir.

Superblock menyimpan identitas untuk akses dasar

OverlayFS menyimpan kredensial ketika superblock dibuat. Dengan antarmuka lama mount(2), kredensial task yang melakukan mount disimpan. Dengan mount API yang lebih baru, titik default-nya adalah task yang membuat superblock melalui fsconfig() memakai FSCONFIG_CMD_CREATE.

Waktu pengambilan kredensial penting pada perangkat lunak yang memisahkan konstruksi mount di antara helper atau transisi privilege. Penetapan opsi mount dan pembuatan superblock merupakan operasi terpisah pada API baru. Identitas yang aktif saat superblock dibuat menjadi bagian dari perilaku akses filesystem dasar berikutnya.

Linux juga menyediakan opsi mount OverlayFS override_creds untuk mount API baru. Ketika opsi ini digunakan, kredensial task pemanggil direkam sebagai pengganti identitas default dari pembuatan superblock. Opsi ini mengubah titik pemilihan kredensial; opsi tersebut tidak menyatukan dua pemeriksaan izin menjadi satu.

Penyimpanan kredensial dengan demikian merupakan input arsitektural. Mount yang dirakit layanan berprivilege dapat membawa otoritas dasar yang berbeda dari mount yang superblock-nya dibuat setelah layanan tersebut menurunkan privilege, meskipun keduanya menyajikan tata letak direktori yang serupa.

Copy-up memperlihatkan batas saat operasi tulis

File pada layer bawah dapat terlihat melalui mount gabungan tanpa salinan di layer atas. Operasi tulis yang memerlukan modifikasi tidak dapat mengubah objek bawah read-only secara langsung, sehingga OverlayFS dapat membuat objek yang sesuai di layer atas serta menyalin data dan metadata sebelum melanjutkan.

Pemeriksaan izin untuk pemanggil tetap berlaku pada objek overlay. Pembuatan internal, pekerjaan metadata, dan akses ke objek dasar dilakukan melalui OverlayFS serta dibatasi oleh kredensial tersimpan dan pemeriksaan milik filesystem dasar.

Artinya, izin sebelum copy-up dan setelah copy-up ditujukan agar tetap konsisten dari sudut pandang overlay milik pemanggil. OverlayFS mendokumentasikan hal ini sebagai sasaran inti model izinnya. Model tersebut juga mensyaratkan agar task yang membuat mount overlay tidak memperoleh privilege tambahan hanya melalui overlay.

Sasaran itu tidak berarti akses langsung ke direktori atas atau bawah setara dengan akses melalui mount gabungan. Sebuah task dapat memperoleh hasil berbeda melalui overlay karena path overlay menambahkan tampilan objeknya sendiri dan pemeriksaan kredensial tersimpan. Akses langsung ke layer dasar melewati komposisi tersebut dan diatur oleh kredensial task terhadap filesystem dasar itu sendiri.

Privilege tersimpan dapat memberi overlay kemampuan lebih besar daripada pemanggil

Model izin memungkinkan pemanggil memperoleh akses melalui overlay dibandingkan akses langsung oleh pemanggil yang sama ke layer dasar. Hal ini tidak sama dengan pembuat mount memperoleh privilege baru. Overlay dapat bertindak sebagai perantara terkontrol yang identitas tersimpannya memiliki otoritas pada filesystem dasar, sementara pemanggil dibatasi pada namespace gabungan dan pemeriksaan izinnya.

Properti ini berguna hanya jika kebijakan pada sisi overlay diperlakukan sebagai batas keamanan nyata. Jika pemanggil tidak tepercaya juga dapat menjangkau direktori atas atau bawah secara langsung, mereka dapat menghadapi permukaan otorisasi yang berbeda. Konstruksi namespace, bind mount, izin direktori, dan kebijakan LSM karena itu dapat sama pentingnya dengan opsi mount OverlayFS.

Model tersebut menyerupai deputy yang sempit: implementasi filesystem menjalankan pekerjaan dasar dengan identitas yang dipilih saat konstruksi mount. Pemanggil tidak menerima kredensial itu sebagai kredensial proses, tetapi operasi overlay yang berhasil dapat menyebabkan pekerjaan berlangsung di bawah kredensial tersebut. Tinjauan keamanan karena itu perlu berfokus pada operasi yang diekspos melalui mount gabungan, bukan menganggap identitas tersimpan sebagai detail internal yang tidak berpengaruh.

Operasi metadata dapat melibatkan kedua layer

OverlayFS tidak hanya mengarahkan ulang data file. Rename, unlink, perilaku penggabungan direktori, whiteout, direktori opaque, extended attribute, dan metadata copy-up dapat memerlukan operasi pada objek layer atas sambil mempertahankan semantik namespace gabungan.

Setiap operasi tersebut dapat berpindah dari pemeriksaan overlay untuk pemanggil menuju pekerjaan dasar. Operasi dasar yang tepat bergantung pada keadaan objek dan tindakan yang diminta, sehingga keberhasilan read tidak menjamin rename atau write berikutnya akan berhasil. Operasi berikutnya dapat memerlukan pembuatan objek atau perubahan metadata pada layer atas yang memicu pemeriksaan izin dasar tambahan.

Kondisi ini juga membuat kegagalan izin sensitif terhadap keadaan layer. Dua path dengan mode bit yang terlihat serupa dapat berperilaku berbeda jika salah satunya sudah memiliki objek atas sementara yang lain masih memerlukan copy-up. Metadata overlay yang terlihat bukan deskripsi lengkap atas setiap izin dasar yang mungkin ditemui operasi mutasi berikutnya.

Diagnosis operasional karena itu perlu mempertahankan perbedaan antara penolakan pada overlay dan penolakan yang muncul saat OverlayFS bertindak pada filesystem dasar. Menganggap setiap EACCES atau EPERM sebagai pemeriksaan sederhana terhadap inode yang terlihat dapat menyamarkan batas kredensial yang menghasilkan kegagalan.

Kebijakan LSM tetap menjadi bagian dari kedua keputusan

OverlayFS tidak menggantikan enforcement Linux Security Module. Security hook dapat terlibat dalam pemeriksaan pada objek overlay dan operasi terhadap objek dasar. Label dan kebijakan yang terlibat dapat berbeda karena objek gabungan dan inode dasarnya bukan konteks keamanan yang dapat dipertukarkan.

Desain kebijakan yang memberikan layanan mount akses dasar luas tetapi mengharapkan workload terisolasi hanya menerima tampilan overlay sempit harus memperhitungkan kedua sisi. Kredensial tersimpan milik layanan memerlukan otoritas yang cukup untuk pekerjaan dasar yang sah, sedangkan label pada sisi overlay dan eksposur namespace membatasi permintaan yang dapat dibuat workload.

Otoritas tersimpan yang terlalu luas memperbesar kumpulan operasi dasar yang dapat dijalankan overlay ketika permintaan pada sisi overlay lolos pemeriksaan pertama. Otoritas yang terlalu sempit menghasilkan kegagalan operasional saat copy-up atau perubahan metadata. Batas yang tepat mencocokkan identitas tersimpan dengan operasi dasar yang memang ditujukan untuk didukung mount tersebut.

Konstruksi mount merupakan bagian dari batas kepercayaan

Perilaku izin OverlayFS tidak hanya ditentukan oleh kepemilikan dan mode bit yang terlihat setelah mount tersedia. Identitas yang ditangkap saat konstruksi mount bertahan sebagai input untuk akses dasar, sedangkan titik pengambilannya bergantung pada mount API dan opsi pemilihan kredensial.

Pada sistem yang membangun overlay di dalam pengelola container, peluncur sandbox, sistem paket, atau helper berprivilege, pembuatan mount menjadi transisi yang sensitif terhadap keamanan. Proses yang memilih layer, membuat superblock, menerapkan perilaku kredensial, dan mengekspos mount menentukan namespace yang disajikan kepada pemanggil sekaligus otoritas yang tersedia di balik namespace tersebut.

Desain isolasi yang kokoh mempertahankan peran-peran ini secara eksplisit. Kredensial pemanggil mengatur akses masuk melalui tampilan overlay; kredensial tersimpan mengatur operasi OverlayFS pada filesystem dasar; kebijakan filesystem dasar dan LSM tetap menjadi layer enforcement independen. Menyatukan identitas tersebut secara konseptual dapat menghasilkan asumsi akses yang tidak didukung oleh model dua konteks yang benar-benar diterapkan kernel.