

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

# Menambahkan remediasi baru
<a name="adding-new-remediations"></a>

Remediasi dapat ditambahkan secara manual dengan memperbarui file buku pedoman yang sesuai, atau secara terprogram dengan memperluas solusi melalui konstruksi CDK, tergantung pada alur kerja pilihan Anda.

**catatan**  
Instruksi yang mengikuti sumber daya leverage yang dipasang oleh solusi sebagai titik awal. Menurut konvensi, sebagian besar nama sumber daya solusi berisi **ASR and/or ** **SO0111** untuk membuatnya mudah untuk menemukan dan mengidentifikasi mereka.

## Ikhtisar alur kerja manual
<a name="remediation-overview"></a>

Respons Keamanan Otomatis pada runbook AWS harus mengikuti penamaan standar berikut:

ASR- {{<standard>}} - - {{<version>}} {{<control>}} 

 **Standar**: Singkatan untuk standar keamanan. Ini harus sesuai dengan standar yang didukung oleh ASR. Itu harus salah satu dari “CIS”, “AFSBP”, “PCI”, “NIST”, atau “SC”.

 **Versi**: Versi standar. Sekali lagi, ini harus cocok dengan versi yang didukung oleh ASR dan versi dalam data temuan.

 **Kontrol**: ID kontrol kontrol yang akan diperbaiki. Ini harus sesuai dengan data temuan.

1. Buat runbook di akun anggota.

1. Buat peran IAM di akun anggota.

1. (Opsional) Buat aturan remediasi otomatis di akun admin.

### Langkah 1. Buat runbook di akun anggota
<a name="step-1-create-a-runbook-in-the-member-accounts"></a>

1. Masuk ke [konsol AWS Systems Manager](https://console.aws.amazon.com/systems-manager/home) dan dapatkan contoh pencarian JSON.

1. Buat runbook otomatisasi yang memulihkan temuan. Di tab **Dimiliki oleh saya**, gunakan salah satu `ASR-` dokumen di bawah tab **Dokumen** sebagai titik awal.

1. AWS Step Functions di akun admin akan menjalankan runbook Anda. Runbook Anda harus menentukan peran remediasi agar dapat diteruskan saat memanggil runbook.

### Langkah 2. Buat peran IAM di akun anggota
<a name="step-2-create-iam-role-in-the-member-accounts"></a>

1. Masuk ke [konsol AWS Identity and Access Management](https://console.aws.amazon.com/iam/home).

1. Dapatkan contoh dari peran IAM **SO0111** dan buat peran baru. Nama peran harus dimulai dengan SO0111-remediate- - -. {{<standard>}} {{<version>}} {{<control>}} Misalnya, jika menambahkan CIS v1.2.0 kontrol 5.6 peran harus. `SO0111-Remediate-CIS-1.2.0-5.6`

1. Dengan menggunakan contoh, buat peran dengan cakupan yang benar yang hanya memungkinkan panggilan API yang diperlukan untuk melakukan remediasi.

Pada titik ini, remediasi Anda aktif dan tersedia untuk remediasi otomatis dari Tindakan Kustom ASR di AWS Security Hub.

### Langkah 3: (Opsional) Buat aturan remediasi otomatis di akun admin
<a name="step-3-create-an-automatio-remediation-rule-in-the-admin-account"></a>

Remediasi otomatis (bukan “otomatis”) adalah eksekusi langsung dari remediasi segera setelah temuan diterima oleh AWS Security Hub. Pertimbangkan risikonya dengan cermat sebelum menggunakan opsi ini.

1. Lihat aturan contoh untuk standar keamanan yang sama di CloudWatch Acara. Standar penamaan untuk aturan adalah`standard_control_*AutoTrigger*`.

1. Salin pola acara dari contoh yang akan digunakan.

1. Ubah `GeneratorId` nilai agar sesuai dengan Finding JSON Anda. `GeneratorId`

1. Simpan dan aktifkan aturan.

## Ikhtisar alur kerja CDK
<a name="cdk-remediation-overview"></a>

Singkatnya, file berikut dalam repo ASR akan dimodifikasi atau ditambahkan. Dalam contoh ini, remediasi baru untuk ElastiCache .2 ditambahkan ke pedoman SC dan AFSBP.

**catatan**  
Semua remediasi baru harus ditambahkan ke buku pedoman SC, karena menggabungkan semua remediasi yang tersedia di ASR. Jika Anda bermaksud untuk menerapkan hanya satu set buku pedoman tertentu (misalnya, AFSBP), maka Anda dapat: (1) menambahkan remediasi **hanya** ke buku pedoman yang Anda inginkan, atau (2) menambahkan remediasi ke semua buku pedoman yang ada di Standar Security Hub terkait, selain buku pedoman SC. Opsi kedua direkomendasikan untuk fleksibilitas.

Dalam contoh ini, ElastiCache .2 disertakan dalam Standar Security Hub berikut:
+ AFSBP
+ NIST.800-53.R5 SI-2
+ NIST.800-53.R5 SI-2 (2)
+ NIST.800-53.R5 SI-2 (4)
+ NIST.800-53.R5 SI-2 (5)
+ PCI DSS v4.0.1/6.3.3

Karena, secara default, ASR hanya mengimplementasikan buku pedoman untuk AFSBP dan NIST.800-53, kami akan menambahkan remediasi baru ini ke buku pedoman tersebut selain SC.

 **Memodifikasi** 
+ source/lib/remediation-runbook-stack.ts
+ source/playbooks/AFSBP/lib/[nama standar] \_remediations.ts
+ source/playbooks/NIST80053/lib/control\_runbooks-construct.ts
+ source/playbooks/NIST80053/lib/[nama standar] \_remediations.ts
+ source/playbooks/SC/lib/control\_runbooks-construct.ts
+ source/playbooks/SC/lib/sc\_remediations.ts
+ source/test/regex\_registry.ts

 **Menambahkan** 
+ source/playbooks/SC/ssmdocs/SC\_ ElastiCache .2.ts
+ source/playbooks/SC/ssmdocs/descriptions/ElastiCache.2.md
+ source/remediation\_runbooks/EnableElastiCacheVersionUpgrades.yaml

**catatan**  
Nama yang dipilih untuk runbook dapat berupa string apa saja, asalkan konsisten dengan sisa perubahan yang dibuat.
+ source/playbooks/NIST80053/ssmdocs/NIST80053\_ .2.ts ElastiCache
+ source/playbooks/AFSBP/ssmdocs/AFSBP\_ ElastiCache .2.yaml

 **Langkah-langkah pengembangan** 

1. Buat Runbook Remediasi.

1. Buat Runbook Kontrol.

1. Integrasikan Setiap Runbook Kontrol dengan Playbook.

1. Buat Peran IAM Remediasi & Mengintegrasikan Runbook Remediasi

1. Perbarui Tes Unit

### Langkah 1: Buat Runbook Remediasi
<a name="step-1-create-the-remediation-runbook"></a>

Ini adalah dokumen SSM yang digunakan untuk memulihkan sumber daya. Ini harus menyertakan `AutomationAssumeRole` parameter, yang merupakan peran IAM dengan izin untuk menjalankan remediasi. Lihat file yang ada `source/remediation_runbooks/EnableElastiCacheVersionUpgrades.yaml` sebagai referensi saat membuat runbook remediasi baru.

Semua runbook baru harus ditambahkan ke `source/remediation_runbooks/` direktori.

### Langkah 2: Buat Runbook Kontrol
<a name="step-2-create-the-control-runbook"></a>

Runbook kontrol adalah runbook khusus playbook yang mem-parsing data temuan dari standar yang diberikan dan mengeksekusi Runbook Remediation yang sesuai. Karena kami menambahkan remediasi ElastiCache .2 ke pedoman SC, AFSBP, dan NIST8 0053, kami harus membuat runbook kontrol baru untuk masing-masing. File-file berikut dibuat:
+ source/playbooks/SC/ssmdocs/SC\_ ElastiCache .2.ts
+ source/playbooks/NIST80053/ssmdocs/NIST80053\_ .2.ts ElastiCache
+ source/playbooks/AFSBP/ssmdocs/AFSBP\_ ElastiCache .2.yaml

**Example**  
Penamaan file-file ini penting dan harus mengikuti format <PLAYBOOK\_NAME>\_ <CONTROL.ID>.ts/yaml

Beberapa buku pedoman di ASR mendukung runbook kontrol IAC di TypeScript, sementara yang lain harus ditulis dalam YAMG mentah. Referensikan remediasi yang ada di buku pedoman masing-masing sebagai contoh. Dalam contoh ini, kita akan membahas pedoman SC, yang menggunakan IAc.

Di buku pedoman SC, runbook kontrol baru Anda harus mengekspor kelas yang diperluas ControlRunbookDocument dan cocok dengan nama runbook remediasi Anda. Lihatlah contoh di bawah ini:

```
export class EnableElastiCacheVersionUpgrades extends ControlRunbookDocument {
  constructor(scope: Construct, id: string, props: ControlRunbookProps) {
    super(scope, id, {
      ...props,
      securityControlId: 'ElastiCache.2',
      remediationName: 'EnableElastiCacheVersionUpgrades',
      scope: RemediationScope.REGIONAL,
      resourceIdRegex: <Regex>,
      resourceIdName: 'ClusterId',
      updateDescription: new StringFormat('Automatic minor version upgrades enabled for cluster %s.', [
        StringVariable.of(`ParseInput.ClusterId`),
      ]),
    });
  }
}
```
+  `securityControlId`adalah ID kontrol untuk remediasi yang Anda tambahkan, seperti yang didefinisikan dalam [tampilan kontrol konsolidasi di Security Hub](https://docs.aws.amazon.com/securityhub/latest/userguide/asff-changes-consolidation.html#securityhub-findings-format-changes-ids-titles).
+  `remediationName`adalah nama yang Anda pilih untuk runbook remediasi Anda.
+  `scope`adalah ruang lingkup sumber daya yang Anda pulihkan, yang menunjukkan apakah itu ada secara global atau di wilayah tertentu.
+  `resourceIdRegex`adalah regex yang digunakan untuk menangkap ID sumber daya yang ingin Anda teruskan ke runbook remediasi sebagai parameter. Hanya satu kelompok yang harus ditangkap, semua kelompok lain harus tidak menangkap. Jika Anda ingin melewati seluruh ARN, hilangkan bidang ini.
+  `resourceIdName`adalah nama yang ingin Anda setel untuk ID sumber daya yang diambil menggunakan`resourceIdRegex`, ini harus cocok dengan nama parameter ID sumber daya di buku runbook remediasi Anda.
+  `updateDescription`adalah string yang ingin Anda tetapkan ke bagian “catatan” dari temuan di Security Hub setelah remediasi berhasil.

Anda juga harus mengekspor fungsi `createControlRunbook` yang disebut yang mengembalikan instance baru kelas Anda. Untuk ElastiCache .2, ini terlihat seperti:

```
export function createControlRunbook(scope: Construct, id: string, props: PlaybookProps): ControlRunbookDocument {
  return new EnableElastiCacheVersionUpgrades(scope, id, { ...props, controlId: 'ElastiCache.2' });
}
```

di `controlId` mana ID kontrol sebagaimana didefinisikan dalam Standar Keamanan yang terkait dengan buku pedoman tempat Anda beroperasi.

Jika kontrol Security Hub memiliki parameter yang ingin diteruskan ke runbook remediasi, Anda dapat meneruskannya dengan menambahkan penggantian ke metode berikut: -`getExtraSteps`: mendefinisikan nilai default untuk setiap parameter yang diterapkan untuk kontrol di Security Hub

**catatan**  
Setiap parameter dari Security Hub harus diberi nilai default
+  `getInputParamsStepOutput`: mendefinisikan output untuk GetInputParams langkah runbook kontrol
+ Setiap output memiliki`name`,`outputType`, dan`selector`. `selector`Harus menjadi pemilih yang sama yang digunakan dalam `getExtraSteps` metode override.
+  `getRemediationParams`: mendefinisikan parameter yang diteruskan ke runbook remediasi, diambil dari output langkah. GetInputParams 

Untuk melihat contoh, navigasikan ke `source/playbooks/SC/ssmdocs/SC_DynamoDB.1.ts` file.

### Langkah 3: Integrasikan Setiap Runbook Kontrol dengan Playbook
<a name="step-3-integrate-each-control-runbook-with-a-playbook"></a>

Untuk setiap runbook kontrol yang dibuat pada langkah sebelumnya, Anda sekarang harus mengintegrasikannya dengan definisi infrastruktur di buku pedoman terkait. Ikuti langkah-langkah di bawah ini untuk setiap runbook kontrol.

**penting**  
Jika Anda membuat runbook kontrol menggunakan YAMG mentah alih-alih TypeScript IAC, lewati ke bagian berikutnya.

Di `/<playbook_name>/control_runbooks-construct.ts` Impor file runbook kontrol yang baru dibuat seperti:

```
import * as elasticache_2 from '../ssmdocs/SC_ElastiCache.2';
```

Selanjutnya, pergi ke array untuk

```
const controlRunbooksRecord: Record<string, any>
```

Dan tambahkan entri baru yang memetakan ID kontrol (khusus playbook) ke `createControlRunbook` metode yang Anda buat:

```
'ElastiCache.2': elasticache_2.createControlRunbook,
```

Tambahkan ID kontrol khusus playbook ke daftar remediasi seperti di bawah ini: ` <playbook_name>\_remediations.ts`

```
{ control: 'ElastiCache.2', versionAdded: '2.3.0' },
```

`versionAdded`Bidang harus menjadi versi terbaru dari solusi. Jika menambahkan remediasi melanggar batas ukuran template, tingkatkan. `versionAdded` Anda dapat menyesuaikan jumlah remediasi yang disertakan dalam setiap tumpukan anggota playbook. `solution_env.sh`

### Langkah 4: Buat Peran IAM Remediasi & Integrasikan Runbook Remediasi
<a name="step-4-create-the-remediation-iam-role-integrate-remediation-runbook"></a>

Setiap remediasi memiliki peran IAM sendiri dengan izin khusus yang diperlukan untuk menjalankan runbook remediasi. Selain itu, `RunbookFactory.createRemediationRunbook` metode ini perlu dipanggil untuk menambahkan runbook remediasi yang Anda buat di Langkah 1 ke template solusi. CloudFormation 

Dalam`remediation-runook-stack.ts`, setiap remediasi memiliki blok kode sendiri di `RemediationRunbookStack` kelas. Blok kode berikut menunjukkan pembuatan peran IAM baru dan integrasi runbook remediasi untuk remediasi .2: ElastiCache

```
    //-----------------------
    // EnableElastiCacheVersionUpgrades
    //
    {
      const remediationName = 'EnableElastiCacheVersionUpgrades'; // should match the name of your remediation runbook
      const inlinePolicy = new Policy(props.roleStack, `ASR-Remediation-Policy-${remediationName}`);

      const remediationPolicy = new PolicyStatement();
      remediationPolicy.addActions('elasticache:ModifyCacheCluster');
      remediationPolicy.effect = Effect.ALLOW;
      remediationPolicy.addResources(`arn:${this.partition}:elasticache:*:${this.account}:cluster:*`);
      inlinePolicy.addStatements(remediationPolicy);

      new SsmRole(props.roleStack, 'RemediationRole ' + remediationName, { // creates the remediation IAM role
        solutionId: props.solutionId,
        ssmDocName: remediationName,
        remediationPolicy: inlinePolicy,
        remediationRoleName: `${remediationRoleNameBase}${remediationName}`,
      });

      RunbookFactory.createRemediationRunbook(this, 'ASR ' + remediationName, { // adds the remediation runbook to the solution's cloudformation templates
        ssmDocName: remediationName,
        ssmDocPath: ssmdocs,
        ssmDocFileName: `${remediationName}.yaml`,
        scriptPath: `${ssmdocs}/scripts`,
        solutionVersion: props.solutionVersion,
        solutionDistBucket: props.solutionDistBucket,
        solutionId: props.solutionId,
        namespace: namespace,
      });
    }
```

### Langkah 5: Perbarui Tes Unit
<a name="step-5-update-unit-tests"></a>

Kami merekomendasikan memperbarui dan menjalankan pengujian unit setelah menambahkan remediasi baru.

Pertama, Anda harus menambahkan ekspresi reguler baru (yang belum ditambahkan) ke dalam `source/test/regex_registry.ts` file. File ini memberlakukan pengujian untuk setiap ekspresi reguler baru yang disertakan dalam runbook solusi. Lihatlah `addElastiCacheClusterTestCases` fungsi sebagai contoh, yang digunakan untuk menguji ekspresi reguler yang digunakan dalam ElastiCache remediasi.

Terakhir, Anda harus memperbarui snapshot untuk setiap tumpukan. Snapshot adalah definisi CloudFormation template yang dikontrol versi yang digunakan untuk melacak perubahan yang dibuat pada infrastruktur ASR. Anda dapat memperbarui file snapshot ini dengan menjalankan perintah berikut dari `deployment` direktori:

```
./run-unit-tests.sh update
```

Sekarang Anda siap untuk menyebarkan remediasi baru Anda\! Arahkan ke bagian **Build and Deploy** di bawah ini untuk mengetahui petunjuk tentang membangun dan menerapkan solusi dengan perubahan baru Anda.