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
Anda dapat mengaktifkan Amazon GuardDuty di akun Amazon Web Services (AWS) dengan menggunakan AWS CloudFormation templat. Secara default, jika GuardDuty sudah diaktifkan saat Anda mencoba menggunakan CloudFormation untuk menyalakannya, penerapan tumpukan gagal. Namun, Anda dapat menggunakan kondisi di CloudFormation template Anda untuk memeriksa GuardDuty apakah sudah diaktifkan. CloudFormation mendukung penggunaan kondisi yang membandingkan nilai statis; itu tidak mendukung penggunaan output dari properti sumber daya lain dalam template yang sama. Untuk informasi selengkapnya, lihat Ketentuan dalam CloudFormation dokumentasi.
Dalam pola ini, Anda menggunakan sumber daya CloudFormation khusus yang didukung oleh AWS Lambda fungsi untuk mengaktifkan secara kondisional GuardDuty jika belum diaktifkan. Jika GuardDuty diaktifkan, tumpukan menangkap status dan mencatatnya di bagian output tumpukan. Jika tidak GuardDuty diaktifkan, tumpukan mengaktifkannya.
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 |
|---|---|---|
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 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
CloudFormation Template
AWSTemplateFormatVersion: 2010-09-09 Resources: rLambdaLogGroup: Type: 'AWS::Logs::LogGroup' DeletionPolicy: Delete Properties: RetentionInDays: 7 LogGroupName: /aws/lambda/resource-checker rLambdaCheckerLambdaRole: Type: 'AWS::IAM::Role' Properties: RoleName: !Sub 'resource-checker-lambda-role-${AWS::Region}' AssumeRolePolicyDocument: Version: 2012-10-17 Statement: - Effect: Allow Principal: Service: lambda.amazonaws.com Action: 'sts:AssumeRole' Path: / Policies: - PolicyName: !Sub 'resource-checker-lambda-policy-${AWS::Region}' PolicyDocument: Version: 2012-10-17 Statement: - Sid: CreateLogGroup Effect: Allow Action: - 'logs:CreateLogGroup' - 'logs:CreateLogStream' - 'logs:PutLogEvents' - 'iam:CreateServiceLinkedRole' - 'cloudformation:CreateStack' - 'cloudformation:DeleteStack' - 'cloudformation:Desc*' - 'guardduty:CreateDetector' - 'guardduty:ListDetectors' - 'guardduty:DeleteDetector' Resource: '*' resourceCheckerLambda: Type: 'AWS::Lambda::Function' Properties: Description: Checks for resource type enabled and possibly name to exist FunctionName: resource-checker Handler: index.lambda_handler Role: !GetAtt - rLambdaCheckerLambdaRole - Arn Runtime: python3.13 MemorySize: 128 Timeout: 180 Code: ZipFile: | 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": "A sample 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, {}) CheckResourceExist: Type: 'Custom::LambdaCustomResource' Properties: ServiceToken: !GetAtt - resourceCheckerLambda - Arn Outputs: status: Value: !GetAtt - CheckResourceExist - status
Opsi kode alternatif untuk sumber daya Lambda
CloudFormation Template yang disediakan menggunakan kode inline untuk mereferensikan sumber daya Lambda, untuk referensi dan panduan yang lebih mudah. Atau, Anda dapat menempatkan kode Lambda di bucket Amazon Simple Storage Service (Amazon S3) Simple Storage Service (Amazon S3) dan mereferensikannya di template. CloudFormation Kode sebaris tidak mendukung dependensi paket atau pustaka. Anda dapat mendukung ini dengan menempatkan kode Lambda di bucket Amazon S3 dan mereferensikannya di template. CloudFormation
Ganti baris kode berikut:
Code: ZipFile: |
dengan baris kode berikut:
Code: S3Bucket: <bucket name> S3Key: <python file name> S3ObjectVersion: <version>
S3ObjectVersionProperti dapat dihilangkan jika Anda tidak menggunakan versi di bucket Amazon S3 Anda. Untuk informasi selengkapnya, lihat Menggunakan pembuatan versi di bucket Amazon S3 dalam dokumentasi Amazon S3.