Mendeteksi penerapan dan konfigurasi Lambda yang tidak sesuai dengan AWS Config - AWS Lambda

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

Mendeteksi penerapan dan konfigurasi Lambda yang tidak sesuai dengan AWS Config

Selain evaluasi proaktif, juga AWS Config dapat secara reaktif mendeteksi penyebaran sumber daya dan konfigurasi yang tidak sesuai dengan kebijakan tata kelola Anda. Ini penting karena kebijakan tata kelola berkembang saat organisasi Anda belajar dan menerapkan praktik terbaik baru.

Pertimbangkan skenario di mana Anda menetapkan kebijakan baru saat menerapkan atau memperbarui fungsi Lambda: Semua fungsi Lambda harus selalu menggunakan versi lapisan Lambda tertentu yang disetujui. Anda dapat mengonfigurasi AWS Config untuk memantau fungsi baru atau yang diperbarui untuk konfigurasi lapisan. Jika AWS Config mendeteksi fungsi yang tidak menggunakan versi lapisan yang disetujui, ia menandai fungsi tersebut sebagai sumber daya yang tidak sesuai. Anda dapat mengonfigurasi secara opsional AWS Config untuk memulihkan sumber daya secara otomatis dengan menentukan tindakan remediasi menggunakan dokumen otomatisasi. AWS Systems Manager Misalnya, Anda dapat menulis dokumen otomatisasi dengan Python menggunakan AWS SDK for Python (Boto3), yang memperbarui fungsi yang tidak sesuai untuk menunjuk ke versi lapisan yang disetujui. Dengan demikian, AWS Config berfungsi sebagai kontrol detektif dan korektif, mengotomatiskan manajemen kepatuhan.

Mari kita uraikan proses ini menjadi tiga fase implementasi penting:

The three implementation phases are identify, notify, and deploy remediation.

Tahap 1: Identifikasi sumber daya akses

Mulailah dengan mengaktifkan AWS Config di seluruh akun Anda dan mengonfigurasinya untuk merekam fungsi Lambda AWS . Ini memungkinkan AWS Config untuk mengamati kapan fungsi Lambda dibuat atau diperbarui. Anda kemudian dapat mengonfigurasi aturan kebijakan khusus untuk memeriksa pelanggaran kebijakan tertentu, yang menggunakan AWS CloudFormation Guard sintaks. Aturan penjaga mengambil bentuk umum berikut:

rule name when condition { assertion }

Di bawah ini adalah contoh aturan yang memeriksa untuk memastikan bahwa lapisan tidak diatur ke versi lapisan lama:

rule desiredlayer when configuration.layers !empty { some configuration.layers[*].arn != CONFIG_RULE_PARAMETERS.OldLayerArn }

Mari kita pahami sintaks aturan dan struktur:

  • Nama aturan: Nama aturan dalam contoh yang diberikan adalahdesiredlayer.

  • Kondisi: Klausul ini menentukan kondisi di mana aturan harus diperiksa. Dalam contoh yang diberikan, kondisinya adalahconfiguration.layers !empty. Ini berarti sumber daya harus dievaluasi hanya ketika layers properti dalam konfigurasi tidak kosong.

  • Pernyataan: Setelah when klausa, pernyataan menentukan apa yang diperiksa aturan. Pernyataan some configuration.layers[*].arn != CONFIG_RULE_PARAMETERS.OldLayerArn memeriksa apakah salah satu lapisan Lambda ARNs tidak cocok dengan nilainya. OldLayerArn Jika mereka tidak cocok, pernyataan itu benar dan aturan berlalu; jika tidak, itu gagal.

CONFIG_RULE_PARAMETERSadalah seperangkat parameter khusus yang dikonfigurasi dengan AWS Config aturan. Dalam hal ini, OldLayerArn adalah parameter di dalamnyaCONFIG_RULE_PARAMETERS. Ini memungkinkan pengguna untuk memberikan nilai ARN tertentu yang mereka anggap lama atau tidak digunakan lagi, dan kemudian aturan memeriksa apakah ada fungsi Lambda yang menggunakan ARN lama ini.

Tahap 2: Visualisasikan dan desain

AWS Config mengumpulkan data konfigurasi dan menyimpan data tersebut di bucket Amazon Simple Storage Service (Amazon S3). Anda dapat menggunakan Amazon Athena untuk menanyakan data ini langsung dari bucket S3 Anda. Dengan Athena, Anda dapat menggabungkan data ini di tingkat organisasi, menghasilkan tampilan holistik dari konfigurasi sumber daya Anda di semua akun Anda. Untuk mengatur agregasi data konfigurasi sumber daya, lihat Memvisualisasikan AWS Config data menggunakan Athena dan QuickSight Amazon di blog Operasi dan AWS Manajemen Cloud.

Berikut ini adalah contoh query Athena untuk mengidentifikasi semua fungsi Lambda menggunakan ARN lapisan tertentu:

WITH unnested AS ( SELECT item.awsaccountid AS account_id, item.awsregion AS region, item.configuration AS lambda_configuration, item.resourceid AS resourceid, item.resourcename AS resourcename, item.configuration AS configuration, json_parse(item.configuration) AS lambda_json FROM default.aws_config_configuration_snapshot, UNNEST(configurationitems) as t(item) WHERE "dt" = 'latest' AND item.resourcetype = 'AWS::Lambda::Function' ) SELECT DISTINCT region as Region, resourcename as FunctionName, json_extract_scalar(lambda_json, '$.memorySize') AS memory_size, json_extract_scalar(lambda_json, '$.timeout') AS timeout, json_extract_scalar(lambda_json, '$.version') AS version FROM unnested WHERE lambda_configuration LIKE '%arn:aws:lambda:us-east-1:111122223333:layer:AnyGovernanceLayer:24%'

Berikut adalah hasil dari kueri:

Query results in Athena console.

Dengan AWS Config data yang dikumpulkan di seluruh organisasi, Anda kemudian dapat membuat dasbor menggunakan Amazon QuickSight. Dengan mengimpor hasil Athena Anda ke QuickSight Amazon, Anda dapat memvisualisasikan seberapa baik fungsi Lambda Anda mematuhi aturan versi lapisan. Dasbor ini dapat menyoroti sumber daya yang sesuai dan tidak sesuai, yang membantu Anda menentukan kebijakan penegakan hukum Anda, sebagaimana diuraikan di bagian berikutnya. Gambar berikut adalah contoh dasbor yang melaporkan distribusi versi lapisan yang diterapkan pada fungsi dalam organisasi.

Example Amazon QuickSight dashboard shows distribution of layer versions in Lambda functions.

Tahap 3: Menerapkan dan menegakkan

Anda sekarang dapat secara opsional memasangkan aturan versi lapisan yang Anda buat di fase 1 dengan tindakan remediasi melalui dokumen otomatisasi Systems Manager, yang Anda buat sebagai skrip Python yang ditulis dengan. AWS SDK for Python (Boto3) Skrip memanggil tindakan UpdateFunctionConfigurationAPI untuk setiap fungsi Lambda, memperbarui konfigurasi fungsi dengan lapisan baru ARN. Atau, Anda dapat meminta skrip mengirimkan permintaan tarik ke repositori kode untuk memperbarui lapisan ARN. Dengan cara ini penerapan kode future juga diperbarui dengan ARN lapisan yang benar.