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.
-
Buat runbook di akun anggota.
-
Buat peran IAM di akun anggota.
-
(Opsional) Buat aturan remediasi otomatis di akun admin.
Langkah 1. Buat runbook di akun anggota
-
Masuk ke konsol AWS Systems Manager
dan dapatkan contoh pencarian JSON. -
Buat runbook otomatisasi yang memulihkan temuan. Di tab Dimiliki oleh saya, gunakan salah satu
ASR-
dokumen di bawah tab Dokumen sebagai titik awal. -
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
-
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
-
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.
-
Lihat aturan contoh untuk standar keamanan yang sama di CloudWatch Acara. Standar penamaan untuk aturan adalah
standard_control_*AutoTrigger*
. -
Salin pola acara dari contoh yang akan digunakan.
-
Ubah
GeneratorId
nilai agar sesuai dengan Finding JSON Anda.GeneratorId
-
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
-
Buat Runbook Remediasi.
-
Buat Runbook Kontrol.
-
Integrasikan Setiap Runbook Kontrol dengan Playbook.
-
Buat Peran IAM Remediasi & Integrasikan Runbook Remediasi
-
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`), ]), }); } }
-
securityControlId
adalah ID kontrol untuk remediasi yang Anda tambahkan, seperti yang didefinisikan dalam tampilan kontrol konsolidasi di Security Hub. -
remediationName
adalah nama yang telah 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 menggunakanresourceIdRegex
, 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
, danselector
.selector
Harus menjadi pemilih yang sama yang digunakan dalamgetExtraSteps
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' },
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
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.