OSS paketinizdeki dosyaları kazara veya kötü niyetli değişikliklerden korumak için üzerine yazmayı önleme kuralı yapılandırabilirsiniz. Bu özellik; yoluna, türüne veya kullanıcının kimliğine göre hangi dosyaların üzerine yazılamayacağını hassas bir şekilde kontrol etmenizi sağlar.
Eşzamanlı yazma işlemleri ve üzerine yazmayı önleme kuralları: Birden fazla istemcinin var olmayan bir yola yazdığı veya silme işlemi sırasında yazmanın gerçekleştiği yüksek eşzamanlılık senaryolarında sistem üzerine yazılacak mevcut bir dosya bulamayabilir. Bu durumlarda yazma işlemine izin verilir. Ancak dosya başarıyla oluşturulduktan sonra kural, üzerine yazmaya yönelik sonraki tüm girişimleri engeller.
Depolama sınıfı geçiş sınırlamaları: Dosya üzerine yazma yasağı özelliği etkinleştirildiğinde OSS konsolu, SDK'lar veya ossutil gibi istemci tarafı yöntemleri kullanarak nesnenin depolama sınıfını değiştirmek (örneğin Standard'dan Archive'a) için CopyObject işlemini çağıramazsınız. Korumalı nesnelerin depolama sınıfını değiştirmek için otomatik geçişler amacıyla yaşam döngüsü kurallarını kullanın.
Özellik uyumluluğu: Dosya üzerine yazma yasağı özelliği yalnızca istemci tarafındaki dosya üzerine yazma işlemlerini engeller. Bölge çoğaltması (CRR) veya yaşam döngüsü kuralları gibi arka plan sistem işlevlerini etkilemez.
Sürüm oluşturma ile çakışma: Dosya üzerine yazma yasağı özelliği sürüm oluşturma ile birbirini dışlar. Bir paket için sürüm oluşturma etkinleştirilmiş veya askıya alınmışsa üzerine yazmayı önleme kuralları yok sayılır.
Nasıl çalışır?
OSS bir dosyanın üzerine yazma isteği aldığında sistem isteği oluşturulma sırasına göre yapılandırılmış üzerine yazmayı önleme kurallarına göre değerlendirir:
Kural eşleşmesi: Sistem dosya yolunun bir kuralın önek ve son ek koşullarıyla eşleşip eşleşmediğini ve kullanıcının kimliğinin Yetkili Kullanıcı ayarıyla eşleşip eşleşmediğini denetler.
Karar: OSS bir kuraldaki tüm koşullar (önek, son ek ve kullanıcı kimliği) karşılandığında üzerine yazmayı engeller ve
FileAlreadyExistshatası döndürür.Varsayılan davranış: Bir istek herhangi bir üzerine yazmayı önleme kuralıyla eşleşmezse üzerine yazmaya izin verilir.
Belirli dosya türlerini koruma
Üretim ortamınızdaki yapılandırma ve günlük dosyalarını belirli kullanıcılar tarafından kazara üzerine yazılmaktan koruyun.
Paketler sayfasında hedef paketin adını tıklayın.
Sol gezinme bölmesinde seçeneğini belirleyin.
-
New rule added to prohibit overwrite writes seçeneğini tıklayın ve aşağıdaki parametreleri belirtin:
Rule ID: Özel bir ID girebilir veya otomatik olarak oluşturulması için boş bırakabilirsiniz.
File name prefix: Korunacak dizin yolunu girin; örneğin
production/configs/.File name extension: Korunacak dosya uzantısını girin; örneğin
.json.Authorized User: Kısıtlamak için RAM kullanıcılarını, RAM rollerini veya diğer hesapları belirtin.
Kuralı oluşturmak için OK seçeneğini tıklayın.
-
Kuralı doğrulayın:
Kısıtlı bir hesap kullanarak aynı ada sahip bir dosyayı
production/configs/app.jsonkonumuna yüklemeyi deneyin.Bir
FileAlreadyExistshatasının döndürüldüğünü onaylayın.Diğer kullanıcıların dosyaları normal şekilde yükleyebildiğini ve önek ile son ek koşullarını karşılamayan yollara yapılan yüklemelerin başarılı olduğunu onaylayın.
Genel koruma ilkesi ayarlama
Herhangi bir kullanıcı tarafından kazara değişiklik yapılmasını önlemek için kritik iş verileri için kapsamlı koruma oluşturun.
Paketler sayfasında hedef paketin adını tıklayın.
Sol gezinme bölmesinde seçeneğini belirleyin.
-
New rule added to prohibit overwrite writes seçeneğini tıklayın ve aşağıdaki parametreleri belirtin:
Rule ID: Özel bir ID girebilir veya otomatik olarak oluşturulması için boş bırakabilirsiniz.
File name prefix:
critical-data/File name extension: Belirtilen yoldaki tüm dosyaları korumak için bu alanı boş bırakın.
Authorized User:
*(tüm hesaplar)
Kuralı oluşturmak için OK seçeneğini tıklayın.
-
Genel korumayı doğrulayın:
Herhangi bir hesap kullanarak
critical-data/database.sqldosyasının üzerine yazmayı deneyin.Genel korumanın etkin olduğunu gösteren bir
FileAlreadyExistshatasının döndürüldüğünü onaylayın.public-data/gibi diğer yollardaki dosyaların üzerine yazılabildiğini onaylayın.
Eşleşme kuralları
Kural sayısı: Tek bir pakette en fazla 100 kural bulunabilir.
Karakter uzunluğu: Önek veya son ek için maksimum uzunluk 1.023 karakterdir.
Önek ve son ek eşleşmesi: Yalnızca tam dize eşleşmesi desteklenir. Düzenli ifadeler ve joker karakterler desteklenmez. OSS
logs/gibi girişi değişmez karakterler olarak değerlendirir.Önek eşleşmesi:
logs/önekilogs/app.logile eşleşir ancakdev-logs/app.logile eşleşmez.Son ek eşleşmesi:
.txtson ekireadme.txtile eşleşir ancakreadme.TXT(büyük/küçük harfe duyarlı) veyareadme.txt.bakile eşleşmez.Yetkili Kullanıcı eşleşmesi: Yıldız (
*) joker karakteri desteklenir. Yapılandırma ayrıntıları için Bucket ilkesi için yaygın örnekler bölümündeki Principal öğesine bakın.Koşul mantığı: OSS bir kuraldaki tüm koşullar (önek, son ek ve Yetkili Kullanıcı) karşılandığında üzerine yazmayı engeller.
Rule ID: Bu parametre isteğe bağlıdır. Bu alanı boş bırakırsanız OSS evrensel benzersiz tanımlayıcı (UUID) otomatik olarak oluşturur. Bir ID sağlarsanız paket içinde benzersiz olmalıdır.
Dosya üzerine yazma işlemleri
Bu özellik aşağıdaki istemci tarafı dosya üzerine yazma işlemlerini engeller:
PutObject
PostObject
CopyObject
PutObjectSymlink
InitiateMultipartUpload
CompleteMultipartUpload
SSS
Neden paket sahibi dosyaların üzerine yazamaz?
Bu beklenen davranıştır. Boş Yetkili Kullanıcı alanı kuralı paket sahibi ve kök hesap dahil olmak üzere tüm kullanıcılara uygular. Üzerine yazma izinlerini geri yüklemek için şunları yapabilirsiniz:
Konsoldaki kuralı silin.
Kapsamını daraltmak için kuralın önek veya son ekini değiştirin.
Yalnızca bu kullanıcıları kısıtlamak için Yetkili Kullanıcıyı belirli hesaplara ayarlayın.
Neden logs/*.txt öneki çalışmıyor?
OSS önek ve son ek eşleşmesi için joker karakterleri desteklemez. * karakteri değişmez bir karakter olarak değerlendirilir ve sistem logs/*.txt adlı bir dosya için tam eşleşme gerçekleştirir. Doğru yöntem şöyledir:
Öneki
logs/olarak ayarlayınSon eki
.txtolarak ayarlayın
Bu yapılandırma logs/ dizinindeki .txt ile biten tüm dosyalarla eşleşir.
Boş önek ve son ek alanları ne olur?
Önek ve son ek boş bırakıldığında kural tüm pakete uygulanır. Bu durum şu anlama gelir:
Yetkili Kullanıcı alanı da boşsa tüm kullanıcıların paketteki herhangi bir dosyanın üzerine yazması engellenir.
Yetkili Kullanıcı alanı belirli hesapları belirtiyorsa paketteki dosyaların üzerine yazması yalnızca bu kullanıcılar tarafından kısıtlanır.
Neden bazı yazma işlemleri engellenmiyor?
Üzerine yazmayı önleme kuralı yalnızca zaten var olan dosyalardaki yazma işlemlerini engeller. Birden fazla istemcinin var olmayan bir yola yazdığı veya silme sırasında yazmanın başlatıldığı eşzamanlı yazmalar sırasında sistem üzerine yazılacak mevcut bir dosya bulamayabilir. Böyle yarış durumlarında yazma işlemi devam eder. Bu kuralın başarısız olduğu anlamına gelmez. Dosya oluşturulduktan sonra kural üzerine yazmaya yönelik sonraki tüm girişimleri engeller. Ayrıca kural dosya üzerine yazma işlemleri listesinde yer almayan bir işlemi engelleyemez.