Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Neue Abhilfemaßnahmen hinzufügen
Abhilfemaßnahmen können manuell hinzugefügt werden, indem die entsprechenden Playbook-Dateien aktualisiert werden, oder programmgesteuert, indem die Lösung um CDK-Konstrukte erweitert wird, je nach Ihrem bevorzugten Arbeitsablauf.
Anmerkung
In den folgenden Anweisungen werden die von der Lösung installierten Ressourcen als Ausgangspunkt verwendet. Konventionell enthalten die meisten Lösungsressourcennamen ASR and/or SO0111, um sie leicht auffinden und identifizieren zu können.
Überblick über den manuellen Arbeitsablauf
Automated Security Response auf AWS-Runbooks muss der folgenden Standardbenennung folgen:
ASR- - - <standard>
<version>
<control>
Standard: Die Abkürzung für den Sicherheitsstandard. Dies muss den von ASR unterstützten Standards entsprechen. Es muss „CIS“, „AFSBP“, „PCI“, „NIST“ oder „SC“ sein.
Version: Die Version des Standards. Auch dies muss mit der von ASR unterstützten Version und der Version in den Ergebnisdaten übereinstimmen.
Kontrolle: Die Kontroll-ID des Steuerelements, das repariert werden soll. Dies muss mit den Ergebnisdaten übereinstimmen.
-
Erstellen Sie ein Runbook in dem/den Mitgliedskonto (en).
-
Erstellen Sie eine IAM-Rolle in den Mitgliedskonten.
-
(Optional) Erstellen Sie eine Regel zur automatischen Problembehebung im Administratorkonto.
Schritt 1. Erstellen Sie ein Runbook in dem/den Mitgliedskonto (en)
-
Melden Sie sich bei der AWS Systems Manager Manager-Konsole
an und erhalten Sie ein Beispiel für das gefundene JSON. -
Erstellen Sie ein Automatisierungs-Runbook, das den Befund behebt. Verwenden Sie auf der Registerkarte Mein Eigentum alle
ASR-
Dokumente auf der Registerkarte Dokumente als Ausgangspunkt. -
Die AWS Step Functions im Administratorkonto führen Ihr Runbook aus. Ihr Runbook muss die Behebungsrolle angeben, damit sie beim Aufrufen des Runbooks übergeben wird.
Schritt 2. Erstellen Sie eine IAM-Rolle in den Mitgliedskonten
-
Melden Sie sich bei der AWS Identity and Access Management-Konsole
an. -
Rufen Sie ein Beispiel aus den IAM SO0111-Rollen ab und erstellen Sie eine neue Rolle. Der Rollenname muss mit SO0111-Remediate- - - beginnen.
<standard>
<version>
<control>
Wenn Sie beispielsweise CIS v1.2.0 Control 5.6 hinzufügen, muss die Rolle wie folgt lauten.SO0111-Remediate-CIS-1.2.0-5.6
-
Erstellen Sie anhand des Beispiels eine Rolle mit einem angemessenen Gültigkeitsbereich, die nur die für die Problembehebung erforderlichen API-Aufrufe zulässt.
Zu diesem Zeitpunkt ist Ihre Problembehebung aktiv und kann über die benutzerdefinierte ASR-Aktion in AWS Security Hub automatisiert behoben werden.
Schritt 3: (Optional) Erstellen Sie eine automatische Behebungsregel im Administratorkonto
Automatische (nicht „automatisierte“) Behebung ist die sofortige Ausführung der Behebung, sobald das Ergebnis bei AWS Security Hub eingegangen ist. Wägen Sie die Risiken sorgfältig ab, bevor Sie diese Option verwenden.
-
Eine Beispielregel für denselben Sicherheitsstandard finden Sie unter CloudWatch Ereignisse. Der Benennungsstandard für Regeln lautet
standard_control_*AutoTrigger*
. -
Kopieren Sie das zu verwendende Ereignismuster aus dem Beispiel.
-
Ändern Sie den
GeneratorId
Wert so, dass er mit demGeneratorId
in Ihrem Finding JSON übereinstimmt. -
Speichern und aktivieren Sie die Regel.
Überblick über den CDK-Workflow
Zusammenfassend werden die folgenden Dateien im ASR-Repo geändert oder hinzugefügt. In diesem Beispiel wurde den SC- und AFSBP-Playbooks eine neue Problembehebung für ElastiCache .2 hinzugefügt.
Anmerkung
Alle neuen Behebungen sollten dem SC-Playbook hinzugefügt werden, da es alle in ASR verfügbaren Behebungen konsolidiert. Wenn Sie beabsichtigen, nur einen bestimmten Satz von Playbooks (z. B. AFSBP) bereitzustellen, können Sie entweder: (1) die Behebung nur Ihren beabsichtigten Playbooks hinzufügen oder (2) die Behebung zusätzlich zum SC-Playbook allen Playbooks hinzufügen, für die sie im entsprechenden Security Hub Hub-Standard existiert. Die zweite Option wird aus Gründen der Flexibilität empfohlen.
In diesem Beispiel ist ElastiCache .2 in den folgenden Security Hub Hub-Standards enthalten:
-
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
Da ASR standardmäßig nur Playbooks für AFSBP und NIST.800-53 implementiert, werden wir diese neue Lösung zusätzlich zu SC zu diesen Playbooks hinzufügen.
Modifizieren Sie
-
source/lib/remediation-runbook-stack.ts
-
source/playbooks/AFSBP/lib/[Standardname] _remediations.ts
-
source/playbooks/NIST80053/lib/control_runbooks-construct.ts
-
source/playbooks/NIST80053/lib/[Standardname] _remediations.ts
-
source/playbooks/SC/lib/control_runbooks-construct.ts
-
source/playbooks/SC/lib/sc_Remediations.ts
-
source/test/regex_registry.ts
Addition
-
source/playbooks/SC/ssmdocs/SC_ .2.ts ElastiCache
-
source/playbooks/SC/ssmdocs/descriptions/ElastiCache.2.md
-
source/remediation_runbooks/EnableElastiCacheVersionUpgrades.yaml
Anmerkung
Der für das Runbook gewählte Name kann eine beliebige Zeichenfolge sein, sofern er mit den übrigen vorgenommenen Änderungen übereinstimmt.
-
source/playbooks/NIST80053/ssmdocs/NIST80053_ .2.ts ElastiCache
-
source/playbooks/AFSBP/ssmdocs/AFSBP_ ElastiCache .2.yaml
Schritte der Entwicklung
-
Erstellen Sie das Remediation Runbook.
-
Erstellen Sie die Control Runbooks.
-
Integrieren Sie jedes Control Runbook in ein Playbook.
-
Erstellen Sie die IAM-Rolle für die Problembehebung und integrieren Sie das Wiederherstellungs-Runbook
-
Unit-Tests aktualisieren
Schritt 1: Erstellen Sie das Remediation Runbook
Dies ist das SSM-Dokument, das zur Behebung von Ressourcen verwendet wird. Es muss den AutomationAssumeRole
Parameter enthalten, bei dem es sich um die IAM-Rolle mit den Berechtigungen zur Ausführung der Problembehebung handelt. Sehen Sie sich die vorhandene Datei source/remediation_runbooks/EnableElastiCacheVersionUpgrades.yaml
als Referenz an, wenn Sie neue Reparatur-Runbooks erstellen.
Alle neuen Runbooks sollten dem Verzeichnis hinzugefügt werden. source/remediation_runbooks/
Schritt 2: Erstellen Sie die Control Runbooks
Ein Kontroll-Runbook ist ein Playbook-spezifisches Runbook, das die Ergebnisdaten aus dem angegebenen Standard analysiert und das entsprechende Remediation Runbook ausführt. Da wir den SC-, AFSBP- und NIST8 0053-Playbooks die ElastiCache 2.2-Problembehebung hinzufügen, müssen wir für jedes Playbook ein neues Kontroll-Runbook erstellen. Die folgenden Dateien werden erstellt:
-
source/playbooks/SC/ssmdocs/SC_ ElastiCache .2.ts
-
source/playbooks/NIST80053/ssmdocs/NIST80053_ .2.ts ElastiCache
-
source/playbooks/AFSBP/ssmdocs/AFSBP_ ElastiCache .2.yaml
<PLAYBOOK_NAME><CONTROL.ID>Die Benennung dieser Dateien ist wichtig und muss dem Format _ .ts/yaml folgen
Einige Playbooks in ASR unterstützen IaC-Steuerungs-Runbooks TypeScript, während andere in rohem YAML geschrieben werden müssen. Verweisen Sie als Beispiele auf die vorhandenen Abhilfemaßnahmen im jeweiligen Playbook. In diesem Beispiel werden wir uns mit dem SC-Playbook befassen, das IaC verwendet.
Im SC-Playbook sollte Ihr neues Kontroll-Runbook eine Klasse exportieren, die den Namen Ihres ControlRunbookDocument Behebungs-Runbooks erweitert und diesem entspricht. Schauen Sie sich das folgende Beispiel an:
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
ist die Kontroll-ID für die Korrektur, die Sie hinzufügen, so wie sie in der Ansicht der konsolidierten Kontrollen in Security Hub definiert ist. -
remediationName
ist der Name, den Sie für Ihr Behebungs-Runbook gewählt haben. -
scope
ist der Umfang der Ressource, die Sie korrigieren, und gibt an, ob sie global oder in einer bestimmten Region vorhanden ist. -
resourceIdRegex
ist der reguläre Ausdruck, der verwendet wird, um die Ressourcen-ID zu erfassen, die Sie als Parameter an das Reparatur-Runbook übergeben möchten. Es sollte nur eine Gruppe erfasst werden, alle anderen Gruppen sollten nicht erfasst werden. Wenn Sie den gesamten ARN übergeben möchten, lassen Sie dieses Feld weg. -
resourceIdName
ist der Name, den Sie für die Ressourcen-ID festlegen möchtenresourceIdRegex
, mit der Sie erfasst wurden. Dieser Name sollte mit dem Namen des Ressourcen-ID-Parameters in Ihrem Behebungs-Runbook übereinstimmen. -
updateDescription
ist die Zeichenfolge, die Sie dem Abschnitt „Notizen“ des Ergebnisses in Security Hub zuweisen möchten, sobald die Behebung erfolgreich ist.
Sie müssen auch eine aufgerufene Funktion exportierencreateControlRunbook
, die eine neue Instanz Ihrer Klasse zurückgibt. Für ElastiCache .2 sieht das so aus:
export function createControlRunbook(scope: Construct, id: string, props: PlaybookProps): ControlRunbookDocument { return new EnableElastiCacheVersionUpgrades(scope, id, { ...props, controlId: 'ElastiCache.2' }); }
wo controlId
ist die Kontroll-ID, wie sie im Sicherheitsstandard definiert ist, der dem Playbook zugeordnet ist, unter dem Sie arbeiten.
Wenn das Security Hub-Steuerelement Parameter enthält, die Sie an Ihr Behebungs-Runbook übergeben möchten, können Sie sie übergeben, indem Sie Überschreibungen zu den folgenden Methoden hinzufügen: -getExtraSteps
: definiert Standardwerte für jeden Parameter, der für das Steuerelement in Security Hub implementiert ist.
Anmerkung
Jedem Parameter von Security Hub muss ein Standardwert zugewiesen werden
-
getInputParamsStepOutput
: definiert die Ausgaben für den GetInputParams Schritt des Kontroll-Runbooks -
Jede Ausgabe hat ein
name
outputType
, undselector
. Derselector
sollte derselbe Selektor sein, der bei dergetExtraSteps
Methodenüberschreibung verwendet wurde. -
getRemediationParams
: definiert die Parameter, die an das Behebungs-Runbook übergeben und aus den Ausgaben der Schritte abgerufen werden. GetInputParams
Um ein Beispiel anzuzeigen, navigieren Sie zu der Datei. source/playbooks/SC/ssmdocs/SC_DynamoDB.1.ts
Schritt 3: Integrieren Sie jedes Control Runbook in ein Playbook
Für jedes Kontroll-Runbook, das im vorherigen Schritt erstellt wurde, müssen Sie es jetzt in die Infrastrukturdefinitionen im zugehörigen Playbook integrieren. Gehen Sie für jedes Kontroll-Runbook wie folgt vor.
Wichtig
Wenn Sie das Kontroll-Runbook mit rohem YAML anstelle von Typoskript-IaC erstellt haben, fahren Sie mit dem nächsten Abschnitt fort.
Unter /<playbook_name>/control_runbooks-construct.ts
Importieren Sie Ihre neu erstellte Kontroll-Runbook-Datei wie folgt:
import * as elasticache_2 from '../ssmdocs/SC_ElastiCache.2';
Gehen Sie als Nächstes zum Array für
const controlRunbooksRecord: Record<string, any>
Und fügen Sie einen neuen Eintrag hinzu, der die Kontroll-ID (Playbook-spezifisch) der von Ihnen erstellten createControlRunbook
Methode zuordnet:
'ElastiCache.2': elasticache_2.createControlRunbook,
Fügen Sie die Playbook-spezifische Kontroll-ID wie folgt zur Liste der Korrekturen hinzu:
<playbook_name>\_remediations.ts
{ control: 'ElastiCache.2', versionAdded: '2.3.0' },
Das versionAdded
Feld sollte die neueste Version der Lösung sein. Wenn das Hinzufügen der Korrektur gegen die Größenbeschränkung der Vorlage verstößt, erhöhen Sie den. versionAdded
Sie können die Anzahl der Behebungen, die in jedem Playbook-Mitgliedsstapel enthalten sind, anpassen. solution_env.sh
Schritt 4: Erstellen Sie die IAM-Rolle für die Problembehebung und integrieren Sie das Runbook
Jede Problembehebung hat ihre eigene IAM-Rolle mit benutzerdefinierten Berechtigungen, die zur Ausführung des Wiederherstellungs-Runbooks erforderlich sind. Darüber hinaus muss die RunbookFactory.createRemediationRunbook
Methode aufgerufen werden, um das in Schritt 1 erstellte Behebungs-Runbook zu den Vorlagen der Lösung hinzuzufügen. CloudFormation
In der remediation-runook-stack.ts
hat jede Korrektur ihren eigenen Codeblock in der Klasse. RemediationRunbookStack
Der folgende Codeblock zeigt die Erstellung einer neuen IAM-Rolle und die Standardisierungs-Runbook-Integration für die 2.2-Behebung: 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, }); }
Schritt 5: Unit-Tests aktualisieren
Wir empfehlen, die Komponententests zu aktualisieren und auszuführen, nachdem eine neue Problembehebung hinzugefügt wurde.
Zunächst müssen Sie der source/test/regex_registry.ts
Datei alle neuen regulären Ausdrücke (die noch nicht hinzugefügt wurden) hinzufügen. Diese Datei erzwingt Tests für jeden neuen regulären Ausdruck, der in den Runbooks der Lösung enthalten ist. Sehen Sie sich die addElastiCacheClusterTestCases
Funktion als Beispiel an, mit der reguläre Ausdrücke getestet werden, die bei ElastiCache Problembehebungen verwendet werden.
Schließlich müssen Sie die Snapshots für jeden Stapel aktualisieren. Snapshots sind versionsgesteuerte CloudFormation Vorlagendefinitionen, die verwendet werden, um Änderungen an der ASR-Infrastruktur nachzuverfolgen. Sie können diese Snapshot-Dateien aktualisieren, indem Sie den folgenden Befehl im Verzeichnis ausführen: deployment
./run-unit-tests.sh update
Jetzt sind Sie bereit, Ihre neue Problembehebung einzusetzen! Im Abschnitt Build and Deploy weiter unten finden Sie Anweisungen zum Erstellen und Bereitstellen der Lösung mit Ihren neuen Änderungen.