Simple Storage Service (S3)

AWS'in Temel servislerinden biri olan S3, Temel Cloud Depolama hizmetimizdir. Hayatımızdaki en temel örneklerden birkaçı olan; Google Drive, Onedrive, ICloud gibi ürünler, sağlayıcı şirketlerin bulut depolama servislerine gitmektedir. S3 Yönetilen bir servis olup, depolama sunucusunun audit config gibi işleriyle sizi uğraştırmaz ve size sadece depolama yapmanız gibi işlemler için rahatlık sağlar.

S3'teki her bir ürün obje ismini alır. Bunlar web sitelerin statik dosyaları veya depo olarak saklanan resim müzik dosyaları olabilmektedir. Objelerle birlikte metadatalarda S3'te saklanır.

S3'ün hafızası Blok halde ve Disk imajları biçimindedir.

S3'ün size verebileceği hizmetler size basit bir depolama hizmetinden öte, bir websitesini hostlamaktan bir veritabanı gibi kullanılabilecek (başka araçlar vasıtası ile) kadar geniştir.

Size Atanmış her bir S3 Servisine BUCKET adı verilir.

S3'ün kullanımı:

  1. ACL'LER:

(A)cess (C)ontroll (L)ist'ler; S3 hizmetindeki objelere dış dünyadan erişim izni verip vermeyeceğinizin kararını alacağınız kısımdır.

a. Tüm herkese açık erişimi engelleyin: Eğer tikli olursa S3 objesi sadece size aittir.

b. Yeni erişim denetimi listeleri (ACL'ler) aracılığıyla bucket ve nesnelere verilen genel erişimi engelleyin: Yeni ACL'Ler ile sadece yeni gelen dosyaları görüntülemeye izin verir.

c.Herhangi bir erişim denetimi listesi (ACL) aracılığıyla bucket ve nesnelere verilen genel erişimi engelleyin: Bucketınıza Genel Erişimi Kısıtlar

d.Yeni genel bucket veya erişim noktası politikaları aracılığıyla bucket ve nesnelere verilen genel erişimi engelleyin: Poliçeler ile erişimi kısıtlarsınız.

e.Herhangi bir genel bucket veya erişim noktası politikası aracılığıyla bucket ve nesnelere genel ve hesaplar arası erişimi engelleyin: Tiklenirse AWS Cross-Account desteğini engellersiniz.

  1. Bucket'larda Sürüm oluşturma:

Sürüm oluşturma temel işlevde objeleriniz snapshotını alarak, aksilik durumunda (yetkisiz erişim, dosyaların kaybı gibi) olaylarda eski dosyaları geri getirmenizi sağlar. Production environmentlarda etkinleştirilmesi TAVSİYE EDİLİR.

  1. Şifreleme

Burada Bucket'ınızın ne tip şifreleme kullanacağını karar alacağınız kısımdır.

a. SSE-S3: S3 bucket'ınızın kilidi için uğraşmanıza veya saklamanıza gerek kalmaz, AWS Bunu halleder.

b. SSE-KMS: S3 bucket'ınızın kilidi için uğraşmazsın lakin anahtarları artık AWS KMS hizmetinde saklarsınız. Anahtar değerlerinizi buradan da CloudTrail ile gözlemleyebilirsiniz..

Saniyede 30.000'e kadar isteğe destek verir.

c. DSSE-KMS:

  • Her objeyi şifrelemek için iki bağımsız KMS anahtarı kullanılır:

    • İlk katman: Müşteri belirli bir KMS anahtarı,

    • İkinci katman: AWS tarafından yönetilen ek bir KMS anahtarı.

  • Bu yapı, yüksek güvenlik gerektiren düzenlemeler (regulatory compliance, data residency) ve kurum içi güvenlik politikaları için uygundur.

  • S3 DSSE-KMS kullanıldığında objenin şifresi çözülürken iki katmanlı çözme süreci işler, tüm erişimler KMS’de loglanır.

  • Ücretlidir.

d. SSE w/Customer Provided Keys: Tüm yükümlülükler size aittir (KMS) ve Bu tarz bir erişim için HTTPS şartı beklenir.

e. Client Side Encryption: Tüm Yükümlülükler End-User'a aittir. Yani kendisi şifreleyip decrypt etmek zorundadır.

Güvenlik/Güvenilirlik Sırası: SSE-S3<SSE-KMS< DSSE-KMS Şeklindedir.

  1. Nesne Kilidi:

VERSİYONLAMAYI AÇTIĞINIZ Bucketlar'da WORM (Write Once Read Many) Politakasına uyarak, dosyalarınızın silinip silinemeyeceği, dosyaların overwrite edilip edilemeyeceğine dair karar aldığınız kısımdır. Etkinleştirilirse yukarda yazdığım herşey aktifleşecektir. Ekstra yapılandırma gerektirir. Metedatalarınızı korumak istersenizde en iyi seçenek budur.

Ekler:

1. Server Access Logging

  • S3 Server Access Logging, belirli bir bucket’a yapılan tüm isteklerin loglanmasını sağlar.

  • Bu loglar başka bir S3 bucket’a belirttiğiniz prefix ile birlikte gönderilir.

  • Böylece erişim denetimi, güvenlik analizi ve denetim amaçlı izleme gerçekleştirilir.


2. Requester Pays

  • Requester Pays özelliği aktif edildiğinde, bucket içeriğine erişmek isteyen AWS kullanıcısı (requester) transfer ve istek ücretini öder.

  • Bu özellik, özellikle büyük veri setlerinin paylaşımı sırasında maliyetin erişen kullanıcıya aktarılması amacıyla kullanılır.

  • Public access ile birlikte kullanılmaz, erişim için AWS kimlik bilgisi gerektirir.


  1. Bucket Policy:

Kaynağı S3'ünüzün ARN Kodu olan, Bucketınızın erişimlerini yetkilerini ve kapsamlarını detaylı bir şekilde yönettiğiniz alandır.

Bu örnekte CORS Kullandık CORS ise:

Cross-Origin Resource Sharing:

  • CORS (Cross-Origin Resource Sharing), bir web tarayıcısının farklı bir domain (origin) üzerindeki kaynağa erişmesini sağlayan bir mekanizmadır.

  • Tarayıcı tabanlıdır ve bir web uygulamasının başka bir domain üzerindeki S3 bucket içeriğine erişmesine olanak tanır.

  • Normalde web tarayıcıları güvenlik nedeniyle yalnızca kendi origin'lerinden veri çekebilir. CORS sayesinde bir bucket, belirli domainlerden gelen isteklere yanıt verecek şekilde yapılandırılabilir.

  • Kısaca: Kaynak veriyi farklı bir kaynaktan güvenli şekilde almak için kullanılır.

  • CORS yapılandırması S3 bucket üzerinde ayarlanır ve hangi domainlerin, hangi HTTP metodlarının (GET, PUT vb.) ve hangi header’ların kabul edileceğini belirler.

  • Özellikle web tabanlı uygulamaların S3 üzerinden statik dosya, resim veya JSON veri çekmesi gerektiğinde kritik bir yapılandırmadır.


  1. Encryption in Flight (SSL/TLS)

Bucket işlemlerinde HTTPS şartı beklendiğinde bu poliçede belirtilmelidir.

Bu örnekte False denmesi HTTPS gerektirmediğini bize söyler.

5. S3 Pre-Signed URL

  • Pre-Signed URL, bir objeye erişim yetkisi olmayan bir kullanıcının belirli bir süre için S3 objesine erişmesine izin veren imzalı URL’dir.

  • URL’ye erişen kişi, URL oluşturulurken belirlenen izinlerle (örneğin GET veya PUT gibi) ve süre sınırı içerisinde objeye erişebilir.

  • Geçerlilik süresi minimum 1 dakika, maksimum 720 dakika (12 saat) olarak ayarlanabilir.

  • AWS CLI kullanıldığında bu süre 168 saate (7 güne) kadar uzatılabilir.

  • Kullanım Senaryoları:

    • Zaman kısıtlı, kontrollü dosya paylaşımı,

    • Geçici yükleme linkleri sağlama,

    • Kayıt olmamış kullanıcıların dosya yüklemesine veya indirmesine izin verme.

Pre-Signed URL’ler objeyi herkese açık yapmak yerine geçici ve güvenli paylaşım için kullanılır, böylece bucket politikasını değiştirmeden esnek erişim kontrolü sağlanır.


  1. Replication:

Tüm bucket'ı başka bir Region'a kopyalamaktır.

Last updated