Pendahuluan


Di AWS, ada komponen CloudFront yang biasa dipakai sebagai komponen untuk CDN (Content Delivery Network).

Dan biasanya juga kita menggunakannya untuk kebutuhan Static Content, seperti :

  • file html dan Web
  • file images, style sheets, JavaScript, dll.
  • video on demand
  • live streaming
  • dll.

Dan tempat penyimpanan yang paling sering digunakan adalah AWS S3.

Karena harganya yang cukup murah, berbasis objek atau satuan, dan universal untuk banyak tipe file.

Tapi tentu saja kita harus memperhatikan security akses S3 dari Cloudfront.

Kita harus memastikan bahwa :

  • Bucket S3 yang kita buat hanya bisa diakses dari Cloudfront yang sudah kita definisikan.
  • Cara akses dari CloudFront ke S3 juga harus menggunakan enkripsi yang memadai.
  • Pembatasan akses nya dapat di lakukan dengan cara yang sederhana.

Bagaimana caranya ?


Di Cloudfront, ada 2 cara pembatasan akses ini :

  • OAI - Origin Access Identity
  • OAC - Origin Access Control

Dahulu.., sebelum di implementasikannya 2 hal diatas, maka kita harus membuka public access dari bucket S3 yang kita punyai, agar Cloudfront kita bisa mengakses S3.

Atau dengan cara membuat Bucket S3 kita sebagai website endpoint.

Hal ini tentu saja tidak dianjurkan.

Dengan dibukanya S3 public access ini, maka pengguna yang mengetahui alamat URL dari s3, akan bisa langsung mengakses file-file tersebut tanpa perlu melewati URL Cloudfront.

Padahal kebutuhan Security untuk akses ke bucket S3 ini diperlukan untuk menjamin keamanan dan kebutuhan kalau static content kita itu diakses secara private.

Oleh karena itu harus ada pembatasan.

Secara umum, maka proses nya akan seperti ini :

  • request dari client/browser akan ditujukan ke URL yang didefinisikan di CloudFront.
  • cloudFront akan mengecek origin atau tujuan asli dari URL tersebut, yang mana adalah bucket S3.
  • tergantung dari tipe akses nya, maka request tadi akan di sign, dibikinin identitas baru, untuk mengakses bucket s3.
  • bucket policy di s3 harus ditambahkan akses untuk Origin Access Identity atau Origin Access Control untuk mengakses isi dari bucket s3 tersebut.
  • isi dari bucket s3 policy itu akan dikembalikan sesuai dengan request.
  • request akan dikirimkan ke client/browser.

Dan voilaaa.. akses ke s3 melalui cloudfront akan terlindungi dengan baik..

Sehingga efeknya :

  • kita tidak perlu membuka publik akses bucket s3 kita.
  • ada enkripsi at transit ketika mengakses s3 dari cloudfront.
  • meningkatkan standar keamanan dari cara akses kita dari cloudfront ke s3.