Tips keamanan cloud hanya berguna jika mengatasi celah nyata yang dieksploitasi penyerang: bucket S3 publik yang tidak diperhatikan siapa pun, atau CI runner dengan wildcard. AWS izin, rahasia yang bocor dalam log build, atau dependensi berbahaya yang terinstal secara diam-diam selama proses pipeline Jalankan. Sebagian besar insiden keamanan cloud bukan disebabkan oleh ancaman yang tidak dikenal. Insiden tersebut disebabkan oleh kelemahan yang diketahui tetapi tidak pernah ditegakkan, diprioritaskan, atau diperbaiki.
Panduan ini mencakup 20 kiat praktis keamanan cloud yang disusun berdasarkan lapisan: identitas, data, infrastruktur, rantai pasokan perangkat lunak, CI/CD pipelinedeteksi, dan respons insiden. Baik Anda memperkuat keamanan satu akun cloud atau mengamankan tim multi-tim. DevSecOps pipelineKontrol-kontrol ini membantu mencegah pelanggaran yang sebenarnya terjadi.
Mengapa Keamanan Cloud Terus Gagal Meskipun Ada Begitu Banyak Tips Keamanan Cloud?
Keamanan cloud adalah serangkaian kontrol, kebijakan, dan alat yang melindungi data, aplikasi, dan infrastruktur yang berjalan di lingkungan cloud. Ini mencakup identitas, jaringan, data, kode aplikasi, dependensi, konfigurasi infrastruktur, dan pembangunan. pipelines.
Alasan mengapa hal itu terus gagal bahkan untuk tim yang sudah berpengalaman bukanlah karena kurangnya pengetahuan. Ada tiga masalah struktural:
- Kecepatan versus keamanan. PipelineProsesnya berjalan cepat. Kontrol yang menambah hambatan akan dinonaktifkan. Tim yang berhasil menerapkan keamanan cloud dengan benar tidak menambahkan gerbang pengaman, tetapi mengotomatiskan penegakan aturan langsung ke dalam alur kerja.
- Fragmentasi alat. Pemindaian rahasia dalam satu alat, SCA di tempat lain, IaC Pada sepertiga bagian. Tidak adanya pandangan terpadu berarti terdapat celah di antara lapisan cakupan, dan temuan tidak pernah dikorelasikan dengan risiko nyata.
- Kelelahan siaga. Pemindai yang menemukan ratusan CVE setiap hari melatih para insinyur untuk mengabaikan temuan, termasuk yang kritis. Prioritas bukanlah pilihan; prioritaslah yang menentukan apakah keamanan benar-benar berfungsi.
Tips keamanan cloud di bawah ini dirancang untuk menutup celah tersebut secara praktis. Alih-alih memperlakukan keamanan cloud sebagai masalah yang hanya terjadi saat runtime, tips ini mencakup seluruh jalur pengiriman dari kode ke cloud.
20 Tips Keamanan Cloud:
Tips Keamanan Cloud untuk Manajemen Identitas dan Akses
1. Aktifkan Otentikasi Multi-Faktor di Mana Saja
MFA tetap menjadi kontrol dengan ROI tertinggi dalam keamanan cloud. MFA menghentikan serangan pencurian kredensial secara tuntas, dan penyerang mengetahuinya. Akun apa pun tanpa MFA adalah target yang mudah.
Terapkan MFA (Autentikasi Multi-Factor) untuk setiap identitas manusia di lingkungan cloud Anda: akun pengembang, konsol admin, portal penyedia cloud, CI/CD dashboardGunakan MFA (faktor otentikasi multi-akun) yang tahan terhadap phishing (kunci perangkat keras, kata sandi) untuk akun istimewa. Kode berbasis waktu melalui aplikasi otentikator adalah standar minimum.
2. Terapkan Prinsip Hak Akses Terbatas, Terutama pada Identitas Non-Manusia
Prinsip Hak Istimewa Paling Rendah Hal ini sudah dipahami dengan baik untuk manusia. Bagian yang selalu terlewatkan oleh tim adalah identitas non-manusia: CI/CD akun layanan, fungsi Lambda, beban kerja kontainer, runner GitHub Actions.
Identitas-identitas ini mengakumulasi izin wildcard karena dikonfigurasi sekali dan tidak pernah diubah lagi. Identitas-identitas ini juga merupakan target utama penyerang dalam serangan rantai pasokan, karena mereka memiliki akses ke rahasia, repositori, sumber daya produksi, dan sistem hilir.
// Bad: wildcard S3 permissions on a Lambda function { "Action": "s3:*", "Resource": "*" } // Good: scoped to exactly what the function needs { "Action": ["s3:GetObject", "s3:PutObject"], "Resource": "arn:aws:s3:::my-app-bucket/uploads/*" } Lakukan audit izin akun layanan setiap triwulan. Hapus semua yang belum digunakan dalam 90 hari.
3. Ganti Kredensial Berumur Panjang dengan Token Berumur Pendek
Kunci API statis dan token yang berlaku lama adalah salah satu penyebab utama pelanggaran keamanan cloud yang paling umum. Mereka mendapatkan commitDikirim ke repositori, bocor di log CI, disalin ke Slack, dan dilupakan begitu saja. .env berkas-berkas tersebut, kemudian tetap berlaku selama berbulan-bulan atau bertahun-tahun.
Gantilah dengan kredensial berjangka pendek jika memungkinkan: AWS STS mengambil peran, Federasi Identitas Beban Kerja GCP, GitHub Actions OIDCJika kredensial statis tidak dapat dihindari, simpanlah di pengelola rahasia (Vault, AWS Secrets Manager, Azure Key Vault) dan lakukan rotasi secara otomatis.
4. Menerapkan Akses Tepat Waktu untuk Hak Akses yang Lebih Tinggi
Akses admin tetap berarti risiko tetap. Izin akses tingkat tinggi permanen berarti satu identitas yang disusupi sudah cukup untuk mencapai lingkungan produksi.
Sistem akses JIT (AWS IAM Identity Center, GCP Privileged Access Manager, Okta Access Requests) memberikan akses tingkat tinggi sesuai permintaan, terbatas waktu, dan dengan log audit lengkap. Pengembang mendapatkan apa yang mereka butuhkan saat mereka membutuhkannya. Penyerang tidak menemukan target yang tetap.
5. Terapkan Zero Trust di Seluruh Komunikasi Antar Layanan
Model perimeter tradisional mengasumsikan bahwa segala sesuatu di dalam jaringan dapat dipercaya. Lingkungan cloud-native dengan microservices, container, dan beban kerja dinamis membuat asumsi tersebut menjadi berbahaya.
Nol Kepercayaan Artinya, setiap permintaan diautentikasi dan diotorisasi, terlepas dari mana asalnya. Terapkan autentikasi antar layanan (mTLS, identitas service mesh), terapkan kebijakan jaringan pada tingkat beban kerja, dan perlakukan lalu lintas internal sebagai tidak tepercaya secara default.
Tips Keamanan Cloud untuk Perlindungan Data
6. Enkripsi Semuanya, Termasuk Lalu Lintas Internal
Enkripsi saat tidak digunakan (AES-256, KMS terkelola) sekarang standard latihan. Kesenjangan yang dimiliki sebagian besar tim adalah enkripsi dalam transmisi untuk lalu lintas internal.
Dalam VPC dengan layanan mikro dan komunikasi antar kontainer, lalu lintas yang tetap berada "di dalam" tidak selalu aman. Terapkan mutual TLS (mTLS) untuk komunikasi layanan internal. Gunakan service mesh (Istio, Linkerd) atau lapisan jaringan zero-trust untuk menerapkannya secara otomatis daripada mengandalkan setiap tim untuk mengkonfigurasinya dengan benar.
7. Mendeteksi dan Memperbaiki Rahasia yang Terungkap Sebelum Menyebar
Sebuah rahasia commitRahasia yang tersimpan di repositori tidak akan tetap menjadi rahasia. GitHub mengindeks repositori publik dalam hitungan detik. Repositori internal pun tidak kebal, begitu sebuah rahasia masuk ke dalam riwayat Git, rahasia tersebut dapat diakses oleh siapa pun yang memiliki akses ke repositori, baik sekarang maupun di masa mendatang.
Lapisan pencegahan itu penting (pre-commit hooks(plugin IDE) tetapi itu tidak cukup. Anda memerlukan pemindaian berkelanjutan di semua repositori, termasuk repositori historis. commits, CI/CD log, IaC file, dan citra kontainer. Ketika sebuah rahasia terdeteksi, respons harus segera: cabut, rotasi, dan nilai apakah rahasia tersebut diakses antara saat terungkap dan saat terdeteksi.
8. Mengklasifikasikan Data dan Menerapkan Kontrol Berdasarkan Sensitivitas
Tidak semua data di lingkungan cloud Anda membawa risiko yang sama jika terekspos. Memperlakukan semuanya sama berarti berinvestasi berlebihan pada kontrol data berisiko rendah dan kurang melindungi data yang sebenarnya penting.
Klasifikasikan data berdasarkan sensitivitas (publik, internal, rahasia, terbatas). Terapkan kontrol akses dan enkripsi. standards, dan persyaratan pencatatan audit untuk setiap tingkatan. Otomatiskan klasifikasi jika memungkinkan, penandaan manual tidak efisien.
Keamanan Infrastruktur dan Konfigurasi
9. Pindai IaC pada Setiap Commit, Bukan Tepat Sebelum Penugasan
Infrastruktur sebagai Kode adalah tempat terjadinya kesalahan konfigurasi, bukan di lingkungan produksi. Sebuah bucket S3 publik, grup keamanan terbuka, atau peran IAM dengan *: * Pengaturan izin tidak muncul secara kebetulan. Itu bermula sebagai baris dalam file Terraform atau manifest Kubernetes yang tidak ditandai oleh siapa pun.
IaC Pemindaian harus dijalankan pada setiap pull request, dengan temuan yang muncul dalam alur kerja tinjauan kode. Pindai Terraform, manifest Kubernetes, CloudFormation, bagan Helm, Dockerfile, dan CI/CD konfigurasi.
# This fails immediately in Xygeni IaC scanning: resource "aws_s3_bucket" "data" { bucket = "company-data" acl = "public-read" # ← flagged: public access enabled } Xygeni IaC Security memindai setiap format yang didukung di setiap commit, memetakan temuan ke sumber daya spesifik, dan terintegrasi dengan alur kerja PR Anda sehingga pengembang mendapatkan umpan balik di tempat mereka bekerja, bukan di tempat terpisah. dashboard Mereka tidak pernah buka. Mulai uji coba gratis →
10. Perlakukan Kebijakan Keamanan sebagai Kode Etik
Tinjauan keamanan manual tidak efisien untuk skala besar. Kebijakan sebagai kode (policy-as-code) adalah solusinya.
Gunakan alat seperti OPA (Open Policy Agent) atau Kyverno untuk menyatakan aturan keamanan sebagai kode yang dapat diuji dan memiliki versi. Terapkan aturan tersebut di pipeline level jadi deployment Kubernetes dengan istimewa: benar atau sebuah kontainer yang berjalan sebagai root akan menyebabkan proses build gagal secara otomatis setiap saat. Ketika kebijakan berada dalam kode, kebijakan tersebut akan ditinjau dan ditingkatkan seperti artefak rekayasa lainnya. Ketika kebijakan berada dalam dokumentasi, kebijakan tersebut akan berubah seiring waktu.
11. Terapkan Garis Dasar Konfigurasi Aman dan Pantau Penyimpangan
Konfigurasi default dioptimalkan untuk kemudahan penggunaan, bukan keamanan. Layanan cloud, runtime kontainer, dan klaster Kubernetes terkelola dilengkapi dengan pengaturan yang mudah digunakan, dan mudah dieksploitasi.
Mulai dari CIS Tolok ukur untuk penyedia cloud, runtime kontainer, dan sistem operasi Anda. Enkripsikan tolok ukur tersebut sebagai kebijakan-sebagai-kode sehingga diterapkan secara otomatis. Pantau terus-menerus untuk melihat adanya penyimpangan; konfigurasi yang sesuai minggu lalu mungkin tidak sesuai hari ini setelah perubahan cepat yang dilakukan di bawah tekanan.
12. Membagi Jaringan Menjadi Segmen dan Membatasi Pergerakan Lateral
Arsitektur jaringan datar berarti bahwa begitu penyerang membahayakan satu beban kerja, mereka dapat menjangkau semua beban kerja lainnya. Segmentasi jaringan membatasi jangkauan serangan.
Gunakan VPC, subnet, dan grup keamanan untuk membuat zona isolasi berdasarkan fungsi dan sensitivitas. Batasi lalu lintas timur-barat antar layanan hanya pada apa yang dibutuhkan. Terapkan pemfilteran keluar (egress filtering), sebagian besar beban kerja yang disusupi perlu mencapai server yang dikendalikan penyerang, dan kontrol keluar adalah salah satu peluang terbaik Anda untuk mendeteksi atau mencegah hal tersebut.
Kiat Keamanan Cloud Rantai Pasokan Perangkat Lunak
Beberapa kiat keamanan cloud terpenting tidak lagi dimulai dari dalam konsol penyedia cloud. Kiat-kiat tersebut dimulai lebih awal, di dalam rantai pasokan perangkat lunak. Ketergantungan, CI/CD Alur kerja, rahasia, skrip pembuatan, dan artefak semuanya dapat menimbulkan risiko cloud sebelum penerapan.
13. Pindai Setiap Dependensi Sebelum Masuk ke Proses Build Anda
Paket open-source merupakan vektor akses awal yang paling umum dalam serangan rantai pasokan modern. Kampanye Shai-Hulud tahun 2024 membahayakan lebih dari 830 paket npm. Backdoor XZ Utils hampir membahayakan otentikasi SSH di jutaan sistem Linux. Dalam kedua kasus tersebut, kode berbahaya masuk melalui proses instalasi dependensi normal.
Dasar SCA (Analisis Komposisi Perangkat Lunak), daftar CVE mentah, tidaklah cukup. Yang sebenarnya Anda butuhkan:
- Analisis keterjangkauanApakah fungsi yang rentan tersebut benar-benar dipanggil dalam kode Anda?
- Deteksi perangkat lunak jahatApakah paket ini menunjukkan perilaku berbahaya, skrip yang disamarkan, panggilan jaringan yang tidak terduga, atau siklus hidup? hooks yang menginstal runtime eksternal?
- Penilaian EPSSBerapakah probabilitas CVE ini dieksploitasi secara aktif di dunia nyata saat ini, bukan hanya secara teoritis?
14. Penguncian CI/CD Pipelines
CI/CD Sistem-sistem tersebut memiliki akses ke rahasia, kredensial cloud, dan lingkungan produksi. Sistem-sistem tersebut juga biasanya kurang terlindungi dibandingkan sistem produksi yang menjadi tempat penyebarannya.
Kontrol yang harus diterapkan:
- Perlu dilakukan peninjauan kode untuk setiap perubahan pada pipeline berkas konfigurasi (.github/alur kerja/, Jenkinsfile, Dll)
- Batasi akses runner yang dihosting sendiri hanya ke repositori yang disetujui; akses runner yang tidak ditinjau merupakan jalan langsung menuju pencurian kredensial.
- Jangan pernah mengirimkan rahasia sebagai variabel lingkungan teks biasa; gunakan integrasi pengelola rahasia.
- Audit pipeline log untuk perintah yang tidak terduga, panggilan jaringan yang tidak biasa, atau eksekusi pada jam-jam yang tidak terduga.
Xygeni CI/CD Security menegakkan guardrails langsung di Anda pipeline , memblokir build yang tidak aman, mendeteksi alur kerja yang disuntikkan, dan memastikan pipeline Integritas di setiap tahap. Pesan demo →
15. Memvalidasi Integritas Build dan Menandatangani Artefak
Jika penyerang dapat menyuntikkan kode ke dalam skrip build, memodifikasi artefak setelah kompilasi, atau membahayakan runner CI, mereka memiliki kendali atas rantai pasokan perangkat lunak Anda, terlepas dari seberapa bersih kode sumber Anda.
Terapkan kontrol integritas build:
- Tetapkan semua versi dependensi dan image dasar ke digest yang tepat, bukan tag.
- Tandatangani artefak build dan verifikasi tanda tangan sebelum penyebaran.
- Pantau perubahan yang tidak terduga pada CI/CD File alur kerja, alur kerja yang disuntikkan, merupakan indikator kunci dalam serangan seperti Shai-Hulud.
- Terapkan pengesahan SLSA untuk membuktikan secara kriptografis apa yang dibangun, dari sumber apa, dan oleh siapa. pipeline
Deteksi Ancaman dan Respons Insiden
16. Sentralisasi Pencatatan dan Bangun Visibilitas di Seluruh Tumpukan
Anda tidak dapat mendeteksi apa yang tidak dapat Anda lihat. Sebagian besar pemantauan keamanan cloud berfokus pada runtime, CloudTrail, log aliran VPC, GuardDuty. Itu perlu tetapi tidak cukup.
Serangan seperti Shai-Hulud dan SolarWinds berhasil sebagian karena celah keamanan terjadi pada tahap pembuatan perangkat lunak. pipelineJauh sebelum hal apa pun mencapai tahap pemantauan produksi. Visibilitas lengkap membutuhkan cakupan di seluruh perubahan kode sumber, lapisan build dan artefak, runtime cloud, dan aktivitas API.
17. Prioritaskan Temuan berdasarkan Potensi Pemanfaatan, Bukan Hanya Tingkat Keparahan
Pemindai yang menghasilkan 500 temuan per minggu melatih tim untuk mengabaikan temuan, termasuk yang kritis. Prioritas adalah hal yang membedakan program keamanan yang efektif dari program yang hanya ada di atas kertas.
Prioritas yang efektif menggabungkan: jangkauan (apakah kode yang rentan benar-benar dieksekusi?), paparan (apakah layanan tersebut menghadap internet?), skor EPSS (probabilitas eksploitasi aktif), dan konteks bisnis (lingkungan produksi vs. lingkungan pengembangan).
Xygeni ASPM menyatukan semua temuan SAST, SCA, IaCrahasia, dan pipeline security menjadi pandangan risiko terpadu, dengan prioritas kontekstual yang memberi tahu tim Anda dengan tepat apa yang harus diperbaiki terlebih dahulu. Pesan demo →
18. Tetapkan Tolok Ukur Perilaku dan Beri Peringatan Jika Terjadi Penyimpangan
Deteksi tanda tangan berbahaya yang sudah dikenal menangkap ancaman yang sudah diketahui. Deteksi anomali perilaku menangkap ancaman yang tidak dikenal, kerentanan zero-day, pola serangan baru, dan ancaman dari dalam perusahaan.
Untuk Anda CI/CD Khususnya dalam lingkungan tersebut, tetapkan patokan untuk durasi pembangunan yang umum, pola instalasi paket normal, tujuan jaringan yang diharapkan selama pembangunan, dan standard Pola akses rahasia. Penyimpangan dari pedoman ini adalah sinyal peringatan paling awal Anda, dan lapisan yang sama sekali tidak terlihat oleh sebagian besar tim.
19. Mendefinisikan Runbook untuk Skenario Insiden Khusus Cloud
Rencana respons insiden generik tidak memperhitungkan skenario khusus cloud: paket yang telah disusupi dan terpasang di 40 layanan, CI runner dengan kredensial yang dicuri oleh skrip pra-instalasi berbahaya, artefak build yang mungkin telah dirusak dalam 72 jam terakhir.
Buat panduan operasional khusus untuk: ketergantungan yang terganggu, pipeline Pencurian kredensial, paparan data yang dipicu oleh kesalahan konfigurasi, dan injeksi alur kerja CI yang berbahaya. Setiap runbook harus mendefinisikan siapa yang bertanggung jawab atas respons, apa yang segera dicabut, dan forensik apa yang diperlukan untuk menentukan dampak kerusakan.
20. Jalankan Latihan di Atas MejacisYa, Minimal Dua Kali Setahun
Buku panduan (runbook) yang belum diuji hanyalah sebuah hipotesis. Latihan simulasi di atas meja.cisHal ini mengungkap celah dalam rencana respons Anda sebelum penyerang melakukannya. Tujuannya bukan untuk mengikuti panduan dengan sempurna, melainkan untuk menemukan apa yang hilang.
Lakukan minimal dua latihancisSetiap tahun, simulasikan berbagai jenis skenario: kompromi rantai pasokan, pelanggaran data akibat kesalahan konfigurasi, dan kompromi pada CI runner. Sertakan tim yang akan benar-benar merespons, yaitu tim keamanan, DevOps, dan pengembang yang siaga.
Daftar Periksa Kiat Keamanan Cloud: Referensi Cepat
| Lapisan | Kontrol Kunci |
|---|---|
| identitas | MFA di mana-mana, hak akses minimal, kredensial berumur pendek, akses JIT. |
| Data | Enkripsi saat data diam dan saat data dikirim, pemindaian rahasia dan pencabutan otomatis, klasifikasi data. |
| Infrastruktur | IaC pemindaian pada commit, kebijakan sebagai kode, CIS penegakan dasar, segmentasi jaringan |
| Rantai pasokan | SCA dengan kemampuan jangkauan dan deteksi malware, CI/CD pengerasan, membangun integritas, dan SLSA |
| Deteksi | Pencatatan terpusat, prioritas berbasis EPSS, deteksi anomali perilaku. |
| Response | Buku panduan khusus cloud, latihan simulasi di atas meja.cisya, penilaian radius ledakan yang terdokumentasi |
Bagaimana Xygeni Membantu Menerapkan Kiat Keamanan Cloud di Seluruh Stack
Tips keamanan cloud hanya efektif jika tim dapat menerapkannya secara konsisten di seluruh siklus hidup pengiriman perangkat lunak. Sebagian besar alat hanya mencakup satu lapisan: runtime, kode, dependensi, rahasia, atau CI/CDNamun, serangan sesungguhnya dapat menembus berbagai lapisan.
Xygeni menghubungkan lapisan-lapisan ini dengan deteksi, prioritas, dan perbaikan terintegrasi mulai dari git push pertama hingga produksi.
| Lapisan | Kemampuan Xygeni | Apa yang Dicegahnya |
|---|---|---|
| Kode sumber | SAST + Perbaikan AI | Injeksi, kegagalan otentikasi, desain yang tidak aman |
| Dependensi | SCA + Deteksi Malware + EPSS | Rantai pasokan terganggu, paket rentan. |
| Rahasia | Keamanan Rahasia + Pencabutan Otomatis | Paparan kredensial, risiko token jangka panjang |
| IaC & Konfigurasi | IaC Security | Kesalahan konfigurasi sebelum mencapai tahap produksi |
| CI/CD Pipeline | CI/CD Keamanan + Deteksi Anomali | Pipeline suntikan, kompromi pelari |
| Membangun artefak | Build Security + SLSA provenance | Artefak yang dimanipulasi, rilis yang tidak ditandatangani |
| Postur risiko | ASPM | Tampilan terpadu, prioritas lintas lapisan |
Hasilnya: tim keamanan mendapatkan sinyal, bukan gangguan. Pengembang mendapatkan umpan balik di tempat mereka bekerja, bukan di alat terpisah yang tidak pernah mereka buka. Dan keamanan menjadi bagian dari proses pengiriman, bukan penghalang yang memperlambatnya.
Final Thoughts
Kiat keamanan cloud mudah untuk disebutkan tetapi lebih sulit untuk diterapkan. Tim yang mengurangi risiko cloud nyata tidak bergantung pada tinjauan manual, alat yang tersebar, atau prioritas berdasarkan tingkat keparahan saja. Sebaliknya, mereka mengotomatiskan kontrol keamanan di dalam pipelinePrioritaskan berdasarkan potensi eksploitasi, dan perlakukan seluruh rantai pasokan perangkat lunak sebagai bagian dari permukaan serangan cloud.
Itu berarti mengamankan lebih dari sekadar infrastruktur runtime. Itu berarti melindungi kode sumber, dependensi, rahasia, IaC, CI/CD alur kerja, artefak pembangunan, dan postur risiko aplikasi secara bersamaan.
Jika alat yang Anda gunakan saat ini meninggalkan celah di antara lapisan-lapisan tersebut, Xygeni membantu menutupnya dengan deteksi, prioritas, dan perbaikan terintegrasi di seluruh jalur dari kode hingga cloud.
👉 Mulai uji coba gratis 7-hari Anda Tidak perlu kartu kredit, hasil pemindaian dalam hitungan menit.
👉 Pesan demo dan lihat bagaimana Xygeni dipetakan ke cloud spesifik Anda dan pipeline penyiapan
tentang Penulis
Pendiri Bersama & CTO
Fatima Said mengkhususkan diri dalam konten yang berfokus pada pengembang untuk AppSec, DevSecOps, dan software supply chain securityDia mengubah sinyal keamanan yang kompleks menjadi panduan yang jelas dan dapat ditindaklanjuti yang membantu tim memprioritaskan lebih cepat, mengurangi gangguan, dan mengirimkan kode yang lebih aman.




