Aturan pencegahan penimpaan melindungi file dalam bucket OSS agar tidak ditimpa setelah diunggah pertama kali. Aturan ini diterapkan berdasarkan path file, ekstensi file, dan identitas pengguna—sehingga Anda dapat menerapkan perlindungan terarah tanpa mengunci seluruh bucket.
Perilaku dan keterbatasan
Sebelum mengonfigurasi aturan, pahami apa yang dilindungi dan tidak dilindungi oleh fitur ini:
| Skenario | Perilaku |
|---|---|
| Unggahan konkuren awal | Jika beberapa klien mengunggah file yang sama secara bersamaan untuk pertama kalinya, satu versi berhasil ditulis meskipun ada aturan yang sesuai. Setelah file tersebut ada, penimpaan berikutnya akan diblokir. |
| Operasi internal OSS | Transisi lifecycle dan replikasi cross-region (CRR) tidak diblokir. Operasi yang diprakarsai sistem ini melewati aturan pencegahan penimpaan agar fitur inti tetap berfungsi. |
| Pengendalian versi | Aturan tidak berlaku saat Pengendalian versi bucket diaktifkan atau ditangguhkan. |
Cara kerja
Saat OSS menerima permintaan menulis untuk file yang sudah ada, sistem mengevaluasi permintaan tersebut terhadap aturan yang telah dikonfigurasi sesuai urutan pembuatannya:
Pencocokan path — memeriksa apakah path file sesuai dengan kondisi awalan dan akhiran aturan.
Pencocokan identitas — memeriksa apakah pemohon sesuai dengan pengaturan Authorized User.
Keputusan — jika semua kondisi terpenuhi, OSS memblokir operasi dan mengembalikan error
FileAlreadyExists. Jika tidak ada aturan yang sesuai, penimpaan diizinkan.
Semua kondisi dalam suatu aturan harus terpenuhi secara bersamaan. Kecocokan sebagian tidak akan memicu aturan tersebut.
Lindungi jenis file tertentu
Lindungi file konfigurasi dan file log di folder produksi agar tidak ditimpa oleh pengguna tertentu.
Prasyarat
Sebelum memulai, pastikan Anda memiliki:
Bucket OSS
Akses ke Konsol OSS dengan izin yang cukup untuk mengelola pengaturan bucket
Langkah-langkah
Pada halaman Buckets, klik nama bucket target.
Di panel navigasi kiri, pilih Data Management > File overwrite prohibited.
Klik New rule added to prohibit overwrite writes dan konfigurasikan parameter berikut:
Parameter Deskripsi Contoh Rule ID Opsional. Biarkan kosong untuk menghasilkan UUID secara otomatis, atau masukkan ID unik. protect-configs-jsonFile name prefix Path folder yang ingin dilindungi. production/configs/File name extension Ekstensi file yang ingin dilindungi. Biarkan kosong untuk melindungi semua jenis file di path tersebut. .jsonAuthorized User Pengguna RAM, Peran RAM, atau akun lain yang dibatasi oleh aturan ini. Gunakan *untuk membatasi semua pengguna.ARN Pengguna RAM Klik OK.
Verifikasi aturan
Gunakan akun yang dibatasi untuk mengunggah file dengan nama yang sama ke
production/configs/app.json.Konfirmasi bahwa error
FileAlreadyExistsdikembalikan.Konfirmasi bahwa pengguna lain tetap dapat mengunggah file secara normal dan unggahan ke path di luar kondisi awalan dan akhiran berhasil seperti biasa.
Tetapkan kebijakan perlindungan global
Lindungi semua file di path kritis agar tidak ditimpa oleh pengguna mana pun.
Langkah-langkah
Pada halaman Buckets, klik nama bucket target.
Di panel navigasi kiri, pilih Data Management > File overwrite prohibited.
Klik New rule added to prohibit overwrite writes dan konfigurasikan parameter berikut:
Parameter Nilai Rule ID Opsional. Biarkan kosong untuk menghasilkan secara otomatis. File name prefix critical-data/File name extension Biarkan kosong untuk melindungi semua jenis file. Authorized User *(semua akun)Klik OK.
Verifikasi aturan
Gunakan akun apa pun untuk mencoba menimpa
critical-data/database.sql.Konfirmasi bahwa error
FileAlreadyExistsdikembalikan.Konfirmasi bahwa file di
public-data/masih dapat ditimpa secara normal.
Aturan pencocokan
| Rule | Detail |
|---|---|
| Jumlah maksimum aturan per bucket | 100 |
| Panjang maksimum awalan dan akhiran | Masing-masing 1.023 karakter |
| Jenis pencocokan | Hanya pencocokan string eksak. Ekspresi reguler dan karakter wildcard tidak didukung untuk bidang awalan dan akhiran. |
| Pencocokan awalan | logs/ sesuai dengan logs/app.log tetapi tidak dengan dev-logs/app.log. |
| Pencocokan akhiran | .txt sesuai dengan readme.txt tetapi tidak dengan readme.TXT atau readme.txt.bak. |
| Authorized User | Mendukung wildcard *. Untuk detailnya, lihat konfigurasi Principal dalam Contoh umum kebijakan bucket. |
| Rule ID | Opsional. Menghasilkan identifier unik universal (UUID) secara otomatis jika dibiarkan kosong. Harus unik dalam bucket tersebut. |
FAQ
Saya membiarkan kolom Authorized Users kosong, dan sekarang bahkan saya sendiri tidak bisa menimpa file. Bagaimana cara memulihkan akses?
Membiarkan kolom Authorized Users kosong menerapkan aturan tersebut ke semua pengguna, termasuk pemilik bucket dan Akun Alibaba Cloud root. Untuk memulihkan akses penimpaan, lakukan salah satu langkah berikut:
Hapus aturan tersebut di Konsol.
Persempit cakupan dengan menetapkan awalan atau akhiran yang lebih spesifik.
Tetapkan Authorized User ke pengguna tertentu agar pembatasan hanya berlaku untuk mereka.
Saya mengatur awalan menjadi logs/*.txt untuk mencocokkan semua file .txt di folder logs, tetapi tidak berfungsi. Mengapa?
Pencocokan awalan OSS memperlakukan * sebagai karakter literal, bukan sebagai wildcard. Sistem mencari file dengan nama persis logs/*.txt. Untuk mencocokkan semua file .txt di folder logs/, konfigurasikan aturan dengan:
File name prefix:
logs/File name extension:
.txt
Apa yang terjadi jika saya membiarkan awalan dan akhiran kosong?
Aturan tersebut berlaku untuk seluruh bucket. Jika dikombinasikan dengan kolom Authorized Users yang kosong, semua pengguna—termasuk pemilik bucket—diblokir dari menimpa file apa pun. Jika Authorized Users menentukan pengguna tertentu, hanya pengguna tersebut yang dibatasi.