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

Nama Sumber Daya Amazon (ARN) kenari disertakan dalam header agen pengguna 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.

ARN canary mencakup nama canary. 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 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 selengkapnya tentang cara menggunakan AWS Secrets Manager untuk membantu menjaga rahasia Anda tetap 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 URL permintaan di kesalahan Anda. CloudWatch Synthetics memindai URL apa pun dalam kesalahan yang dilemparkan oleh skrip Anda dan menyunting parameter URL yang dibatasi darinya berdasarkan konfigurasi. restrictedUrlParameters Jika Anda membuat log kesalahan dalam skrip Anda, Anda dapat menggunakan getSanitizedErrorPesan untuk menyunting URL sebelum membuat log.

Batasi peran IAM Anda secara sempit

Kami menyarankan agar Anda tidak mengonfigurasi canary untuk mengunjungi titik akhir URL yang berpotensi 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 eksekusi IAM yang memiliki cakupan izin. Dengan cara ini, jika fungsi Lambda Anda dikompromikan oleh skrip berbahaya, itu terbatas dalam tindakan yang dapat dilakukan saat menjalankan sebagai akun kenari Anda. AWS

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

Redaksi data sensitif

CloudWatch Synthetics menangkap URL, kode status, alasan kegagalan (jika ada), dan header serta 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.

URL Permintaan

Secara default, log CloudWatch Synthetics meminta URL, kode status, dan alasan status untuk setiap URL di log canary. URL permintaan juga dapat muncul dalam laporan eksekusi canary, file HAR, dan sebagainya. URL permintaan Anda 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 parameter URL, termasuk nilai parameter path dan query, berdasarkan restrictedUrlParameterssebelum logging. Jika Anda membuat log URL di skrip Anda, Anda dapat menggunakan getSanitizedUrl(url, stepConfig = nol) untuk menyunting URL sebelum membuat log. 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 file HAR dan laporan HTTP dengan menyetel properti includeRequestHeadersdan includeResponseHeaderske. 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 canary API. Synthetics menangkap semua permintaan HTTP dan dapat menampilkan header, permintaan, dan isi respons. Untuk informasi selengkapnya, lihat executeHttpStep(stepName,requestOptions, [panggilan balik], [stepConfig]). Anda dapat memilih untuk mengaktifkan badan permintaan/respons dengan menyetel properti includeRequestBodydan includeResponseBodyke. true