Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Buat aturan AWS Config khusus dengan menggunakan AWS CloudFormation Guard kebijakan
Andrew Lok, Nicole Brown, Kailash Havildar, dan Tanya Howell, Amazon Web Services
Ringkasan
AWS Configaturan membantu Anda mengevaluasi AWS sumber daya dan status konfigurasi targetnya. Ada dua jenis AWS Config aturan: dikelola dan kustom. Anda dapat membuat aturan kustom dengan AWS Lambda fungsi atau dengan AWS CloudFormation Guard
Aturan yang dibuat dengan Guard memberikan kontrol yang lebih terperinci daripada aturan terkelola, dan biasanya lebih mudah dikonfigurasi daripada aturan Lambda yang sepenuhnya disesuaikan. Pendekatan ini memberi insinyur dan arsitek kemampuan untuk membangun aturan tanpa perlu mengetahui Python, NodeJS, atau Java, yang diperlukan untuk menerapkan aturan khusus melalui Lambda.
Pola ini menyediakan templat yang dapat diterapkan, contoh kode, dan pendekatan penerapan untuk membantu Anda mengadopsi aturan khusus dengan Guard. Dengan menggunakan pola ini, administrator dapat menggunakan AWS Config untuk membuat aturan kepatuhan khusus yang memiliki atribut item konfigurasi. Misalnya, pengembang dapat menggunakan kebijakan Guard terhadap item AWS Config konfigurasi untuk terus memantau status penerapan AWS dan AWS non-sumber daya, mendeteksi pelanggaran aturan, dan secara otomatis memulai remediasi.
Tujuan
Setelah membaca pola ini, Anda harus dapat:
Memahami bagaimana kode kebijakan Guard berinteraksi dengan AWS Config layanan.
Terapkan Skenario 1, yang merupakan aturan AWS Config khusus yang menggunakan sintaks Guard untuk memvalidasi kepatuhan untuk volume terenkripsi. Aturan ini memverifikasi bahwa drive sedang digunakan dan memverifikasi bahwa jenis drive adalah gp3.
Terapkan Skenario 2, yang merupakan aturan AWS Config khusus yang menggunakan sintaks Guard untuk memvalidasi kepatuhan Amazon GuardDuty . Aturan ini memverifikasi bahwa GuardDuty perekam mengaktifkan Perlindungan Amazon Simple Storage Service (Amazon S3) dan Perlindungan Amazon Elastic Kubernetes Service (Amazon EKS).
Prasyarat dan batasan
Prasyarat
Aktif Akun AWS
AWS Config, atur di Anda Akun AWS
Batasan
Aturan kustom penjaga hanya dapat menanyakan pasangan kunci-nilai dalam item konfigurasi target catatan JSON
Arsitektur
Anda menerapkan sintaks Guard ke AWS Config aturan sebagai kebijakan kustom. AWS Config menangkap JSON hierarkis dari masing-masing sumber daya yang ditentukan. JSON dari item AWS Config konfigurasi berisi pasangan kunci-nilai. Atribut ini digunakan dalam sintaks Guard sebagai variabel yang ditetapkan ke nilai yang sesuai.
Berikut ini adalah penjelasan dari sintaks Guard. Variabel dari item konfigurasi JSON digunakan dan ditambahkan dengan karakter. %
# declare variable let <variable name> = <'value'> # create rule and assign condition and policy rule <rule name> when <CI json key> == <"CI json value"> { <top level CI json key>.<next level CI json key> == %<variable name> }
Skenario 1: Volume Amazon EBS
Skenario 1 menerapkan aturan AWS Config kustom yang menggunakan sintaks Guard untuk memvalidasi kepatuhan untuk volume terenkripsi. Aturan ini memverifikasi bahwa drive sedang digunakan dan memverifikasi bahwa jenis drive adalah gp3.
Berikut ini adalah contoh item AWS Config konfigurasi untuk skenario 1. Ada tiga pasangan kunci-nilai dalam item konfigurasi ini yang digunakan sebagai variabel dalam kebijakan Guard:volumestatus,volumeencryptionstatus, dan. volumetype Juga, resourceType kunci digunakan sebagai filter dalam kebijakan Penjaga.
{ "version": "1.3", "accountId": "111111111111", "configurationItemCaptureTime": "2023-01-15T19:04:45.402Z", "configurationItemStatus": "ResourceDiscovered", "configurationStateId": "4444444444444", "configurationItemMD5Hash": "", "arn": "arn:aws:ec2:us-west-2:111111111111:volume/vol-222222222222", "resourceType": "AWS::EC2::Volume", "resourceId": "vol-222222222222", "awsRegion": "us-west-2", "availabilityZone": "us-west-2b", "resourceCreationTime": "2023-01-15T19:03:22.247Z", "tags": {}, "relatedEvents": [], "relationships": [ { "resourceType": "AWS::EC2::Instance", "resourceId": "i-33333333333333333", "relationshipName": "Is attached to Instance" } ], "configuration": { "attachments": [ { "attachTime": "2023-01-15T19:03:22.000Z", "device": "/dev/xvda", "instanceId": "i-33333333333333333", "state": "attached", "volumeId": "vol-222222222222", "deleteOnTermination": true, "associatedResource": null, "instanceOwningService": null } ], "availabilityZone": "us-west-2b", "createTime": "2023-01-15T19:03:22.247Z", "encrypted": false, "kmsKeyId": null, "outpostArn": null, "size": 8, "snapshotId": "snap-55555555555555555", "state": "in-use", "volumeId": "vol-222222222222", "iops": 100, "tags": [], "volumeType": "gp2", "fastRestored": null, "multiAttachEnabled": false, "throughput": null, "sseType": null }, "supplementaryConfiguration": {} }
Berikut ini adalah contoh menggunakan sintaks Guard untuk menentukan variabel dan aturan dalam skenario 1. Dalam contoh berikut:
Tiga baris pertama mendefinisikan variabel dengan menggunakan
letperintah. Mereka diberi nama dan nilai yang berasal dari atribut item konfigurasi.Blok
compliancecheckaturan menambahkan dependensi kondisional when yang mencari pasanganresourceTypekunci-nilai yang cocok.AWS::EC2::VolumeJika kecocokan ditemukan, aturan berlanjut melalui atribut JSON lainnya dan mencari kecocokan pada tiga kondisi berikut:state,encrypted, dan.volumeType
let volumestatus = 'available' let volumetype = 'gp3' let volumeencryptionstatus = true rule compliancecheck when resourceType == "AWS::EC2::Volume" { configuration.state == %volumestatus configuration.encrypted == %volumeencryptionstatus configuration.volumeType == %volumetype }
Untuk kebijakan kustom Guard lengkap yang mengimplementasikan aturan kustom ini, lihat awsconfig-guard-cft.yaml atau awsconfig-guard-tf-ec2vol.json
Skenario 2: GuardDuty kepatuhan
Skenario 2 menerapkan aturan AWS Config khusus yang menggunakan sintaks Guard untuk memvalidasi kepatuhan Amazon GuardDuty . Aturan ini memverifikasi bahwa GuardDuty perekam mengaktifkan Perlindungan Amazon S3 dan Perlindungan Amazon EKS. Ini juga memverifikasi bahwa GuardDuty temuan dipublikasikan setiap 15 menit. Skenario ini dapat diterapkan di semua Akun AWS dan Wilayah AWS dalam organisasi (in AWS Organizations).
Berikut ini adalah contoh item AWS Config konfigurasi untuk skenario 2. Ada tiga pasangan kunci-nilai dalam item konfigurasi ini yang digunakan sebagai variabel dalam kebijakan Guard:FindingPublishingFrequency,S3Logs, dan. Kubernetes Juga, resourceType kunci digunakan sebagai filter dalam kebijakan.
{ "version": "1.3", "accountId": "111111111111", "configurationItemCaptureTime": "2023-11-27T13:34:28.888Z", "configurationItemStatus": "OK", "configurationStateId": "7777777777777", "configurationItemMD5Hash": "", "arn": "arn:aws:guardduty:us-west-2:111111111111:detector/66666666666666666666666666666666", "resourceType": "AWS::GuardDuty::Detector", "resourceId": "66666666666666666666666666666666", "resourceName": "66666666666666666666666666666666", "awsRegion": "us-west-2", "availabilityZone": "Regional", "resourceCreationTime": "2020-02-17T02:48:04.511Z", "tags": {}, "relatedEvents": [], "relationships": [], "configuration": { "Enable": true, "FindingPublishingFrequency": "FIFTEEN_MINUTES", "DataSources": { "S3Logs": { "Enable": true }, "Kubernetes": { "AuditLogs": { "Enable": true } } }, "Id": "66666666666666666666666666666666", "Tags": [] }, "supplementaryConfiguration": { "CreatedAt": "2020-02-17T02:48:04.511Z" } }
Berikut ini adalah contoh menggunakan sintaks Guard untuk menentukan variabel dan aturan dalam skenario 2. Dalam contoh berikut:
Tiga baris pertama mendefinisikan variabel dengan menggunakan
letperintah. Mereka diberi nama dan nilai yang berasal dari atribut item konfigurasi.Blok
compliancecheckaturan menambahkan dependensi kondisional when yang mencari pasanganresourceTypekunci-nilai yang cocok.AWS::GuardDuty::DetectorJika kecocokan ditemukan, aturan berlanjut melalui atribut JSON lainnya dan mencari kecocokan pada tiga kondisi berikut:S3Logs.Enable,Kubernetes.AuditLogs.Enable, dan.FindingPublishingFrequency
let s3protection = true let kubernetesprotection = true let publishfrequency = 'FIFTEEN_MINUTES' rule compliancecheck when resourceType == "AWS::GuardDuty::Detector" { configuration.DataSources.S3Logs.Enable == %s3protection configuration.DataSources.Kubernetes.AuditLogs.Enable == %kubernetesprotection configuration.FindingPublishingFrequency == %publishfrequency }
Untuk kebijakan kustom Guard lengkap yang mengimplementasikan aturan kustom ini, lihat awsconfig-guard-cft-gd.yaml
Alat
Layanan AWS
AWS CloudFormationmembantu Anda menyiapkan AWS sumber daya, menyediakannya dengan cepat dan konsisten, dan mengelolanya sepanjang siklus hidupnya di seluruh Akun AWS dan Wilayah.
AWS Configmemberikan tampilan rinci tentang sumber daya di Anda Akun AWS dan bagaimana mereka dikonfigurasi. Ini membantu Anda mengidentifikasi bagaimana sumber daya terkait satu sama lain dan bagaimana konfigurasinya telah berubah dari waktu ke waktu.
Alat lainnya
HashiCorp Terraform
adalah alat infrastruktur sebagai kode (IAc) yang membantu Anda menggunakan kode untuk menyediakan dan mengelola infrastruktur dan sumber daya cloud.
Repositori kode
Kode untuk pola ini tersedia di AWS CloudFormation Guard repositori GitHub AWS Config with
Epik
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
(Opsional) Pilih pasangan kunci-nilai untuk aturan. | Selesaikan langkah-langkah ini jika Anda mendefinisikan kebijakan Penjaga kustom. Jika Anda menggunakan salah satu contoh kebijakan untuk skenario 1 atau 2, lewati langkah-langkah ini.
| Administrator AWS, Insinyur keamanan |
Buat aturan khusus. | Menggunakan pasangan kunci-nilai yang Anda identifikasi sebelumnya atau menggunakan salah satu contoh kebijakan Guard yang disediakan, ikuti petunjuk dalam Membuat Aturan Kebijakan AWS Config Kustom untuk membuat aturan kustom. | Administrator AWS, Insinyur keamanan |
Validasi aturan kustom. | Lakukan salah satu hal berikut untuk memvalidasi aturan Penjaga kustom:
| Administrator AWS, Insinyur keamanan |
Pemecahan Masalah
| Isu | Solusi |
|---|---|
Uji kebijakan Penjaga di luar AWS Config | Pengujian unit dapat dilakukan pada perangkat lokal Anda atau dalam lingkungan pengembangan terintegrasi (IDE), seperti AWS Cloud9 IDE. Untuk melakukan pengujian unit, lakukan hal berikut:
|
Debug aturan AWS Config kustom | Dalam kebijakan Penjaga Anda, ubah |
Sumber daya terkait
AWS dokumentasi
Membuat Aturan Kebijakan AWS Config Kustom (AWS Config dokumentasi)
AWS CloudFormation Guard Aturan penulisan (Dokumentasi penjaga)
AWS posting blog dan lokakarya
Memperkenalkan AWS CloudFormation Guard 2.0
(posting AWS blog)
Sumber daya lainnya
AWS CloudFormation Guard
(GitHub) AWS CloudFormation Guard Dokumentasi CLI
() GitHub