

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Membuat Aturan Kebijakan AWS Config Kustom
<a name="evaluate-config_develop-rules_cfn-guard"></a>

Anda dapat membuat aturan Kebijakan AWS Config Kustom dari Konsol Manajemen AWS, AWS CLI, atau AWS Config API.

## Menambahkan aturan Kebijakan AWS Config Kustom
<a name="config-custom-policy-rules-add"></a>

------
#### [ Using the console ]

1. Masuk ke Konsol Manajemen AWS dan buka AWS Config konsol di [https://console.aws.amazon.com/config/rumah](https://console.aws.amazon.com/config/home).

1. Di Konsol Manajemen AWS menu, verifikasi bahwa pemilih Wilayah diatur ke AWS Wilayah yang mendukung AWS Config aturan. Untuk daftar Wilayah yang didukung, lihat [AWS Config Wilayah dan Titik Akhir](https://docs.aws.amazon.com/general/latest/gr/awsconfig.html) di. *Referensi Umum Amazon Web Services* 

1. Di navigasi kiri, pilih **Aturan**. 

1. Pada halaman **Aturan**, pilih **Tambahkan aturan**. 

1. Pada halaman **Tentukan tipe aturan**, pilih **Buat aturan kustom menggunakan Penjaga**.

1. Pada halaman **Konfigurasi aturan**, buat aturan Anda dengan menyelesaikan langkah-langkah berikut:

   1. Untuk **nama Aturan**, ketikkan nama unik untuk aturan tersebut.

   1. Untuk **Deskripsi**, ketikkan deskripsi untuk aturan.

   1. Untuk **versi runtime Guard**, pilih sistem runtime untuk aturan Kebijakan AWS Config Kustom Anda.

   1. Untuk **Konten Aturan**, Anda dapat mengisinya dengan kebijakan Guard Custom untuk aturan Anda. 

   1. Untuk **mode Evaluasi**, pilih kapan dalam proses pembuatan dan manajemen sumber daya Anda AWS Config ingin mengevaluasi sumber daya Anda. Tergantung pada aturan, AWS Config dapat mengevaluasi konfigurasi sumber daya Anda sebelum sumber daya telah disediakan, setelah sumber daya telah ditetapkan, atau keduanya.

      1. Pilih **Aktifkan evaluasi proaktif** untuk memungkinkan Anda menjalankan evaluasi pada pengaturan konfigurasi sumber daya Anda sebelum diterapkan.

         Setelah mengaktifkan evaluasi proaktif, Anda dapat menggunakan [StartResourceEvaluation](https://docs.aws.amazon.com/config/latest/APIReference/API_StartResourceEvaluation.html)API dan [GetResourceEvaluationSummary](https://docs.aws.amazon.com/config/latest/APIReference/API_GetResourceEvaluationSummary.html)API untuk memeriksa apakah sumber daya yang Anda tentukan dalam perintah ini akan ditandai sebagai NON\$1COMPLIANT oleh aturan proaktif di akun Anda di Wilayah Anda.

          Untuk informasi selengkapnya tentang penggunaan perintah ini, lihat [Mengevaluasi Sumber Daya Anda dengan AWS Config Aturan](https://docs.aws.amazon.com/config/latest/developerguide/evaluating-your-resources.html#evaluating-your-resources-proactive). Untuk daftar aturan terkelola yang mendukung evaluasi proaktif, lihat [Daftar Aturan AWS Config Terkelola menurut Mode Evaluasi](https://docs.aws.amazon.com/config/latest/developerguide/managed-rules-by-evaluation-mode.html).

      1. Pilih **Aktifkan evaluasi detektif** untuk mengevaluasi pengaturan konfigurasi sumber daya yang ada.

         Untuk evaluasi detektif, aturan Kebijakan AWS Config Kustom dimulai oleh perubahan **Konfigurasi**. Opsi ini akan dipilih sebelumnya.
         +  **Sumber Daya** — Saat sumber daya yang cocok dengan jenis sumber daya yang ditentukan, atau pengenal tipe plus, dibuat, diubah, atau dihapus.
         +  **Tag** — Ketika sumber daya dengan tag yang ditentukan dibuat, diubah, atau dihapus.
         +  **Semua perubahan** — Ketika sumber daya yang direkam oleh AWS Config dibuat, diubah, atau dihapus.

         AWS Config menjalankan evaluasi saat mendeteksi perubahan pada sumber daya yang cocok dengan cakupan aturan. Anda dapat menggunakan ruang lingkup untuk membatasi sumber daya mana yang memulai evaluasi. Jika tidak, evaluasi dimulai ketika ada perubahan pada sumber daya pasca-penyediaan.

   1. Untuk **Parameter**, Anda dapat menyesuaikan nilai untuk kunci yang disediakan jika aturan Anda menyertakan parameter. Parameter adalah atribut yang harus dipatuhi oleh sumber daya Anda sebelum dianggap sesuai dengan aturan.

1. Pada halaman **Tinjau dan buat**, tinjau semua pilihan Anda sebelum menambahkan aturan ke halaman Anda Akun AWS.

1. Setelah selesai meninjau aturan, pilih **Tambahkan aturan**.

------
#### [ Using the AWS CLI ]

Gunakan perintah [https://docs.aws.amazon.com/cli/latest/reference/configservice/put-config-rule.html](https://docs.aws.amazon.com/cli/latest/reference/configservice/put-config-rule.html).

`Owner`Bidang harus`CUSTOM_POLICY`. Bidang tambahan berikut diperlukan untuk aturan Kebijakan AWS Config Kustom:
+ `Runtime`: Sistem runtime untuk aturan Kebijakan AWS Config Kustom Anda.
+ `PolicyText`: Definisi kebijakan yang berisi logika untuk aturan Kebijakan AWS Config Kustom Anda.
+ `EnableDebugLogDelivery`: Ekspresi Boolean untuk mengaktifkan logging debug untuk aturan Kebijakan AWS Config Kustom Anda. Nilai default-nya adalah `false`.

------
#### [ Using the API Reference ]

Gunakan [PutConfigRule](https://docs.aws.amazon.com/config/latest/APIReference/API_PutConfigRule.html)tindakan.

`Owner`Bidang harus`CUSTOM_POLICY`. Bidang tambahan berikut diperlukan untuk aturan Kebijakan AWS Config Kustom:
+ `Runtime`: Sistem runtime untuk aturan Kebijakan AWS Config Kustom Anda.
+ `PolicyText`: Definisi kebijakan yang berisi logika untuk aturan Kebijakan AWS Config Kustom Anda.
+ `EnableDebugLogDelivery`: Ekspresi Boolean untuk mengaktifkan logging debug untuk aturan Kebijakan AWS Config Kustom Anda. Nilai default-nya adalah `false`.

------

## Menulis konten aturan untuk aturan Kebijakan AWS Config Kustom
<a name="config-custom-policy-rules"></a>

Dengan aturan Kebijakan AWS Config Khusus, Anda dapat menggunakan bahasa khusus domain (DSL) AWS CloudFormation Guard untuk mengevaluasi konfigurasi sumber daya. Topik ini menyediakan pola dan praktik terbaik untuk menulis aturan kebijakan khusus.

Untuk informasi selengkapnya tentang cara menulis aturan dengan Guard, lihat [Menulis aturan Guard](https://docs.aws.amazon.com/cfn-guard/latest/ug/writing-rules.html) di AWS CloudFormation Guard User Guide dan [AWS CloudFormation Guard 2.0 Modes of Operation](https://github.com/aws-cloudformation/cloudformation-guard/tree/main/guard) in the Guard GitHub Repository.

### Struktur aturan dasar
<a name="config-custom-policy-rules-structure"></a>

Gunakan format dasar berikut untuk membuat aturan:

```
# Basic rule format
rule <rule_name> when
    resourceType == "<AWS::Service::Resource>" {
    # Evaluation clauses
}

# Example with filtering
let resources_of_type = Resources.*[ Type == 'AWS::Service::Resource' ]
rule check_resources when %resources_of_type !empty {
    %resources_of_type.configuration.property == expected_value
}
```

### Komponen kunci
<a name="config-custom-policy-rules-components"></a>

konfigurasi  
Berisi isi untuk konfigurasi sumber daya.

SuplementaryConfiguration  
Berisi konten tambahan untuk konfigurasi sumber daya. AWS Config mengembalikan bidang ini untuk jenis sumber daya tertentu untuk melengkapi informasi yang dikembalikan untuk bidang konfigurasi.

resourceType  
AWS jenis sumber daya yang sedang dievaluasi.

resourceId  
ID sumber daya (misalnya,`sg-xxxxxx`).

accountId  
 Akun AWS ID 12 digit yang terkait dengan sumber daya.

### Pola umum
<a name="config-custom-policy-rules-patterns"></a>

------
#### [ Status checks ]

```
let allowed_status = ['ACTIVE', 'RUNNING']
rule check_resource_status when
    resourceType == "AWS::Service::Resource" {
    configuration.status IN %allowed_status
}
```

------
#### [ Required properties ]

```
rule check_required_properties when
    resourceType == "AWS::Service::Resource" {
    configuration.propertyName exists
    configuration.propertyName is_string  # or is_list, is_struct
}
```

------
#### [ Query blocks ]

```
configuration.Properties {
    property1 exists
    property2 is_string
    property3 IN [allowed_value1, allowed_value2]
}
```

------
#### [ Conditional evaluation ]

```
when configuration.feature_enabled == true {
    configuration.feature_settings exists
    configuration.feature_settings is_struct
}
```

------
#### [ Custom messages ]

```
rule check_compliance when
    resourceType == "AWS::Service::Resource" {
    configuration.property == expected_value <<Custom error message explaining the requirement>>
}}
```

------

### Fitur lanjutan
<a name="config-custom-policy-rules-advanced"></a>

------
#### [ Range checks ]

```
rule check_numeric_limits {
    # Inclusive range (lower_limit <= value <= upper_limit)
    configuration.value IN r[minimum_value, maximum_value]  

    # Exclusive range (lower_limit < value < upper_limit)
    configuration.value IN r(exclusive_min, exclusive_max)  

    # Left inclusive, right exclusive (lower_limit <= value < upper_limit)
    configuration.value IN r[minimum_value, exclusive_max)

    # Left exclusive, right inclusive (lower_limit < value <= upper_limit)
    configuration.value IN r(exclusive_min, maximum_value]
}
```

------
#### [ Combining conditions ]

```
# AND conditions (implicit through new lines)
condition_1
condition_2

# OR conditions (explicit)
condition_3 OR
condition_4
```

------
#### [ Chaining rules ]

```
rule check_prerequisites {
    configuration.required_setting exists
}

rule check_details when check_prerequisites {
    configuration.required_setting == expected_value
}
```

------

### Praktik terbaik
<a name="config-custom-policy-rules-best-practices"></a>
+ Gunakan variabel dengan `let` pernyataan untuk meningkatkan keterbacaan.
+ Pemeriksaan terkait grup menggunakan blok aturan bernama.
+ Sertakan komentar deskriptif.
+ Gunakan operator yang sesuai (`exists`,`is_string`,`is_list`).
+ Gunakan pola regex dengan pencocokan case-insensitive.

### Contoh: dynamodb-pitr-enabled
<a name="config-custom-policy-rules-example"></a>

Contoh berikut menunjukkan definisi kebijakan untuk versi aturan Kebijakan AWS Config Kustom dari aturan AWS Config Terkelola[dynamodb-pitr-enabled](dynamodb-pitr-enabled.md). Aturan ini memeriksa apakah tabel Point-in-Time DynamoDB telah mengaktifkan Pemulihan.

```
# Check if DynamoDB tables have Point-in-Time Recovery enabled
let status = ['ACTIVE']

rule tableisactive when
    resourceType == "AWS::DynamoDB::Table" {
    configuration.tableStatus == %status
}

rule checkcompliance when
    resourceType == "AWS::DynamoDB::Table"
    tableisactive {
    let pitr = supplementaryConfiguration.ContinuousBackupsDescription.pointInTimeRecoveryDescription.pointInTimeRecoveryStatus
    %pitr == "ENABLED" <<DynamoDB tables must have Point-in-Time Recovery enabled>>
}
```