Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Aktifkan Amazon GuardDuty secara kondisional dengan menggunakan templat AWS CloudFormation
Ram Kandaswamy, Amazon Web Services
Ringkasan
AWS CloudFormation, alat infrastruktur sebagai kode (IAc), membantu Anda mengelola AWS sumber daya melalui penerapan berbasis template. CloudFormation Biasanya digunakan untuk mengelola AWS sumber daya. Menggunakannya untuk mengaktifkan Layanan AWS, seperti Amazon GuardDuty, dapat menghadirkan tantangan unik. GuardDuty adalah layanan deteksi ancaman yang terus memantau aktivitas berbahaya dan perilaku tidak sah Anda Akun AWS . Tidak seperti sumber daya tipikal yang dapat dibuat beberapa kali, GuardDuty adalah layanan yang perlu diaktifkan sekali per akun dan Wilayah AWS. CloudFormation Kondisi tradisional hanya mendukung perbandingan nilai statis, yang membuatnya sulit untuk memeriksa keadaan layanan saat ini seperti. GuardDuty Jika Anda mencoba mengaktifkan GuardDuty melalui CloudFormation akun yang sudah aktif, penerapan tumpukan gagal. Ini dapat menciptakan tantangan operasional bagi DevOps tim yang mengelola lingkungan multi-akun.
Pola ini memperkenalkan solusi untuk tantangan ini. Ini menggunakan sumber daya CloudFormation khusus yang didukung oleh AWS Lambdafungsi untuk melakukan pemeriksaan status dinamis. Logika kondisional GuardDuty hanya memungkinkan jika belum diaktifkan. Ini menggunakan output tumpukan untuk merekam GuardDuty status untuk referensi future.
Dengan mengikuti pola ini, Anda dapat mengotomatiskan GuardDuty penerapan di seluruh AWS infrastruktur sambil mempertahankan operasi tumpukan yang bersih dan dapat diprediksi CloudFormation . Pendekatan ini sangat berharga bagi organisasi yang:
Mengelola beberapa Akun AWS melalui IAc
Menerapkan layanan keamanan dalam skala besar
Membutuhkan penyebaran infrastruktur idempoten
Mengotomatiskan penyebaran layanan keamanan
Prasyarat dan batasan
Prasyarat
Aktif Akun AWS
Peran AWS Identity and Access Management (IAM) yang memiliki izin untuk membuat, memperbarui, dan menghapus tumpukan CloudFormation
AWS Command Line Interface (AWS CLI), diinstal dan dikonfigurasi
Batasan
Jika GuardDuty telah dinonaktifkan secara manual untuk Akun AWS atau Wilayah AWS, pola ini tidak diaktifkan GuardDuty untuk akun target atau Wilayah tersebut.
Arsitektur
Tumpukan teknologi target
Pola ini digunakan CloudFormation untuk infrastruktur sebagai kode (IAc). Anda menggunakan sumber daya CloudFormation khusus yang didukung oleh fungsi Lambda untuk mencapai kemampuan pemberdayaan layanan dinamis.
Arsitektur target
Diagram arsitektur tingkat tinggi berikut menunjukkan proses pengaktifan GuardDuty dengan menggunakan templat: CloudFormation

Anda menyebarkan CloudFormation template untuk membuat CloudFormation tumpukan.
Tumpukan menciptakan peran IAM dan fungsi Lambda.
Fungsi Lambda mengasumsikan peran IAM.
Jika belum GuardDuty diaktifkan pada target Akun AWS, fungsi Lambda mengaktifkannya.
Otomatisasi dan skala
Anda dapat menggunakan AWS CloudFormation StackSet fitur ini untuk memperluas solusi ini ke beberapa Akun AWS dan Wilayah AWS. Untuk informasi selengkapnya, lihat Bekerja dengan AWS CloudFormation StackSets dalam CloudFormation dokumentasi.
Alat
AWS Command Line Interface (AWS CLI) adalah alat sumber terbuka yang membantu Anda berinteraksi Layanan AWS melalui perintah di shell baris perintah Anda.
AWS CloudFormationmembantu Anda menyiapkan AWS sumber daya, menyediakannya dengan cepat dan konsisten, dan mengelolanya sepanjang siklus hidupnya di seluruh Akun AWS dan Wilayah.
Amazon GuardDuty adalah layanan pemantauan keamanan berkelanjutan yang menganalisis dan memproses log untuk mengidentifikasi aktivitas tak terduga dan berpotensi tidak sah di lingkungan Anda AWS .
AWS Identity and Access Management (IAM) membantu Anda mengelola akses ke AWS sumber daya dengan aman dengan mengontrol siapa yang diautentikasi dan diberi wewenang untuk menggunakannya.
AWS Lambdaadalah layanan komputasi yang membantu Anda menjalankan kode tanpa perlu menyediakan atau mengelola server. Ini menjalankan kode Anda hanya bila diperlukan dan skala secara otomatis, jadi Anda hanya membayar untuk waktu komputasi yang Anda gunakan.
Epik
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Simpan kode di Amazon S3. |
| AWS DevOps |
Buat CloudFormation template. |
| AWS DevOps |
Buat CloudFormation tumpukan. |
| AWS DevOps |
Validasi yang GuardDuty diaktifkan untuk file. Akun AWS |
| Administrator cloud, administrator AWS |
Konfigurasikan akun atau Wilayah tambahan. | Sesuai kebutuhan untuk kasus penggunaan Anda, gunakan CloudFormation StackSet fitur ini untuk memperluas solusi ini ke beberapa Akun AWS dan Wilayah AWS. Untuk informasi selengkapnya, lihat Bekerja dengan AWS CloudFormation StackSets dalam CloudFormation dokumentasi. | Administrator cloud, administrator AWS |
Sumber daya terkait
Referensi
Tutorial dan video
Sederhanakan Manajemen Infrastruktur Anda Menggunakan AWS CloudFormation
(Tutorial) Gunakan Amazon GuardDuty dan AWS Security Hub CSPM untuk mengamankan beberapa akun
(AWS re:Invent 2020) Praktik terbaik untuk penulisan AWS CloudFormation
(AWS re:Invent 2019) Deteksi Ancaman di AWS: Pengantar Amazon GuardDuty (re
AWS : Inforce 2019)
Informasi tambahan
Kode Python
import boto3 import os import json from botocore.exceptions import ClientError import cfnresponse guardduty=boto3.client('guardduty') cfn=boto3.client('cloudformation') def lambda_handler(event, context): print('Event: ', event) if 'RequestType' in event: if event['RequestType'] in ["Create","Update"]: enabled=False try: response=guardduty.list_detectors() if "DetectorIds" in response and len(response["DetectorIds"])>0: enabled="AlreadyEnabled" elif "DetectorIds" in response and len(response["DetectorIds"])==0: cfn_response=cfn.create_stack( StackName='guardduty-cfn-stack', TemplateBody='{ "AWSTemplateFormatVersion": "2010-09-09", "Description": "Guard duty creation template", "Resources": { "IRWorkshopGuardDutyDetector": { "Type": "AWS::GuardDuty::Detector", "Properties": { "Enable": true } } } }' ) enabled="True" except Exception as e: print("Exception: ",e) responseData = {} responseData['status'] = enabled cfnresponse.send(event, context, cfnresponse.SUCCESS, responseData, "CustomResourcePhysicalID" ) elif event['RequestType'] == "Delete": cfn_response=cfn.delete_stack( StackName='guardduty-cfn-stack') cfnresponse.send(event, context, cfnresponse.SUCCESS, {})