Pengenalan ke Keamanan
Tujuan Pembelajaran
Dalam modul ini, Anda akan mempelajari bagaimana cara:
- Menjelaskan manfaat shared responsibility model.
- Menerangkan multi-factor authentication (MFA).
- Mengerti pengaturan keamanan dengan AWS Identity and Access Management (IAM).
- Memaparkan manfaat utama AWS Organizations.
- Menjabarkan kebijakan keamanan di tingkat dasar.
- Merangkum aspek compliance di lingkungan AWS.
- Menguraikan layanan keamanan tambahan di AWS.
Oke, sepertinya Anda sudah penasaran ya. Mari kita menyibak ke materi selanjutnya!
Pengenalan ke Keamanan
Di modul ini kita akan menyelami materi AWS semakin dalam. Kita akan belajar tentang pembagian kontrol terhadap lingkungan AWS platform, melalui konsep shared responsibility model alias model tanggung jawab bersama. Silakan amati gambar di bawah ini.
Diambil dari Model Tanggung Jawab Bersama AWS.
Ada dua hal utama yang harus Anda perhatikan di shared responsibility model ini, yaitu:
- AWS mengontrol security of the cloud (keamanan dari cloud).
- Pelanggan mengontrol security in the cloud (keamanan di cloud).
AWS bertanggung jawab untuk mengontrol data center, keamanan setiap layanan, dan lain sebagainya--dapat Anda lihat di gambar tersebut.
Lalu, bagian pelanggan adalah mengamankan beban kerja yang mereka jalankan di cloud. Ini merupakan bagian tanggung jawab yang AWS bagikan dengan pelanggan guna memastikan keamanan di cloud.
Kita akan membahas materi ini sekaligus menguak berbagai layanan, mekanisme, dan fitur keamanan lain di AWS secara lebih detail di modul berikutnya. Jadi, sudah siapkah Anda? Stay tuned!
Perizinan dan Hak Akses Pengguna
Pada skenario kedai kopi kita, setiap pegawai memiliki identitas dan akses sesuai perannya masing-masing. Misalnya kita ambil contoh seorang kasir dan petugas gudang seperti berikut:
- Seorang kasir bertugas untuk menerima pesanan sehingga ia memiliki akses ke mesin kasir.
- Petugas gudang bertanggung jawab untuk memeriksa inventaris sehingga ia memiliki akses ke komputer gudang.
Mereka memiliki dua akses login dan dua set permission (izin) yang berbeda. Sehingga seorang kasir tidak akan diizinkan masuk ke sistem inventaris dan begitu juga sebaliknya.
Nah, mekanisme seperti itu juga bisa Anda implementasikan di AWS. Saat pertama kali membuat akun, Anda memulai dengan identitas sebagai AWS account root user atau bisa disederhanakan menjadi root user.
Root user adalah pemilik akun AWS. Ia memiliki permission untuk mengakses dan mengontrol seluruh sumber daya apa pun dalam akun tersebut, seperti menjalankan database, membuat EC2 instance, layanan blockchain, dan lain-lain.
Mudahnya, anggap saja root user sebagai pemilik kedai kopi. Ia bisa datang ke kedai dan melakukan apa pun, seperti mengoperasikan mesin kasir, menggunakan komputer gudang, atau hal-hal lainnya. Ia tidak akan mengalami pembatasan.
Nah, karena root user ini sangat berkuasa, AWS menyarankan Anda untuk mengaktifkan multi-factor authentication (MFA) guna memastikan agar akun tersebut aman. Apa itu MFA?
Begini. Pernahkah Anda login ke suatu website yang tak hanya meminta email dan password, melainkan juga melakukan verifikasi dua langkah dengan mengirimkan kode acak ke ponsel Anda? Nah, itulah contoh MFA. Ia berguna untuk memberikan lapisan keamanan tambahan untuk akun AWS Anda.
Tetapi, walaupun sudah mengaktifkan MFA, tentu Anda tak ingin memberikan akses root user ini ke semua pegawai di kedai kopi tersebut.
Masih ingat persoalan kita di awal? Kita tak ingin seorang kasir dapat mengakses komputer gudang. Lantas bagaimana solusinya?
Tenang, AWS memungkinkan Anda untuk dapat mengontrol akses secara terperinci dengan menggunakan layanan AWS Identity and Access Management (AWS IAM). Penasaran, apa saja fitur yang ditawarkan oleh AWS IAM? Mari kita bahas di materi berikutnya!
AWS Identity and Access Management (AWS IAM)
AWS Identity and Access Management (AWS IAM) dapat membantu Anda untuk mengelola akses ke layanan dan sumber daya AWS dengan aman.
IAM memberi Anda fleksibilitas untuk mengonfigurasi akses berdasarkan kebutuhan operasional dan keamanan yang spesifik. Di modul ini, kita akan membahas fitur-fitur IAM, seperti:
- IAM users
- IAM policies
- IAM groups
- IAM roles
Penasaran seperti apa? Mari kita bahas masing-masing fiturnya.
IAM Users
Di AWS Identity and Access Management (AWS IAM) Anda dapat membuat IAM users. Ia mewakili orang (personal) yang berinteraksi dengan layanan dan sumber daya AWS.
IAM users secara default belum memiliki permission sama sekali. Ia tidak bisa masuk ke akun AWS, meluncurkan EC2 instance, atau bahkan membuat S3 bucket. Intinya, secara default semua tindakan yang dilakukan oleh IAM users akan ditolak.
Jika ingin membuat IAM users bisa melakukan sesuatu, maka Anda harus memberikan permission secara eksplisit. Lalu, bagaimana cara memberikan atau menolak permission? Jawabannya, Anda bisa mengaitkan IAM policies ke IAM users.
IAM Policies
IAM policies adalah dokumen JSON yang mengizinkan atau menolak aktivitas tertentu terhadap layanan dan sumber daya AWS.
Tunggu, apa itu JSON? Sederhananya, JSON (JavaScript Object Notation) adalah format dokumen pertukaran data yang mudah dimengerti, baik oleh manusia maupun mesin.
Oke, kembali ke topik. Anda dapat menggunakan IAM policies untuk mengatur akses user ke sumber daya AWS. Misalnya, untuk mengizinkan user untuk mengakses beberapa atau spesifik salah satu Amazon S3 bucket dalam akun AWS Anda. Bingung? Tenang, mari kita lihat contoh singkat berikut:
Mungkin sekarang Anda sedang bergumam dan berkata, “Apa maksud dari pernyataan-pernyataan tersebut?” Oke, mari kita bedah.
- Pada bagian “Effect”, Anda hanya bisa mengisinya dengan dua opsi: Allow (izinkan) atau Deny (tolak). Dalam kasus ini, kita memberikan izin kepada user untuk melakukan sesuatu.
- Untuk “Action”, Anda dapat mengisinya dengan panggilan API apa pun. Di sini kita menuliskan s3:ListObject. Artinya, user dapat mengetahui objek-objek apa saja yang berada di S3 bucket tertentu.
- Untuk bagian “Resource”, Anda bisa mengisinya dengan alamat sumber daya yang dimaksud. Di pernyataan tersebut kita bisa mengisinya dengan arn:aws:s3:::EXAMPLE-BUCKET, yaitu alamat ID unik dari S3 bucket tertentu.
Jadi, jika Anda melampirkan IAM policies tersebut ke IAM users, maka user tersebut dapat melihat daftar seluruh objek yang ada pada bucket yang bernama “EXAMPLE-BUCKET”.
Ingat! Saat memberikan permission, pastikan Anda mengikuti “principle of least privilege”. Maksudnya, berikanlah akses sesuai dengan kebutuhan saat itu saja.
Misalnya, jika seorang user hanya memerlukan akses ke bucket tertentu, maka berikanlah akses hanya untuk bucket tersebut di IAM policies, jangan ke semua bucket.
IAM Groups
Salah satu cara yang dapat mempermudah pengelolaan user dan permission adalah dengan mengelompokkannya ke dalam IAM groups.
IAM groups adalah grup/kelompok yang berisi kumpulan dari user. Menariknya, Anda bisa melampirkan policy ke group sehingga semua user yang berada di group tersebut akan memiliki permission yang sama.
Mari kita ambil contoh kedai kopi. Katakanlah Anda memiliki banyak pegawai barista baru dan ingin memberikan permission kepada mereka. Nah, daripada memberikannya satu per satu, Anda bisa melakukan hal berikut:
- Buat IAM groups bernama “Barista”.
- Tambahkan semua user barista baru ke dalam group.
- Lampirkan permission ke group tersebut.
Oke, sampai sini, kita sudah mengenal beberapa hal: IAM users, IAM groups, dan IAM policies. Tunggu, masih ada satu identitas utama lainnya, yaitu IAM roles.
IAM Roles
Untuk memahami apa itu IAM roles, mari kita analogikan dengan kedai kopi. Katakanlah Anda memiliki beberapa kasir. Seperti yang kita tahu, tak setiap saat keadaan kedai itu ramai pengunjung, pada waktu-waktu tertentu justru cenderung sepi.
Oleh karena itu, saat kedai sedang sepi, Anda ingin menugaskan beberapa kasir tersebut untuk melakukan pekerjaan yang berbeda, seperti bersih-bersih, mengecek inventaris, atau menyambut pelanggan yang datang. Namun ini hanya sementara, mereka harus kembali ke mesin kasir saat kedai kembali ramai.
Nah, Anda--sebagai pemilik kedai kopi--memiliki wewenang untuk memberikan peran sementara ini kepada beberapa kasir tersebut. Hal seperti ini dapat Anda implementasikan di AWS dengan IAM roles.
IAM roles memiliki permission yang dapat mengizinkan tindakan tertentu yang dibutuhkan secara temporer atau sementara. Role ini juga sebenarnya mirip dengan user, bedanya, ia tak memiliki credential (username dan password).
IAM roles dapat Anda gunakan untuk memberikan akses sementara ke beberapa hal, seperti sumber daya AWS, user, eksternal user, aplikasi, bahkan layanan AWS lainnya.
Ketika sebuah identitas menggunakan IAM roles, identitas tersebut menanggalkan semua permission sebelumnya yang dimiliki dan mengambil permission dari role tersebut.
Tak hanya itu, Anda dapat memfederasikan/menggabungkan eksternal user ke akun Anda. Maksudnya, daripada terus membuat IAM users untuk setiap orang di organisasi, Anda dapat menggunakan regular corporate credential (kredensial perusahaan reguler) untuk login ke AWS dengan memetakan identitas perusahaan ke IAM roles.
AWS Organizations
Saat Anda terjun pertama kali ke AWS Cloud, kemungkinan besar Anda akan memulai dengan satu akun AWS, kebanyakan orang pun akan seperti itu. Tetapi, seiring dengan pertumbuhan bisnis atau perjalanan cloud, Anda perlu memisahkan tugas dengan akun yang berbeda.
Misalnya begini. Katakanlah Anda memiliki beberapa tim yang menjalankan bisnis kedai kopi. Anda ingin
- tim developer dapat memiliki akses ke sumber daya pengembangan;
- tim akuntansi bisa mengakses informasi penagihan; atau bahkan,
- memisahkan tim bisnis agar mereka dapat bereksperimen dengan layanan AWS tanpa mempengaruhi satu sama lain.
Semakin banyak tugas yang dilakukan setiap tim, maka lama-kelamaan akun AWS Anda akan makin kusut karena tak terkelola dengan baik.
Dengan kondisi tersebut, Anda perlu mengenal layanan yang satu ini, yaitu AWS Organizations. Sederhananya, ia adalah lokasi sentral yang dapat mengelola beberapa akun AWS. Dengannya, Anda dapat mengelola biaya, kontrol akses, compliance (kepatuhan), keamanan, dan berbagi sumber daya dengan seluruh akun-akun AWS.
Saat Anda membuat organisasi, AWS Organizations secara otomatis membuat root (wadah induk yang terdiri dari OU--nanti kita bahas--dan akun AWS di organisasi Anda).
Lalu, apa saja fitur-fitur yang ditawarkan oleh AWS Organizations? Oke, mari kita uraikan.
- Manajemen terpusat
AWS Organizations dapat menjadi alat manajemen terpusat dari semua akun AWS Anda. Misal jika Anda memiliki beberapa akun (A, B, C, D, E), maka Anda dapat menggabungkannya menjadi sebuah organisasi sehingga memungkinkan akun terkelola secara terpusat. - Consolidated billing (Tagihan terkonsolidasi)
Anda dapat menggunakan akun utama dari organisasi untuk menggabungkan dan mengatur pembayaran biaya penggunaan semua akun anggota. Bahkan, keuntungan lain dari consolidated billing adalah diskon massal. Kita akan mempelajari secara detail tentang consolidated billing ini di modul yang akan datang. - Pengelompokan hierarki akun
Anda dapat mengimplementasikan fitur ini untuk memenuhi kebutuhan keamanan, compliance, atau anggaran. Kelompokkan akun ke dalam organizational unit (OU) untuk mempermudah pengelolaan akun-akun yang memiliki tujuan serupa atau kepentingan persyaratan keamanan.
Saat Anda menerapkan policy (kebijakan) ke OU, semua akun otomatis mewarisi permission yang ada di policy tersebut. Fitur ini juga memudahkan Anda untuk mengisolasi beban kerja atau aplikasi yang memiliki persyaratan keamanan tertentu.
Misalnya, jika Anda memiliki akun yang hanya dikhususkan untuk mengakses layanan AWS tertentu, maka Anda dapat memasukkannya ke dalam suatu OU. Kemudian lampirkan policy yang mengatur akses ke layanan AWS tersebut. - Kontrol atas layanan AWS dan tindakan API
Dengan AWS Organizations, Anda bisa mengontrol layanan AWS dan layanan API yang dapat diakses oleh setiap akun administrator dari akun utama organisasi.
Anda juga dapat menggunakan service control policies (SCP) untuk menentukan permission alias izin maksimum untuk akun anggota di organisasi. Maksudnya, Anda bisa membatasi layanan AWS, sumber daya, dan layanan API individual yang mana dapat diakses oleh user dan role di setiap akun anggota.
Studi Kasus: AWS Organizations
Katakanlah Anda memiliki bisnis dengan akun AWS terpisah untuk setiap departemen: Keuangan, IT, HR (Human Resource/Sumber Daya Manusia), dan Hukum. Anda memutuskan untuk menggabungkan akun ini ke dalam satu organisasi sehingga dapat dikelola dari satu tempat.
Tentu, kebutuhan semacam ini dapat diwujudkan dengan AWS Organizations. Dalam mendesain organisasi, Anda mempertimbangkan kebutuhan bisnis, keamanan, dan peraturan dari setiap departemen. Informasi ini Anda gunakan untuk memutuskan departemen mana yang akan dikelompokkan ke dalam sebuah OU.
Karena departemen Keuangan dan IT memiliki persyaratan yang tidak tumpang tindih dengan departemen lain, Anda memutuskan untuk memasukkannya ke dalam organisasi untuk berbagai keuntungan seperti consolidated billing dan tidak menempatkannya ke dalam OU mana pun.
Nah selanjutnya, karena departemen HR dan Hukum perlu mengakses layanan dan sumber daya AWS yang sama, Anda pun menempatkannya ke dalam satu OU.
Dengan menempatkan akun departemen HR dan Hukum ke dalam OU yang sama, Anda dapat melampirkan policy yang berlaku untuk keduanya. Selain itu, Anda juga dapat lebih mudah memberikan akses ke layanan dan sumber daya yang dibutuhkan.
Walaupun telah menempatkan akun-akun tersebut ke dalam satu OU, Anda tetap dapat memberikan akses untuk user, group, dan role melalui AWS IAM.
Compliance (Kepatuhan)
Untuk mengawali modul, mari kita buka suatu fakta menarik. Tahukah Anda? Di setiap industri ada standar tertentu yang perlu ditegakkan. Anda akan diaudit atau diperiksa untuk memastikan bahwa standar tersebut telah dipenuhi.
Misalnya di kedai kopi. Suatu saat akan ada inspektur kesehatan yang datang untuk memeriksa apakah semuanya sesuai dengan regulasi dan sanitasi. Selain itu, akan ada petugas pajak yang datang mengaudit untuk memastikan bahwa Anda telah menjalankan administrasi dengan benar dan mematuhi hukum. Agar bisa lulus audit dan pemeriksaan compliance, Anda perlu mengandalkan dokumentasi, catatan, dan inspeksi.
Nah, begitu juga saat menggunakan AWS. Anda harus memenuhi standar dan regulasi tertentu sesuai jenis aplikasi yang dijalankan. Misal:
- Anda harus mematuhi GDPR (General Data Protection Regulation) saat menjalankan software yang menangani data konsumen di Uni Eropa; atau
- Anda perlu merancang arsitektur yang dapat memenuhi persyaratan compliance HIPAA (Health Insurance Portability and Accountability Act) ketika menjalankan aplikasi perawatan kesehatan di Amerika Serikat.
Maka dari itu, tentu Anda memerlukan suatu layanan yang dapat mengumpulkan dokumen, menyimpan catatan, dan memeriksa lingkungan AWS, dengan tujuan untuk memastikan regulasi compliance yang Anda jalankan telah terpenuhi dengan baik.
Ketahuilah, AWS telah membangun infrastruktur dan jaringan data center sesuai dengan standar praktik terbaik industri untuk keamanan. Nah, Anda--sebagai pelanggan AWS--seharusnya ikut juga mewarisi semua praktik terbaik tersebut baik dari segi kebijakan, arsitektur, dan juga proses operasional di atas AWS platform.
AWS telah memenuhi daftar panjang dari program compliance--dapat Anda temukan secara online di halaman AWS Compliance Programs. Ini berarti, sebagian dari aspek compliance Anda telah terpenuhi. Dengan begitu, Anda pun dapat fokus untuk memenuhi kebutuhan compliance di sisi arsitektur yang Anda bangun.
Oke, hal berikutnya yang perlu Anda ketahui terkait compliance di lingkungan AWS adalah Region. Region yang Anda pilih dapat juga membantu memenuhi regulasi compliance. Ibaratnya, jika Anda hanya dapat menyimpan data secara legal di negara tertentu, maka pilihlah Region yang sesuai dengan tujuan agar bisnis operasional Anda tunduk kepada aturan yang berlaku di negara tertentu.
Catat! Anda memiliki kontrol penuh atas keseluruhan data yang tersimpan di AWS. Anda bisa menggunakan beberapa mekanisme enkripsi tambahan untuk menjaga agar data tetap aman. Selain itu, jika Anda memiliki standar khusus terkait penyimpanan data, maka Anda dapat membuat mekanisme sendiri di AWS atau menggunakan fitur yang tersedia pada layanan AWS.
AWS Artifact
Berbicara tentang compliance, tahukah Anda? AWS menyediakan whitepaper (panduan resmi AWS) dan dokumen yang dapat Anda gunakan untuk keperluan laporan compliance.
Bahkan, AWS dapat memberikan dokumentasi yang membuktikan dirinya mengikuti praktik terbaik untuk keamanan dan compliance. Wow, menarik ‘kan?
Nah, layanan yang dapat Anda gunakan untuk mengakses dokumentasi tersebut adalah AWS Artifact. Dengannya, Anda bisa mendapatkan akses on-demand ke laporan keamanan dan compliance AWS serta online agreements (perjanjian online) tertentu.
Berikut adalah beberapa laporan dan regulasi compliance yang dapat Anda temukan dalam AWS Artifact.
Diambil dari AWS Artifact.
AWS Artifact terdiri dari 2 bagian utama, yaitu AWS Artifact Agreements dan AWS Artifact Reports. Mari kita telaah:
- AWS Artifact Agreements
Jika Anda perlu menandatangani perjanjian dengan AWS terkait penggunaan jenis informasi tertentu di seluruh layanan, Anda dapat melakukannya melalui AWS Artifact Agreements.
Di AWS Artifact Agreements, Anda dapat meninjau, menerima, dan mengelola perjanjian, baik untuk akun individu maupun semua akun di AWS Organizations.
AWS menyediakan berbagai jenis perjanjian untuk memenuhi kebutuhan pelanggan yang patuh pada peraturan tertentu, seperti Health Insurance Portability and Accountability Act (HIPAA). - AWS Artifact Reports
Ketika Anda hendak membuat aplikasi dan membutuhkan informasi tentang tanggung jawab untuk mematuhi standar regulasi tertentu, Anda dapat mengakses AWS Artifact Reports.
AWS Artifact Reports menyediakan laporan compliance dari auditor pihak ketiga. Auditor ini telah menguji dan memverifikasi bahwa AWS mematuhi berbagai standar dan regulasi keamanan global, regional, dan industri.
Customer Compliance Center
Customer Compliance Center menyediakan informasi yang dapat membantu Anda untuk mempelajari lebih lanjut tentang compliance.
Di sana, Anda dapat membaca beberapa contoh kasus yang berhubungan dengan compliance dari para pelanggan AWS untuk memberikan gambaran bagaimana perusahaan dalam regulated industry (industri teregulasi) menyelesaikan berbagai tantangan compliance, governance/tata kelola, dan audit.
Anda juga dapat mengakses whitepaper dan dokumentasi tentang:
- Jawaban untuk pertanyaan mengenai compliance.
- Tinjauan mengenai AWS Risk and Compliance.
- Checklist audit keamanan.
- Dan masih banyak lainnya
Serangan Denial-of-Service
Oke, sekarang kita masuk ke modul yang serius, benar-benar serius, yakni seputar serangan yang dapat melumpuhkan infrastruktur Anda.
Tapi, untuk mempermudah penjelasan, mari kita kaitkan dengan skenario kedai kopi. Katakanlah kedai kopi Anda memiliki layanan pemesanan melalui telepon. Cara kerjanya, seorang kasir akan menulis pesanan dan memberikannya kepada barista. Setelah minuman tersaji, pelanggan bisa mengambilnya di kedai kopi.
Namun, anggaplah ada orang iseng yang menelepon beberapa kali untuk memesan kopi tetapi ia tak pernah mengambil minumannya. Karena terus-menerus menelepon, ia membuat kasir tak bisa menerima panggilan dari pelanggan lain.
Lalu, bagaimana cara mengatasi masalah ini? Solusi sederhananya adalah dengan memblokir nomor telepon tersebut. Nah, tindakan orang iseng tersebut mirip dengan serangan denial-of-service.
Serangan denial-of-service (DoS) adalah upaya yang dilakukan secara sengaja untuk membuat website atau aplikasi menjadi tidak bekerja dengan optimal bagi pengguna.
Salah satu contohnya adalah ketika penyerang membanjiri aplikasi Anda dengan traffic jaringan yang masif sehingga membuatnya kewalahan dan tak lagi dapat merespons permintaan pengguna.
Serangan Distributed Denial-of-Service
Distributed denial-of-service alias DDoS adalah salah satu serangan yang dapat menimpa infrastruktur atau aplikasi Anda. Serangan ini telah membuat banyak bisnis hancur.
Banyak tim keamanan di luar sana yang telah membangun rencananya yang kompleks untuk mencegah serangan ini. Tapi, apa sebenarnya DDoS itu? Bagaimana kita bisa bertahan melawannya?
Huh! Ini akan menjadi pembahasan yang panjang, bahkan bisa memakan waktu yang cukup lama untuk benar-benar memahami semuanya. Tapi tenang! Anda tak perlu tahu semuanya.
Pada modul kali ini, kita hanya akan membahas dasar-dasar bagaimana serangan DDoS terjadi dan bagaimana AWS dapat secara otomatis mempertahankan infrastruktur Anda darinya. Oke, mari kita mulai.
Guna mempermudah, seperti biasa, kita analogikan dengan kedai kopi dan menggunakan kasus yang sama seperti sebelumnya, yaitu orang iseng yang menelepon berulang kali.
Yup! Kita memang telah memblokir nomor tersebut. Tapi ternyata, orang ini meminta bantuan teman-temannya. Mereka terus-menerus menghubungi kedai kopi dengan nomor telepon yang berbeda. Tentu ini akan membuat pelanggan lain semakin kesulitan untuk menelepon kedai kopi Anda.
Nah, itulah konsep dari serangan DDoS. Berbeda dengan DoS yang hanya berasal dari satu sumber, serangan DDoS ini menggunakan beberapa sumber untuk melakukan serangan. Tujuannya untuk membuat aplikasi Anda kewalahan dan tak dapat beroperasi lagi.
Serangan ini bisa bisa berasal dari sekelompok orang atau bahkan individu. Cara kerjanya, penyerang menggunakan beberapa komputer yang terinfeksi (juga dikenal sebagai "bot") untuk mengirimkan traffic yang masif ke situs aplikasi Anda.
Oke, pembahasan terkait mekanisme DDoS ini akan sangat panjang. Maka dari itu, mari kita beralih dan menguraikan beberapa tipe dari serangan DDoS.
- UDP flood
Seseorang dapat menggunakan jenis serangan ini untuk melakukan DDoS dengan mudah, salah satunya adalah memanfaatkan layanan cuaca nasional.
Saat Anda mengirim permintaan informasi ke layanan cuaca nasional, ia akan mengirimkan telemetri cuaca, prakiraan, pembaruan, dan lain-lain dengan jumlah yang masif.
Nah, di sini masalahnya. Penyerang akan melakukan permintaan seputar informasi cuaca, tapi ia mencantumkan alamat penerima yang palsu, yakni alamat infrastruktur Anda.
Dengan demikian, layanan cuaca akan membanjiri server Anda dengan data berukuran megabyte yang dapat membuat sistem Anda kewalahan dalam memprosesnya. Hingga akhirnya, server Anda akan berhenti. - HTTP level attack
HTTP level attack merupakan serangan yang jauh lebih canggih. Penyerang akan terlihat seperti pelanggan normal yang mengakses aplikasi Anda dan melakukan permintaan umum, seperti pencarian produk yang rumit.
Bedanya, penyerang melakukannya secara berulang kali dan terus-menerus sehingga server akan selalu memprosesnya. Ini mengakibatkan pelanggan yang sah menjadi tidak bisa mengakses aplikasi Anda. - Slowloris attack
Serangan ini bahkan jauh lebih mengerikan. Agar lebih mudah memahaminya, mari kita umpamakan.
Katakanlah ada seorang pelanggan yang memesan minuman di kedai kopi Anda. Pelanggan tersebut membutuhkan waktu hingga tujuh menit lamanya. Tentu ini akan membuat para pelanggan lain yang mengantre di belakangnya menjadi tak bisa memesan kopi. Nah, serangan Slowloris serupa dengan itu.
Penyerang berpura-pura memiliki koneksi yang sangat lambat. Ini menyebabkan server Anda terus menunggu pelanggan, alias, penyerang tersebut menyelesaikan permintaannya dan membuat pelanggan lain tak terlayani. Beberapa penyerang Slowloris bahkan dapat menghabiskan seluruh kapasitas server Anda hanya dengan sedikit usaha.
Oke. Sekarang saatnya kita hentikan serangan-serangan ini dengan solusi yang tepat. Sebetulnya, Anda sudah tahu caranya. Apa maksudnya?
Begini. Semua hal yang telah kita pelajari di kelas ini tak hanya berbicara tentang membangun arsitektur yang baik, melainkan juga membantu Anda menyelesaikan hampir semua jenis serangan DDoS, bahkan tanpa biaya tambahan. Mari kita uraikan satu per satu.
Mulai dari serangan pertama, yakni UDP flood. Solusi untuk mencegah serangan ini adalah dengan menggunakan security group. Ia hanya dapat mengizinkan traffic permintaan yang tepat.
Tahukah Anda? Data laporan cuaca menggunakan protokol yang benar-benar berbeda dari pelanggan Anda. Artinya, security group bisa menolak permintaan tersebut jika memang tak ada di dalam daftar yang diizinkan.
Lalu, bagaimana untuk menghalau serangan Slowloris? Solusinya sederhana, Anda pun sudah mempelajarinya, yakni menggunakan Elastic Load Balancer (ELB) yang dapat mengarahkan traffic lalu lintas untuk Amazon EC2 instance.
Jadi, walaupun penyerang memiliki koneksi yang sangat lambat, pelanggan Anda yang sah tak perlu menunggunya hingga selesai, mereka tetap bisa mengakses server.
Serangan ini juga tak akan mengenai instance Anda karena sebelum diteruskan ke server, ELB akan menangani setiap permintaan hingga selesai terlebih dahulu, tak peduli ia memiliki koneksi yang cepat atau bahkan lambat sekali pun.
Ingat! ELB itu sangat kuat dan kapasitasnya dapat diskalakan. Ia juga berjalan di tingkat Region. Artinya, untuk bisa membanjiri ELB, Anda harus membanjiri keseluruhan AWS Regions. Bukannya mustahil, tetapi secara teoritis akan terlalu mahal bagi siapa pun yang melakukannya.
Nah, bagaimana untuk mengadang serangan yang paling tajam dan paling canggih di luar yang telah dijelaskan? Tenang, tenang! AWS juga menawarkan layanan pertahanan khusus yang disebut dengan AWS Shield.
AWS Shield
AWS Shield adalah layanan yang dapat melindungi aplikasi Anda dari serangan DDoS. Layanan ini memberikan dua tingkat perlindungan: Standard dan Advanced. Mari kita uraikan keduanya.
- AWS Shield Standard
AWS Shield Standard secara otomatis melindungi sumber daya AWS Anda dari jenis serangan DDoS yang paling umum tanpa biaya.
Dengan menggunakan berbagai teknik analisis, AWS Shield Standard dapat mendeteksi dan memitigasi traffic berbahaya secara real time saat memasuki aplikasi Anda. - AWS Shield Advanced
AWS Shield Advanced adalah layanan berbayar yang menyediakan kemampuan untuk mendiagnostik, mendeteksi, dan memitigasi serangan DDoS yang canggih.
AWS Shield Advanced terintegrasi dengan layanan lain seperti Amazon CloudFront, Amazon Route 53, dan Elastic Load Balancing.
Selain itu, Anda juga dapat mengintegrasikan AWS Shield dengan AWS WAF. AWS WAF merupakan web application firewall untuk melindungi aplikasi web atau API Anda dari eksploitasi web umum yang dapat memengaruhi ketersediaan, mengganggu keamanan, atau memakai sumber daya secara berlebihan. Layanan Keamanan Tambahan
Hari silih berganti dan kedai kopi Anda semakin ramai. Banyak pelanggan yang datang dan pergi. Karena hal ini, tentu Anda ingin meningkatkan keamanan di sana, bukan?
Salah satu hal yang harus Anda amankan adalah biji kopi. Anda harus memastikan mereka aman, baik pada saat di gudang penyimpanan atau ketika proses pengiriman antar toko. Intinya, Anda tak ingin satu pun pelanggan memiliki akses ke biji kopi. Cara sederhana untuk mengamankannya adalah dengan mengunci pintu saat Anda pergi di malam hari.
Nah, begitu juga dengan data. Anda perlu mengamankannya, baik saat keadaan at rest (diam) maupun in-transit (berpindah). Anda bisa melakukannya dengan enkripsi, yaitu mengamankan suatu pesan atau data yang hanya dapat diakses oleh pihak terotorisasi. Dengan melakukan enkripsi, pihak yang tak berwenang tidak akan bisa mengakses data Anda sama sekali.
Kalau Anda bingung, anggap saja enkripsi itu sebagai kunci dan pintu di kedai kopi. Jika Anda memiliki kuncinya, maka Anda dapat membuka pintu. Tetapi jika tidak, yup! Anda pasti sudah tahu jawabannya. Sederhana, ‘kan?
Di AWS, enkripsi hadir dalam dua varian: at rest (saat diam) dan in-transit (dalam perjalanan). Mari kita bedah.
- Encryption at rest
Pada jenis ini, proses enkripsi terjadi saat data Anda dalam keadaan tidak bergerak (tersimpan dan tidak berpindah). Contohnya adalah server-side encryption at rest (enkripsi at rest pada sisi server) yang secara bawaan telah aktif untuk semua data di tabel DynamoDB.
Data yang tersimpan di sana akan terenkripsi alias berubah menjadi serangkaian kata yang tak terbaca. Ini berguna untuk mencegah data Anda diakses oleh pihak yang tidak berwenang.
Enkripsi at rest pada DynamoDB juga terintegrasi dengan AWS Key Management Service (AWS KMS) yang berguna mengelola key/kunci enkripsi untuk tabel Anda--nanti kita bahas. Kunci enkripsi ini berperan seperti kunci pintu, ingat? Tanpanya, Anda tak akan dapat mengakses data, jadi simpanlah dengan aman. - Encryption in-transit
Proses enkripsi in-transit terjadi saat data Anda berpindah antara A dan B. A dan B ini bisa berupa apa pun, seperti layanan AWS dan klien yang mengakses layanan tersebut.
Misalnya, Anda ingin menghubungkan Redshift instance dan SQL client. Untuk kasus tersebut, Anda bisa menggunakan koneksi SSL alias secure sockets layer. Dengan begitu, Anda dapat melakukan enkripsi data serta menggunakan sertifikat layanan untuk validasi dan otorisasi klien.
Dengan demikian, data Anda akan terlindungi selama perjalanan antara Redshift dan klien. Ketahuilah! Fungsionalitas semacam ini tersedia di banyak layanan AWS lainnya seperti SQS, S3, RDS, dan banyak lagi.
AWS Key Management Service (AWS KMS)
Sebelumnya kita telah menyinggung sedikit tentang layanan ini, sekarang mari kita selami lebih dalam tentangnya.
AWS Key Management Service (AWS KMS) adalah layanan yang memungkinkan Anda untuk melakukan enkripsi menggunakan cryptographic key (kunci kriptografi). Kunci kriptografi adalah rangkaian angka acak yang digunakan untuk mengunci (mengenkripsi) dan membuka kunci (mendekripsi) data.
Dengan AWS KMS, Anda dapat mengontrol penggunaan kunci kriptografi di berbagai layanan ataupun di dalam aplikasi Anda.
Selain itu, Anda juga dapat memilih tingkat kontrol akses tertentu yang Anda perlukan untuk kunci tersebut. Misal:
- Anda bisa menentukan IAM users dan IAM roles mana yang dapat mengelola kunci; atau
- Anda dapat menonaktifkan kunci untuk sementara sehingga tidak ada yang bisa menggunakannya.
Kunci kriptografi yang Anda simpan di AWS KMS akan senantiasa aman dan terlindungi.
AWS Web Application Firewall (AWS WAF)
AWS Web Application Firewall alias AWS WAF memungkinkan Anda untuk dapat memantau request/permintaan jaringan yang masuk ke aplikasi web.
Masih ingatkah Anda tentang network access control list (network ACL) yang telah kita pelajari di modul sebelumnya? AWS WAF ini bekerja dengan cara yang mirip dengan network ACL, yaitu memblokir atau mengizinkan lalu lintas. Bedanya, ia menggunakan web access control list (web ACL) untuk melindungi sumber daya AWS Anda.
Berikut adalah contoh bagaimana Anda dapat menggunakan AWS WAF untuk mengizinkan dan memblokir request tertentu.
Anggaplah aplikasi Anda telah menerima request jaringan berbahaya dari beberapa alamat IP. Tentu, Anda ingin mencegah request ini, bukan? Tetapi, Anda juga ingin memastikan user sah masih dapat mengakses aplikasi.
Nah untuk masalah ini, Anda dapat mengonfigurasi web ACL yang dapat mengizinkan semua request kecuali dari alamat IP yang telah Anda tentukan.
Saat sebuah request hendak masuk ke aplikasi Anda, AWS WAF akan memeriksa daftar pengaturan yang telah Anda atur di web ACL.
Jika request tersebut bukan berasal dari salah satu alamat IP yang diblokir, maka ia diizinkan masuk ke aplikasi. Namun, jika sebaliknya, ia akan ditolak.
Amazon Inspector
Mari kita awali modul ini dengan sebuah analogi kedai kopi. Misalkan Anda sedang mengembangkan dan menguji aplikasi pemesanan baru. Anda ingin memastikan rancangan aplikasi tersebut sesuai dengan praktik keamanan terbaik. Namun, Anda tidak memiliki banyak waktu untuk melakukan penilaian manual.
Nah, sekarang pertanyaannya, bagaimana cara menilai keamanan secara otomatis?
AWS memberikan solusi terbaik, yaitu dengan layanan Amazon Inspector. Ia dapat membantu Anda untuk melengkapi pemahaman kita untuk meningkatkan keamanan dan compliance/kepatuhan aplikasi dengan menjalankan penilaian keamanan secara otomatis terhadap infrastruktur Anda.
Amazon Inspector bekerja dengan cara memeriksa aplikasi terhadap kerentanan dan penyimpangan praktik terbaik keamanan. Contohnya seperti akses yang terbuka ke Amazon EC2 instance atau penginstalan versi software yang memiliki kerentanan keamanan.
Setelah melakukan penilaian, Amazon Inspector memberikan Anda daftar temuan keamanan yang diprioritaskan menurut tingkat keparahan. Daftar ini juga berisi deskripsi mendetail tentang setiap masalah keamanan dan rekomendasi cara memperbaikinya.
Namun ingat, AWS tidak menjamin bahwa dengan mengikuti rekomendasi tersebut dapat menyelesaikan setiap potensi masalah keamanan. Tentu Anda masih ingat, berdasarkan shared responsibility model, pelanggan AWS bertanggung jawab atas keamanan aplikasi, proses, dan tools yang berjalan di layanan AWS.
Amazon GuardDuty
Layanan keamanan lain nan tak kalah penting adalah Amazon GuardDuty. Ia adalah layanan yang menyediakan deteksi ancaman cerdas untuk infrastruktur dan sumber daya AWS Anda.
Layanan ini mengidentifikasi ancaman dengan senantiasa memantau aktivitas jaringan dan perilaku akun di dalam lingkungan AWS Anda.
Amazon GuardDuty menggunakan integrated threat intelligence (kecerdasan ancaman terintegrasi) seperti alamat IP berbahaya, deteksi anomali, dan machine learning untuk mengidentifikasi ancaman dengan lebih akurat.
Nah, saat GuardDuty mendeteksi suatu ancaman, Anda dapat meninjau temuan mendetail dari AWS Management Console. Temuan ini juga mencakup langkah-langkah rekomendasi yang bisa Anda tindak lanjuti.
Tunggu, masih ada bagian terbaiknya. Layanan ini berjalan secara independen dari layanan AWS yang lain. Jadi, ia tak akan memengaruhi kinerja, ketersediaan, dan beban kerja infrastruktur Anda.
- Encryption at rest
Ikhtisar
Tak terasa ya sudah sejauh ini kita melangkah pada materi keamanan. Baiklah, sekarang saatnya mengurai apa yang telah kita pelajari.
- Pertama, AWS menyajikan shared responsibility model alias model tanggung jawab bersama. AWS bertanggung jawab atas keamanan dari cloud sementara Anda bertanggung jawab untuk keamanan di cloud.
- Kemudian, AWS IAM memungkinkan Anda untuk memiliki users, groups, roles, dan policies.
- Users dapat Anda pakai untuk login atau masuk ke AWS dengan menggunakan nama pengguna dan kata sandi. Ia juga secara default tidak memiliki permission (izin) sama sekali.
- Groups merupakan kumpulan dari beberapa pengguna.
- Roles adalah identitas yang berguna untuk memberikan akses kredensial sementara dan permission untuk jangka waktu tertentu.
- Policies berfungsi untuk memberikan permission ke sebuah identitas secara eksplisit, baik allow (mengizinkan) atau deny (menolak) suatu tindakan tertentu di AWS.
- IAM juga menghadirkan identity federation (federasi identitas). Jika suatu perusahaan telah memiliki penyimpanan identitasnya sendiri, maka user di perusahaan tersebut dapat terkoneksi ke AWS menggunakan role based access (akses berbasis peran). Hal itu memungkinkan user melakukan sekali login untuk sistem perusahaan tersebut dan sekaligus juga lingkungan AWS.
- Satu hal terakhir yang perlu diingat tentang IAM adalah multi-factor authentication (MFA). Pastikan Anda mengaktifkan MFA untuk setiap user, terutama root user yang memiliki semua permission secara default dan tak dapat direstriksi.
- Selanjutnya, kita juga telah membahas AWS Organizations. Saat menggunakan AWS, kemungkinan Anda akan memiliki beberapa akun. Biasanya, akun digunakan untuk mengisolasi beban kerja, lingkungan, tim, atau aplikasi. Nah, AWS Organizations dapat membantu Anda untuk mengelola beberapa akun secara hierarkis.
- Tak luput kita juga telah belajar mengenai compliance(kepatuhan). AWS menggunakan auditor pihak ketiga untuk membuktikan compliance-nya terhadap beragam program compliance. Anda dapat menggunakan:
- AWS Compliance Center untuk menemukan informasi lebih lanjut tentang compliance.
- AWS Artifact untuk mendapatkan akses ke dokumen compliance.
Persyaratan compliance yang Anda miliki mungkin dapat bervariasi untuk setiap aplikasinya.
- Lalu, kita telah menelaah tentang serangan distributed denial-of-service (DDoS) dan cara menanganinya dengan menggunakan layanan seperti ELB, security group, AWS Shield, dan AWS WAF.
- Kemudian, kita juga telah mempelajari materi enkripsi. Di AWS, Anda sebagai pemilik data bertanggung jawab atas keamanannya. Itu berarti Anda perlu menerapkan enkripsi untuk data yang Anda miliki, baik in-transit (ketika dikirim) maupun at rest (saat disimpan).
Keamanan adalah prioritas utama AWS, dan akan terus demikian. Ada banyak pertimbangan saat menangani keamanan di AWS. Oleh sebab itu, pastikan Anda membaca dokumentasi tentang cara mengamankan sumber daya AWS Anda karena akan berbeda setiap layanannya.
Ingat! Gunakan least privilege principle (prinsip privilese paling rendah) saat memberikan permission (izin) kepada user dan role di IAM; enkripsi data di setiap lapisan; dan pastikan Anda menggunakan layanan AWS untuk melindungi lingkungan cloud Anda.
Materi Pendukung
Silakan review tautan berikut untuk mempelajari lebih lanjut tentang konsep yang telah kita bahas di modul ini:
Posting Komentar