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 pro aktif, Anda juga AWS Config dapat mendeteksi penerapan sumber daya dan konfigurasi secara reaktif yang tidak sesuai dengan kebijakan tata kelola Anda. Ini penting karena kebijakan tata kelola berkembang seiring organisasi Anda mempelajari 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, fungsi tersebut ditandai sebagai sumber daya yang tidak sesuai.
Anda dapat secara opsional AWS Config mengonfigurasi untuk memperbaiki sumber daya secara otomatis dengan menentukan tindakan remediasi menggunakan dokumen AWS Systems Manager otomatisasi. Misalnya, Anda dapat menulis dokumen otomatisasi dalam 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 detektif dan kontrol korektif, mengotomatiskan manajemen kepatuhan.
Mari kita uraikan proses ini menjadi tiga fase implementasi penting:
Tahap 1: Identifikasi sumber daya akses
Mulailah dengan mengaktifkan AWS Config di seluruh akun Anda dan mengonfigurasinya untuk merekam fungsi AWS Lambda. Hal 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 disetel 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 disediakan adalah
desiredlayer. -
Kondisi: Klausul ini menentukan kondisi di mana aturan harus diperiksa. Dalam contoh yang diberikan, kondisinya adalah
configuration.layers !empty. Ini berarti sumber daya harus dievaluasi hanya ketikalayersproperti dalam konfigurasi tidak kosong. -
Pernyataan: Setelah
whenklausa, pernyataan menentukan apa yang diperiksa aturan. Pernyataansome configuration.layers[*].arn != CONFIG_RULE_PARAMETERS.OldLayerArnmemeriksa apakah salah satu ARN lapisan Lambda tidak cocok dengan nilainya.OldLayerArnJika 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 dalamCONFIG_RULE_PARAMETERS. Hal ini memungkinkan pengguna untuk memberikan nilai ARN tertentu yang mereka anggap lama atau usang, 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
Berikut ini adalah contoh kueri Athena untuk mengidentifikasi semua fungsi Lambda menggunakan lapisan tertentu ARN:
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:
Dengan AWS Config data yang dikumpulkan di seluruh organisasi, Anda kemudian dapat membuat dasbor menggunakan Amazon Quick
Fase 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 Manajer Sistem, yang Anda buat sebagai skrip Python yang ditulis dengan AWS SDK for Python (Boto3). Skrip memanggil tindakan UpdateFunctionConfiguration API untuk setiap fungsi Lambda, memperbarui konfigurasi fungsi dengan layer baru ARN. Atau, Anda dapat meminta skrip mengirimkan permintaan tarik ke repositori kode untuk memperbarui lapisan ARN. Dengan cara ini penerapan kode masa depan juga diperbarui dengan lapisan ARN yang benar.