Menambahkan remediasi baru - Respon Keamanan Otomatis di AWS

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

Menambahkan remediasi baru

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

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.

  2. Buat peran IAM di akun anggota.

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

Langkah 1. Buat runbook di akun anggota

  1. Masuk ke konsol AWS Systems Manager dan dapatkan contoh pencarian JSON.

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

  3. 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

  1. Masuk ke konsol AWS Identity and Access Management.

  2. 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

  3. 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

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 adalahstandard_control_*AutoTrigger*.

  2. Salin pola acara dari contoh yang akan digunakan.

  3. Ubah GeneratorId nilai agar sesuai dengan Finding JSON Anda. GeneratorId

  4. Simpan dan aktifkan aturan.

Ikhtisar alur kerja CDK

Singkatnya, file-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.

  2. Buat Runbook Kontrol.

  3. Integrasikan Setiap Runbook Kontrol dengan Playbook.

  4. Buat Peran IAM Remediasi & Integrasikan Runbook Remediasi

  5. Perbarui Tes Unit

Langkah 1: Buat Runbook Remediasi

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

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

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`),
      ]),
    });
  }
}
  • securityControlIdadalah ID kontrol untuk remediasi yang Anda tambahkan, seperti yang didefinisikan dalam tampilan kontrol konsolidasi di Security Hub.

  • remediationNameadalah nama yang telah Anda pilih untuk runbook remediasi Anda.

  • scopeadalah ruang lingkup sumber daya yang Anda pulihkan, yang menunjukkan apakah itu ada secara global atau di wilayah tertentu.

  • resourceIdRegexadalah 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.

  • resourceIdNameadalah nama yang ingin Anda setel untuk ID sumber daya yang diambil menggunakanresourceIdRegex, ini harus cocok dengan nama parameter ID sumber daya di buku runbook remediasi Anda.

  • updateDescriptionadalah 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 memilikiname,outputType, danselector. selectorHarus 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

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' },

versionAddedBidang 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

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

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

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.