Pertimbangan keamanan untuk canary Synthetics - Amazon CloudWatch

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Pertimbangan keamanan untuk canary Synthetics

Bagian berikut menjelaskan masalah keamanan yang harus Anda pertimbangkan ketika membuat dan menjalankan canary dalam Synthetics.

Gunakan Koneksi yang aman

Karena kode canary dan hasil dari test run canary dapat memuat informasi sensitif, jangan menghubungkan canary Anda ke titik akhir melalui koneksi yang tidak terenkripsi. Selalu gunakan koneksi yang terenkripsi, seperti yang dimulai dengan https://.

Pertimbangan penamaan canary

Amazon Resource Name (ARN) kenari disertakan dalam header user-agent sebagai bagian dari panggilan keluar yang dilakukan dari browser Chromium yang digerakkan oleh Puppeteer yang disertakan sebagai bagian dari pustaka pembungkus Synthetics. CloudWatch Ini membantu mengidentifikasi lalu lintas kenari CloudWatch Synthetics dan menghubungkannya kembali ke kenari yang melakukan panggilan.

Kenari ARN termasuk nama kenari. Pilih nama canary yang tidak mengungkapkan informasi hak milik.

Selain itu, pastikan untuk menunjuk canary Anda hanya di situs web dan titik akhir yang Anda kendalikan.

Rahasia dan informasi sensitif dalam kode canary

Jika Anda meneruskan kode kenari Anda langsung ke kenari menggunakan file zip, isi skrip dapat dilihat di AWS CloudTrail log.

Jika Anda memiliki informasi atau rahasia sensitif (seperti kunci akses atau kredensial basis data) dalam skrip canary, kami sangat menyarankan Anda menyimpan skrip sebagai objek berversi di Amazon S3 dan meneruskan lokasi Amazon S3 ke dalam canary, alih-alih meneruskan kode canary dengan file zip.

Jika Anda menggunakan file zip untuk meneruskan skrip canary, kami sangat menyarankan agar Anda tidak menyertakan informasi rahasia atau informasi sensitif di kode sumber canary Anda. Untuk informasi lebih lanjut tentang cara menggunakan AWS Secrets Manager untuk membantu menjaga rahasia Anda aman, lihat Apa itu AWS Secrets Manager?.

Pertimbangan izin

Kami menyarankan Anda membatasi akses ke sumber daya yang dibuat atau digunakan oleh CloudWatch Synthetics. Gunakan izin ketat pada bucket Amazon S3 di mana canary menyimpan hasil test run dan artefak lainnya, seperti log dan tangkapan layar.

Demikian pula, simpan izin ketat pada lokasi tempat kode sumber canary Anda disimpan, sehingga tidak ada pengguna yang secara tidak sengaja atau jahat menghapus lapisan Lambda atau fungsi Lambda yang digunakan untuk canary tersebut.

Untuk membantu memastikan bahwa Anda menjalankan kode canary yang diinginkan, Anda dapat menggunakan versioning objek pada bucket Amazon S3 tempat kode canary disimpan. Kemudian, ketika Anda menentukan kode ini untuk dijalankan sebagai canary, Anda dapat menyertakan objek versionId sebagai bagian dari jalur, seperti dalam contoh berikut.

https://bucket.s3.amazonaws.com/path/object.zip?versionId=version-id https://s3.amazonaws.com/bucket/path/object.zip?versionId=version-id https://bucket.s3-region.amazonaws.com/path/object.zip?versionId=version-id

Jejak stack dan pesan pengecualian

Secara default, kenari CloudWatch Synthetics menangkap pengecualian apa pun yang dilemparkan oleh skrip kenari Anda, tidak peduli apakah skripnya kustom atau berasal dari cetak biru. CloudWatch Synthetics mencatat pesan pengecualian dan jejak tumpukan ke tiga lokasi:

  • Kembali ke layanan CloudWatch Synthetics untuk mempercepat debugging saat Anda menjelaskan pengujian berjalan

  • Ke CloudWatch Log sesuai dengan konfigurasi yang digunakan oleh fungsi Lambda Anda

  • Ke dalam file log Sintetis, yang merupakan file teks biasa yang diunggah ke lokasi Amazon S3 yang ditentukan oleh nilai yang ditetapkan untuk resultsLocation dari canary tersebut

Jika Anda ingin mengirim dan menyimpan lebih sedikit informasi, Anda dapat menangkap pengecualian sebelum kembali ke pustaka pembungkus CloudWatch Synthetics.

Anda juga dapat memiliki permintaan URLs dalam kesalahan Anda. CloudWatch Synthetics memindai kesalahan apa pun URLs yang dilemparkan oleh skrip Anda dan menyunting URL parameter terbatas darinya berdasarkan konfigurasi. restrictedUrlParameters Jika Anda mencatat pesan kesalahan dalam skrip Anda, Anda dapat menggunakan getSanitizedErrorPesan untuk menyunting URLs sebelum masuk.

Cakupan IAM peran Anda secara sempit

Kami menyarankan agar Anda tidak mengonfigurasi kenari Anda untuk mengunjungi titik akhir yang berpotensi berbahaya URLs atau berbahaya. Menunjukkan canary Anda ke situs web atau titik akhir yang tidak dipercaya atau tidak dikenal dapat membuat kode fungsi Lambda Anda mengekspos skrip pengguna yang berbahaya. Dengan asumsi bahwa situs web berbahaya dapat keluar dari Chromium, situs web tersebut dapat memiliki akses ke kode Lambda Anda dengan cara yang sama jika Anda terhubung dengan menggunakan browser internet.

Jalankan fungsi Lambda Anda dengan peran IAM eksekusi yang memiliki izin tercakup ke bawah. Dengan cara ini, jika fungsi Lambda Anda dikompromikan oleh skrip berbahaya, itu terbatas dalam tindakan yang dapat diambil saat menjalankan sebagai milik kenari Anda AWS akun.

Saat Anda menggunakan CloudWatch konsol untuk membuat kenari, konsol dibuat dengan peran eksekusi cakupan ke bawah. IAM

Redaksi data sensitif

CloudWatch Synthetics menangkapURLs, kode status, alasan kegagalan (jika ada), dan header dan badan permintaan dan tanggapan. Ini memungkinkan pengguna canary untuk memahami, memantau, dan men-debug canary.

Konfigurasi yang dijelaskan di bagian berikut dapat diatur kapan saja dalam eksekusi canary. Anda juga dapat memilih untuk menerapkan konfigurasi yang berbeda untuk langkah-langkah synthetics yang berbeda.

Permintaan URLs

Secara default, permintaan log CloudWatch SyntheticsURLs, kode status, dan alasan status untuk masing-masing log URL kenari. Permintaan juga URLs dapat muncul dalam laporan eksekusi kenari, HAR file, dan sebagainya. Permintaan Anda URL mungkin berisi parameter kueri sensitif, seperti token akses atau kata sandi. Anda dapat menyunting informasi sensitif agar tidak dicatat oleh CloudWatch Synthetics.

Untuk menyunting informasi sensitif, atur properti restrictedUrlParameterskonfigurasi. Untuk informasi selengkapnya, lihat SyntheticsConfiguration kelas. Hal ini menyebabkan CloudWatch Synthetics menyunting URL parameter, termasuk nilai parameter path dan query, berdasarkan restrictedUrlParameterssebelum logging. Jika Anda URLs masuk ke skrip Anda, Anda dapat menggunakan getSanitizedUrl(url, stepConfig = nol) untuk menyunting URLs sebelum masuk. Untuk informasi selengkapnya, lihat SyntheticsLogHelper kelas.

Header

Secara default, CloudWatch Synthetics tidak mencatat header permintaan/respons. Untuk canary UI, ini adalah perilaku default untuk canary yang menggunakan versi syn-nodejs-puppeteer-3.2 runtime dan yang lebih baru.

Jika header Anda tidak berisi informasi sensitif, Anda dapat mengaktifkan header dalam HAR file dan HTTP laporan dengan menyetel includeResponseHeadersproperti includeRequestHeadersdan ke. true Anda dapat mengaktifkan semua header tetapi pilihlah untuk membatasi nilai tombol header sensitif. Misalnya, Anda dapat memilih untuk hanya menyunting header Authorization dari artefak yang dihasilkan oleh canary.

Permintaan dan isi respons

Secara default, CloudWatch Synthetics tidak mencatat isi permintaan/respons di log atau laporan kenari. Informasi ini sangat berguna untuk API burung kenari. Synthetics menangkap semua HTTP permintaan dan dapat menampilkan header, permintaan, dan badan respons. Untuk informasi selengkapnya, lihat executeHttpStep(stepName,requestOptions, [panggilan balik], [stepConfig]). Anda dapat memilih untuk mengaktifkan badan permintaan/respons dengan mengatur properti includeRequestBodydan includeResponseBodyke. true