

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
<a name="enable-amazon-guardduty-conditionally-by-using-aws-cloudformation-templates"></a>

*Ram Kandaswamy, Amazon Web Services*

## Ringkasan
<a name="enable-amazon-guardduty-conditionally-by-using-aws-cloudformation-templates-summary"></a>

[AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html), 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](https://docs.aws.amazon.com/guardduty/latest/ug/what-is-guardduty.html), 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 Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)fungsi 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
<a name="enable-amazon-guardduty-conditionally-by-using-aws-cloudformation-templates-prereqs"></a>

**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](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html#getting-started-install-instructions) dan [dikonfigurasi](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)

**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
<a name="enable-amazon-guardduty-conditionally-by-using-aws-cloudformation-templates-architecture"></a>

**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 

![\[Menggunakan CloudFormation tumpukan untuk mengaktifkan GuardDuty akun AWS.\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/3abd7cb7-0937-41fe-8eaa-79aedb182732/images/71624052-eebc-474a-9aa3-8606d87fc51d.png)


1. Anda menyebarkan CloudFormation template untuk membuat CloudFormation tumpukan.

1. Tumpukan menciptakan peran IAM dan fungsi Lambda.

1. Fungsi Lambda mengasumsikan peran IAM.

1. 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](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/what-is-cfnstacksets.html) dalam CloudFormation dokumentasi.

## Alat
<a name="enable-amazon-guardduty-conditionally-by-using-aws-cloudformation-templates-tools"></a>
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) adalah alat sumber terbuka yang membantu Anda berinteraksi Layanan AWS melalui perintah di shell baris perintah Anda.
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)membantu Anda menyiapkan AWS sumber daya, menyediakannya dengan cepat dan konsisten, dan mengelolanya sepanjang siklus hidupnya di seluruh Akun AWS dan Wilayah.
+ [Amazon GuardDuty](https://docs.aws.amazon.com/guardduty/latest/ug/what-is-guardduty.html) 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)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) membantu Anda mengelola akses ke AWS sumber daya dengan aman dengan mengontrol siapa yang diautentikasi dan diberi wewenang untuk menggunakannya.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)adalah 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
<a name="enable-amazon-guardduty-conditionally-by-using-aws-cloudformation-templates-epics"></a>

### Buat CloudFormation template dan gunakan tumpukan
<a name="create-the-cfnshort-template-and-deploy-the-stack"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Simpan kode di Amazon S3. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/enable-amazon-guardduty-conditionally-by-using-aws-cloudformation-templates.html) | AWS DevOps | 
| Buat CloudFormation template. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/enable-amazon-guardduty-conditionally-by-using-aws-cloudformation-templates.html) | AWS DevOps | 
| Buat CloudFormation tumpukan. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/enable-amazon-guardduty-conditionally-by-using-aws-cloudformation-templates.html) | AWS DevOps | 
| Validasi yang GuardDuty diaktifkan untuk file. Akun AWS | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/enable-amazon-guardduty-conditionally-by-using-aws-cloudformation-templates.html) | 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](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/what-is-cfnstacksets.html) dalam CloudFormation dokumentasi. | Administrator cloud, administrator AWS | 

## Sumber daya terkait
<a name="enable-amazon-guardduty-conditionally-by-using-aws-cloudformation-templates-resources"></a>

**Referensi**
+ [AWS CloudFormation dokumentasi](https://docs.aws.amazon.com/cloudformation/index.html)
+ [AWS Lambda referensi jenis sumber daya](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_Lambda.html)
+ [CloudFormation jenis sumber daya: AWS: :IAM: :Peran](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html)
+ [CloudFormation jenis sumber daya: AWS:::GuardDuty: Detektor](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-guardduty-detector.html)
+ [Empat cara untuk mengambil properti AWS layanan apa pun menggunakan AWS CloudFormation](https://aws.amazon.com/blogs/mt/four-ways-to-retrieve-any-aws-service-property-using-aws-cloudformation-part-1/) (posting blog)

**Tutorial dan video**
+ [Sederhanakan Manajemen Infrastruktur Anda Menggunakan AWS CloudFormation](https://www.youtube.com/watch?v=1h-GPXQrLZw) (Tutorial)
+ [Gunakan Amazon GuardDuty dan AWS Security Hub CSPM untuk mengamankan beberapa akun](https://www.youtube.com/watch?v=Rg2ZzAAi1nY) (AWS re:Invent 2020)
+ [Praktik terbaik untuk penulisan AWS CloudFormation](https://www.youtube.com/watch?v=bJHHQM7GGro) (AWS re:Invent 2019)
+ [Deteksi Ancaman di AWS: Pengantar Amazon GuardDuty (re](https://www.youtube.com/watch?v=czsuZXQvD8E)AWS : Inforce 2019)

## Informasi tambahan
<a name="enable-amazon-guardduty-conditionally-by-using-aws-cloudformation-templates-additional"></a>

**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, {})
```

