Blog AWS Indonesia
10 Praktik Terbaik Untuk Keamanan Data di Amazon S3
Dengan lebih dari 100 triliun objek yang ada di Amazon Simple Storage Service (S3) dan rangkaian penggunaan yang sangat luas, mengamankan data yang tersimpan di Amazon S3 sangat penting untuk setiap organisasi. Jadi, kami telah mengumpulkan 10 cara terbaik untuk mengontrol serta mengamankan data Anda di S3. Secara default, semua S3 bucket bersifat privat dan hanya bisa diakses oleh pengguna yang secara eksplisit memiliki akses melalui ACLs, S3 bucket policies, dan identity-based policy. Di dalam artikel ini, kita akan melakukan ulasan pada fitur S3 yang terbaru dan layanan Amazon Web Services yang dapat Anda gunakan untuk mengamankan data di S3, termasuk pengamanan di level organisasi seperti AWS Organizations Service Control Policies (SCPs). Kami juga akan memberikan rekomendasi untuk S3 detective control seperti Amazon GuardDuty untuk S3, AWS CloudTrail untuk logging di level objek , AWS Security Hub untuk mengontrol S3, dan konfigurasi spesifik Cloudtrail untuk S3 data event. Selain itu, kami menyediakan opsi dan pertimbangan untuk perlindungan data dengan mengenkripsi data di S3. Selanjutnya, kita akan melakukan review rekomendasi backup dan recovery untuk data yang disimpan di S3. Mengingat kasus penggunaan yang didukung oleh S3 sangat luas, Anda harus menentukan prioritas dalam mengontrol S3 yang Anda miliki serta menyesuaikan dengan kasus penggunaan Anda.
Blokir akses publik pada S3 bucket di level organisasi
Buat akun AWS terpisah untuk penggunaan S3 publik dan konfigurasi S3 Block Public Access di akun lainnya di dalam organisasi. Tujuannya untuk mencegah S3 bucket di akun lainnya terbuka untuk publik secara tidak sengaja. Gunakan SCP pada AWS Organization untuk memastikan konfigurasi S3 Block Public Access tidak dapat diubah. S3 Block Public Access menyediakan proteksi di level akun dan secara default memblokir akses publik di semua bucket, termasuk bucket baru yang akan dibuat. Anda juga diberikan kemampuan untuk memblokir akses publik eksisting — baik yang dibuat melalui ACL (Access Control List) atau bucket policy — dan menetapkan akses publik tidak diberikan untuk item yang baru dibuat. Hal ini memungkinkan hanya akun AWS yang ditunjuk yang dapat memiliki S3 bucket secara publik sementara akun lainnya memblokir akses ke publik. Untuk mempelajari SCP pada Organizations, lihat di Service control policies.
Gunakan bucket policies untuk memastikan semua akses yang diberikan sudah terbatas dan spesifik
Pastikan bahwa akses yang diberikan dalam S3 Bucket policy sudah terbatas ke AWS Principal, federated users, service principals, IP Address atau VPC spesifik yang Anda sediakan. Bucket policy yang mengizinkan identitas wildcard (*) berpotensi dapat diakses oleh siapa saja. Bucket policy yang mengizinkan wildcard action (*) berpotensi mengizinkan user untuk melakukan tindakan apapun di dalam bucket. Untuk informasi lebih lanjut, lihat di Menggunakan Bucket Policies.
Pastikan setiap identity-based policies tidak menggunakan wildcard action
Identity policy adalah policy yang diberikan untuk AWS Identity and Access Management (IAM) user dan roles dan harus mengikuti prinsip least privilege untuk mencegah akses dan perubahan yang tidak disengaja pada sumber daya Anda. Menetapkan least privilege pada identity policies dapat dilakukan dengan hanya memberikan permission tertentu seperti S3:GetObject atau S3:PutObject alih-alih S3:*. Selain itu Anda dapat menggunakan predefined AWS-wide condition keysdan S3 condition key yang spesifik untuk menspesifikasi kontrol tambahan pada aksi tertentu. Salah satu contoh AWS wide condition key yang sering digunakan untuk S3 adalah IpAddress :{aws:SourceIP :"10.10.10.10"},
dimana Anda dapat menspesifikasikan alamat IP internal organisasi Anda untuk aksi tertentu di S3. Lihat IAM.1 pada Monitor S3 menggunakan Security Hub dan CloudWatch log untuk mendeteksi policy yang menggunakan wildcard actions dan wildcard resources yang tersedia di akun Anda menggunakan Security Hub.
Pertimbangkan untuk membagi akses read, write dan delete. Hanya izinkan akses write ke user atau service yang membuat dan menulis data ke S3, tapi tidak perlu membaca dan menghapus objek. Tentukan S3 lifecycle policy untuk menghapus objek otomatis secara terjadwal daripada melakukan penghapusan secara manual — lihat mengelola lifecycle storage Anda. Dengan ini Anda dapat menghapus Delete action dari Identity-based policy Anda. Anda juga dapat melakukan verifikasi policy menggunakan IAM policy simulator. Gunakan IAM Access Analyzer untuk membantu Anda dalam mengidentifikasi, meninjau, dan merancang S3 bucket policy atau IAM policy yang memberikan akses ke S3 Anda dari luar akun AWS Anda.
Gunakan S3 protection di GuardDuty untuk mendeteksi aktivitas yang mencurigakan
Pada tahun 2020, GuardDuty mengumumkan cakupan untuk S3. Dengan mengaktifkan ini, GuardDuty akan terus melakukan monitoring dan mencatat peristiwa akses data pada S3 Anda serta konfigurasi S3 untuk mendeteksi aktivitas yang mencurigakan. Contoh aktivitas mencurigakan adalah request dari lokasi yang tidak biasa, penonaktifan fitur keamanan, dan pola API Call yang bertujuan untuk menemukan celah pada bucket Anda. Untuk melakukan ini, GuardDuty menggunakan kombinasi dari deteksi anomali, machine learning, dan threat intelligence yang terus diperbaharui. Untuk mempelajari lebih lanjut bagaimana mengaktifkan GuardDuty pada S3, lihat Amazon S3 protection pada Amazon GuardDuty.
Gunakan Macie untuk memindai data sensitif di luar area yang ditentukan
Pada Mei 2020, AWS meluncurkan Amazon Macie. Macie adalah layanan yang dikelola oleh AWS untuk membantu Anda menemukan dan melindungi data sensitif menggunakan machine learning untuk meninjau dan mengklasifikasi data Anda secara otomatis di S3. Mengaktifkan Macie di seluruh organisasi adalah metode yang mudah dan hemat biaya bagi Anda untuk mendapatkan gambaran terpusat dan menyeluruh yang senantiasa diperbarui terhadap seluruh S3 pada organisasi Anda dan memantau kepatuhan anda terhadap praktik terbaik keamanan melalui konsol yang terpusat. Macie akan melakukan evaluasi secara terus menerus ke semua bucket terkait enkripsi dan kontrol akses, dan memberikan Anda notifikasi tentang bucket yang bersifat publik, tidak terenkripsi, atau dibagikan di luar dari organisasi Anda. Macie mengevaluasi data sensitif menggunakan daftar tipe data sensitif secara umum dan tipe data yang dapat Anda buat secara kustom. Nantinya, Macie akan melaporkan temuan apabila data sensitif ditemukan.
Enkripsi data di S3
Ada empat opsi untuk mengenkripsi data di S3, termasuk pilihan di client-side dan server-side. Melalui server-side encryption, S3 mengenkripsi data Anda pada level objek saat S3 menulis data tersebut ke disk pada AWS data center dan mendekripsi ketika Anda mengakses data tersebut. Selama Anda mengontentikasi permintaan Anda dan memiliki izin akses, tidak ada perbedaan dalam cara mengakses objek yang terenkripsi atau tidak terenkripsi.
Dua opsi pertama di bawah ini menggunakan AWS Key Management Service (AWS KMS). AWS KMS memungkinkan Anda membuat dan mengelola cryptographic keys dan mengontrol penggunaannya di berbagai layanan AWS. Ada beberapa opsi untuk mengelola key yang digunakan oleh AWS dalam mengenkripsi data di S3.
- Server-side encryption dengan Amazon S3-managed encryption keys (SSE-S3). Ketika Anda menggunakan SSE-S3, setiap objek akan dienkripsi menggunakan key unik yang dikelola oleh AWS. Opsi ini memungkinkan Anda untuk mengenkripsi data Anda dengan mudah dengan beberapa klik tanpa harus melakukan langkah tambahan. Proses enkripsi dan dekripsi ditangani otomatis untuk Anda secara transparant. SSE-S3 merupakan cara yang nyaman dan hemat biaya.
- Server-side encryption dengan Customer Master Keys (CMK) yang disimpan di AWS KMS (SSE-KMS) mirip dengan SSE-S3, namun dengan beberapa manfaat dan biaya tambahan dibandingkan dengan SSE-S3. Terdapat permission terpisah dalam menggunakan CMK yang menyediakan proteksi tambahan terhadap akses yang tidak diizinkan pada objek Anda di S3. SSE-KMS juga menyediakan audit trail untuk menunjukkan kapan dan siapa yang menggunakan CMK. SSE-KMS memberikan Anda kontrol terhadap key access policy, yang dapat memberi Anda kontrol yang lebih terperinci tergantung pada kasus penggunaan Anda.
- Server-side encryption dengan Customer-Provided Key (SSE-C) atau key yang disediakan oleh pelanggan, memungkinkan Anda untuk mengelola key enkripsi. S3 akan mengelola proses enkripsi ketika menulis ke disk dan proses dekripsi ketika Anda mengakses objek tersebut. Opsi ini berguna apabila Anda perlu menyediakan dan mengelola key enkripsi Anda sendiri. Ingatlah Anda bertanggung jawab terhadap pembuatan, penyimpanan dan pemantauan key yang digunakan untuk mengenkripsi setiap objek dan AWS tidak bertanggung jawab dalam pemulihan key apabila key tersebut hilang. Hal utama yang harus diperhitungkan dengan SSE-C adalah Anda harus menyediakan key tersebut di setiap operasi PUT dan GET objek.
- Client Side Encryption merupakan opsi lain untuk mengenkripsi data di S3. Anda dapat menggunakan CMK yang disimpan di AWS KMS atau master key yang disimpan dalam aplikasi Anda. Dalam Client-side encryption, Anda mengenkripsi data sebelum mengirimnya ke AWS dan mendekripsinya setelah mengambilnya dari AWS. AWS tidak mengelola key yang digunakan serta tidak bertanggung jawab terhadap proses enkrispsi dan dekripsi. Biasanya, client-side encryption harus tertanam di dalam aplikasi Anda agar dapat berfungsi.
Lindungi data di S3 dari penghapusan yang tidak disengaja menggunakan S3 Versioning dan S3 Object Lock
Amazon S3 dirancang untuk ketahanan 99,999999999 persen untuk objek di beberapa Availability Zone, tahan terhadap peristiwa yang memengaruhi suatu zona secara menyeluruh, dan dirancang untuk ketersediaan 99,99 persen sepanjang tahun. Dalam banyak kasus, strategi backup di S3 sering kali terkait dengan melindungi bucket dan objek dari penghapusan yang tidak disengaja. Dalam hal ini S3 Versioning dapat digunakan untuk mempertahankan, mengambil, dan memulihkan setiap versi dari setiap objek yang disimpan di bucket Anda. S3 Versioning memungkinkan Anda menyimpan beberapa versi objek dalam bucket yang sama dan dapat membantu Anda memulihkan objek dari penghapusan yang tidak disengaja. Perlu diingat penggunaan fitur ini akan dikenakan biaya tertentu. Anda dapat menerapkan S3 Versioning secara selektif, misalnya untuk S3 bucket yang menyimpan data penting atau data sensitif.
Dengan mengaktifkan S3 Versioning pada S3 bucket, Anda dapat menambahkan lapisan pengamanan tambahan dengan mengaktifkan Multi-Factor Authentication Delete. Dengan konfigurasi ini, pemilik bucket harus mengautentikasi menggunakan MFA pada setiap permintaan hapus suatu versi objek atau pengubahan status versioning bucket.
S3 Object Lock adalah fitur yang membantu Anda untuk memitigasi kehilangan data dengan menyimpan objek menggunakan model write-once-read-many (WORM). Dengan menggunakan Object Lock, Anda dapat melindungi suatu objek agar tidak ditimpa atau dihapus untuk durasi tertentu atau selamanya. Penting diingat bahwa ada berbagai kasus penggunaan yang ideal untuk Object Lock, termasuk skenario yang mengharuskan data tidak diubah atau dihapus setelah ditulis.
Aktifkan logging pada S3 menggunakan CloudTrail dan S3 server access logging
Amazon S3 terintegrasi dengan CloudTrail. CloudTrail menangkap sebagian API call, termasuk API call dari konsol S3 dan kode Anda pada API S3. Selain itu, Anda dapat mengaktifkan CloudTrail data events untuk semua bucket Anda atau sebagian bucket tertentu. Perlu diingat bahwa bucket S3 yang sangat aktif dapat menghasilkan log data dalam jumlah besar dan meningkatkan biaya CloudTrail. Anda dapat mempertimbangkan untuk mengaktifkan logging tambahan ini hanya untuk bucket S3 yang berisi data penting.
Server access logging menyediakan catatan mendetail tentang permintaan yang dibuat ke suatu bucket. Server access logs dapat membantu Anda dalam audit keamanan dan akses pada S3 Anda.
Backup data Anda di S3
Meskipun secara default S3 menyimpan data Anda di beberapa Availability Zone di dalam suatu region, mungkin Anda memiliki persyaratan compliance dimana Anda diharuskan untuk menyimpan data di jarak yang lebih jauh. Cross Region Replication (CRR) memungkinkan Anda mereplikasi data antar Region AWS untuk membantu memenuhi persyaratan ini. CRR memungkinkan penyalinan objek secara otomatis dan asinkron antar bucket di Region AWS yang berbeda. Untuk informasi selengkapnya tentang replikasi objek, lihat replikasi objek. Ingatlah bahwa fitur ini memiliki biaya yang terkait. Anda dapat mempertimbangkan CRR dalam skenario khusus seperti bucket S3 yang menyimpan data cadangan penting atau data sensitif.
Monitor S3 menggunakan Security Hub dan CloudWatch Log
Security Hub memberi Anda pandangan komprehensif tentang status keamanan Anda di AWS dan membantu Anda memeriksanya berdasarkan standar keamanan dan praktik terbaik industri. Security Hub mengumpulkan data keamanan dari seluruh akun, layanan, dan produk pihak ketiga yang didukung AWS serta membantu Anda menganalisis tren keamanan dan mengidentifikasi masalah keamanan dengan prioritas tertinggi.
Standart AWS Foundational Security Best Practice adalah serangkaian kontrol yang mendeteksi penyimpangan pada akun dan sumber daya Anda berdasarkan praktik terbaik keamanan, serta menyediakan langkah-langkah perbaikan yang jelas. Kami menyarankan Anda mengaktifkan AWS Foundational Security Best Practices yang mencakup kontrol detektif untuk S3 dan IAM sebagai berikut:
IAM .1 : IAM Policies tidak boleh mengizinkan hak administrasi secara penuh (“*”)
S3.1 : Konfigurasi Block Public Access harus diaktifkan
S3.2 : S3 bucket harus melarang akses Read secara publik
S3.3 : S3 bucket harus melarang akses Write secara publik
S3. 4 :S3 bucket harus mengaktifkan server side encyption
S3.5 : S3 bucket harus mewajibkan requests untuk menggunakan Secure Socket Layer (SSL)
S3.6 : Izin pada Amazon S3 yang diberikan ke akun AWS lainnya harus terbatas
S3.7 : S3 Block Public Access harus diaktifkan dalam level bucket
Untuk detail setiap kontrol, termasuk langkah-langkah perbaikannya, harap tinjau AWS Foundational Security Best Practices controls.
Jika ada aktivitas API S3 tertentu yang ingin Anda pantau namun tidak tercakup di atas, Anda dapat menggunakan CloudTrail Logs bersama dengan Amazon CloudWatch untuk melakukannya. Integrasi CloudTrail dengan CloudWatch Logs meneruskan aktivitas API di level bucket S3 yang ditangkap oleh CloudTrail ke sebuah log stream di dalam log group CloudWatch yang Anda tentukan. Anda dapat membuat alarm di CloudWatch untuk memantau aktivitas API tertentu dan menerima pemberitahuan email saat aktivitas API tertentu tersebut terjadi.
Kesimpulan
Dengan menggunakan sepuluh praktik terbaik yang dijelaskan dalam blog ini, Anda dapat membangun mekanisme perlindungan yang kuat untuk data Anda di Amazon S3, termasuk pemberian akses yang terbatas, enkripsi data, pemblokiran akses publik, pencatatan log, monitoring, dan pemeriksaan konfigurasi.
Tergantung pada kasus penggunaan Anda, Anda sebaiknya juga mempertimbangkan mekanisme perlindungan tambahan. Misalnya, ada kontrol terkait keamanan yang tersedia untuk kumpulan data bersama yang besar di S3 seperti Access Points, yang bisa Anda gunakan untuk mengurai suatu bucket policy menjadi beberapa access point policy terpisah untuk setiap aplikasi yang membutuhkan akses ke kumpulan data bersama tersebut. Untuk mempelajari lebih lanjut mengenai keamanan S3, lihat Amazon S3 Security.
Sekarang setelah Anda meninjau 10 Praktik terbaik keamanan teratas untuk membuat data Anda di S3 lebih aman, pastikan Anda telah menerapkan berbagai kontrol ini di akun AWS Anda—dan membangun dengan aman!
Jika Anda memiliki umpan balik tentang posting ini, kirimkan komentar di bagian Komentar di bawah artikel asli. Jika Anda memiliki pertanyaan tentang artikel ini, mulai thread baru di forum Amazon S3 atau hubungi AWS Support.
Ingin lebih banyak konten petunjuk, berita, dan pengumuman fitur AWS Security? Ikuti kami di Twitter.
Artikel ini diterjemahkan dari artikel asli berjudul “Top 10 security best practices for securing data in Amazon S3” yang ditulis oleh Megan O’Niel, Solutions Architect dan Temi Adebambo, Senior Manager for the America’s Security and Network Solutions Architect team di AWS.