Wählen Sie Ihre Cookie-Einstellungen aus

Wir verwenden essentielle Cookies und ähnliche Tools, die für die Bereitstellung unserer Website und Services erforderlich sind. Wir verwenden Performance-Cookies, um anonyme Statistiken zu sammeln, damit wir verstehen können, wie Kunden unsere Website nutzen, und Verbesserungen vornehmen können. Essentielle Cookies können nicht deaktiviert werden, aber Sie können auf „Anpassen“ oder „Ablehnen“ klicken, um Performance-Cookies abzulehnen.

Wenn Sie damit einverstanden sind, verwenden AWS und zugelassene Drittanbieter auch Cookies, um nützliche Features der Website bereitzustellen, Ihre Präferenzen zu speichern und relevante Inhalte, einschließlich relevanter Werbung, anzuzeigen. Um alle nicht notwendigen Cookies zu akzeptieren oder abzulehnen, klicken Sie auf „Akzeptieren“ oder „Ablehnen“. Um detailliertere Entscheidungen zu treffen, klicken Sie auf „Anpassen“.

Erstellen Sie AWS Config benutzerdefinierte Regeln mithilfe von AWS CloudFormation Guard Richtlinien - AWS Prescriptive Guidance

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.

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.

Erstellen Sie AWS Config benutzerdefinierte Regeln mithilfe von AWS CloudFormation Guard Richtlinien

Erstellt von Andrew Lok (AWS), Kailash Havildar (AWS), Nicole Brown () und Tanya Howell (AWS) AWS

Übersicht

AWS ConfigRegeln helfen Ihnen bei der Bewertung Ihrer AWS Ressourcen und ihres Zielkonfigurationsstatus. Es gibt zwei Arten von AWS Config Regeln: verwaltete und benutzerdefinierte Regeln. Sie können benutzerdefinierte Regeln mit AWS Lambda Funktionen oder mit AWS CloudFormation Guard(GitHub), einer policy-as-code Sprache, erstellen.

Mit Guard erstellte Regeln bieten eine detailliertere Steuerung als verwaltete Regeln und sind in der Regel einfacher zu konfigurieren als vollständig benutzerdefinierte Lambda-Regeln. Dieser Ansatz bietet Ingenieuren und Architekten die Möglichkeit, Regeln zu erstellen, ohne Python, NodeJS oder Java kennen zu müssen, die für die Bereitstellung benutzerdefinierter Regeln über Lambda erforderlich sind.

Dieses Muster bietet praktikable Vorlagen, Codebeispiele und Bereitstellungsansätze, die Sie bei der Einführung benutzerdefinierter Regeln mit Guard unterstützen. Mithilfe dieses Musters kann ein Administrator benutzerdefinierte Compliance-Regeln mit Attributen für Konfigurationselemente erstellen. AWS Config Entwickler können beispielsweise Guard-Richtlinien für AWS Config Konfigurationselemente verwenden, um den Status bereitgestellter AWS und nicht vorhandener AWS Ressourcen kontinuierlich zu überwachen, Regelverstöße zu erkennen und automatisch Abhilfemaßnahmen einzuleiten.

Ziele

Nachdem Sie dieses Muster gelesen haben, sollten Sie in der Lage sein:

Voraussetzungen und Einschränkungen

Voraussetzungen

  • Ein aktiver AWS-Konto

  • AWS Config, eingerichtet in Ihrem AWS-Konto

Einschränkungen

  • Benutzerdefinierte Guard-Regeln können nur Schlüssel-Wert-Paare in einem Datensatz mit Zielkonfigurationselementen abfragen JSON

Architektur

Sie wenden die Guard-Syntax als benutzerdefinierte Richtlinie auf eine AWS Config Regel an. AWS Config erfasst die Hierarchie JSON der einzelnen angegebenen Ressourcen. Das JSON AWS Config Konfigurationselement enthält Schlüssel-Wert-Paare. Diese Attribute werden in der Guard-Syntax als Variablen verwendet, die ihrem entsprechenden Wert zugewiesen werden. 

Im Folgenden wird die Guard-Syntax erklärt. Die Variablen aus dem Konfigurationselement JSON werden verwendet und ihnen wird ein % Zeichen vorangestellt.

# declare variable let <variable name> = <'value'> # create rule and assign condition and policy rule <rule name> when <CI json key> == <"CI json value"> { <top level CI json key>.<next level CI json key> == %<variable name> }

Szenario 1: EBS Amazon-Volumen

Szenario 1 stellt eine AWS Config benutzerdefinierte Regel bereit, die die Guard-Syntax verwendet, um die Konformität für verschlüsselte Volumes zu überprüfen. Diese Regel überprüft, ob das Laufwerk verwendet wird, und stellt sicher, dass der Laufwerkstyp gp3 ist.

Das Folgende ist ein Beispiel für ein AWS Config Konfigurationselement für Szenario 1. Dieses Konfigurationselement enthält drei Schlüssel-Wert-Paare, die als Variablen in der Guard-Richtlinie verwendet werden: volumestatusvolumeencryptionstatus, und. volumetype Außerdem wird der resourceType Schlüssel in der Guard-Richtlinie als Filter verwendet.

{ "version": "1.3", "accountId": "111111111111", "configurationItemCaptureTime": "2023-01-15T19:04:45.402Z", "configurationItemStatus": "ResourceDiscovered", "configurationStateId": "4444444444444", "configurationItemMD5Hash": "", "arn": "arn:aws:ec2:us-west-2:111111111111:volume/vol-222222222222", "resourceType": "AWS::EC2::Volume", "resourceId": "vol-222222222222", "awsRegion": "us-west-2", "availabilityZone": "us-west-2b", "resourceCreationTime": "2023-01-15T19:03:22.247Z", "tags": {}, "relatedEvents": [], "relationships": [ { "resourceType": "AWS::EC2::Instance", "resourceId": "i-33333333333333333", "relationshipName": "Is attached to Instance" } ], "configuration": { "attachments": [ { "attachTime": "2023-01-15T19:03:22.000Z", "device": "/dev/xvda", "instanceId": "i-33333333333333333", "state": "attached", "volumeId": "vol-222222222222", "deleteOnTermination": true, "associatedResource": null, "instanceOwningService": null } ], "availabilityZone": "us-west-2b", "createTime": "2023-01-15T19:03:22.247Z", "encrypted": false, "kmsKeyId": null, "outpostArn": null, "size": 8, "snapshotId": "snap-55555555555555555", "state": "in-use", "volumeId": "vol-222222222222", "iops": 100, "tags": [], "volumeType": "gp2", "fastRestored": null, "multiAttachEnabled": false, "throughput": null, "sseType": null }, "supplementaryConfiguration": {} }

Das Folgende ist ein Beispiel für die Verwendung der Guard-Syntax zur Definition der Variablen und Regeln in Szenario 1. Beachten Sie im folgenden Beispiel Folgendes:

  • Die ersten drei Zeilen definieren die Variablen mithilfe des let Befehls.  Ihnen wird ein Name und ein Wert zugewiesen, die von den Attributen des Konfigurationselements abgeleitet sind.

  • Der compliancecheck Regelblock fügt eine Abhängigkeit vom Typ when hinzu, die nach einem übereinstimmenden resourceType Schlüssel-Wert-Paar sucht. AWS::EC2::Volume Wenn eine Übereinstimmung gefunden wird, durchsucht die Regel die restlichen JSON Attribute und sucht unter den folgenden drei Bedingungen nach Übereinstimmungen: stateencrypted, und. volumeType

let volumestatus = 'available' let volumetype = 'gp3' let volumeencryptionstatus = true rule compliancecheck when resourceType == "AWS::EC2::Volume" { configuration.state == %volumestatus configuration.encrypted == %volumeencryptionstatus configuration.volumeType == %volumetype }

Die vollständige benutzerdefinierte Guard-Richtlinie, die diese benutzerdefinierte Regel implementiert, finden Sie unter awsconfig-guard-cft.yaml oder awsconfig-guard-tf-ec2vol.json im Code-Repository. GitHub HashiCorp Terraform-Code, der diese benutzerdefinierte Richtlinie in Guard bereitstellt, finden Sie unter .json im Code-Repository. awsconfig-guard-tf-example

Szenario 2: Einhaltung GuardDuty

Szenario 2 stellt eine AWS Config benutzerdefinierte Regel bereit, die die Guard-Syntax verwendet, um die GuardDuty Amazon-Konformität zu überprüfen. Diese Regel überprüft, ob bei GuardDuty Rekordern Amazon S3 Protection und Amazon EKS Protection aktiviert sind. Außerdem wird überprüft, ob die GuardDuty Ergebnisse alle 15 Minuten veröffentlicht werden. Dieses Szenario könnte überall AWS-Konten und AWS-Regionen in einer Organisation (in AWS Organizations) eingesetzt werden.

Das Folgende ist ein Beispiel für ein AWS Config Konfigurationselement für Szenario 2. Dieses Konfigurationselement enthält drei Schlüssel-Wert-Paare, die als Variablen in der Guard-Richtlinie verwendet werden: FindingPublishingFrequencyS3Logs, und. Kubernetes Außerdem wird der resourceType Schlüssel in der Richtlinie als Filter verwendet.

{ "version": "1.3", "accountId": "111111111111", "configurationItemCaptureTime": "2023-11-27T13:34:28.888Z", "configurationItemStatus": "OK", "configurationStateId": "7777777777777", "configurationItemMD5Hash": "", "arn": "arn:aws:guardduty:us-west-2:111111111111:detector/66666666666666666666666666666666", "resourceType": "AWS::GuardDuty::Detector", "resourceId": "66666666666666666666666666666666", "resourceName": "66666666666666666666666666666666", "awsRegion": "us-west-2", "availabilityZone": "Regional", "resourceCreationTime": "2020-02-17T02:48:04.511Z", "tags": {}, "relatedEvents": [], "relationships": [], "configuration": { "Enable": true, "FindingPublishingFrequency": "FIFTEEN_MINUTES", "DataSources": { "S3Logs": { "Enable": true }, "Kubernetes": { "AuditLogs": { "Enable": true } } }, "Id": "66666666666666666666666666666666", "Tags": [] }, "supplementaryConfiguration": { "CreatedAt": "2020-02-17T02:48:04.511Z" } }

Im Folgenden finden Sie ein Beispiel für die Verwendung der Guard-Syntax zur Definition der Variablen und Regeln in Szenario 2. Beachten Sie im folgenden Beispiel Folgendes:

  • Die ersten drei Zeilen definieren die Variablen mithilfe des let Befehls.  Ihnen wird ein Name und ein Wert zugewiesen, die von den Attributen des Konfigurationselements abgeleitet sind.

  • Der compliancecheck Regelblock fügt eine Abhängigkeit vom Typ when hinzu, die nach einem übereinstimmenden resourceType Schlüssel-Wert-Paar sucht. AWS::GuardDuty::Detector Wenn eine Übereinstimmung gefunden wird, durchsucht die Regel die restlichen JSON Attribute und sucht unter den folgenden drei Bedingungen nach Übereinstimmungen: S3Logs.EnableKubernetes.AuditLogs.Enable, und. FindingPublishingFrequency

let s3protection = true let kubernetesprotection = true let publishfrequency = 'FIFTEEN_MINUTES' rule compliancecheck when resourceType == "AWS::GuardDuty::Detector" { configuration.DataSources.S3Logs.Enable == %s3protection configuration.DataSources.Kubernetes.AuditLogs.Enable == %kubernetesprotection configuration.FindingPublishingFrequency == %publishfrequency }

Die vollständige benutzerdefinierte Guard-Richtlinie, die diese benutzerdefinierte Regel implementiert, finden Sie unter awsconfig-guard-cft-gd.yaml im GitHub Code-Repository. HashiCorp Terraform-Code, der diese benutzerdefinierte Richtlinie in Guard bereitstellt, finden Sie unter awsconfig-guard-tf-gd.json im Code-Repository.

Tools

AWS-Services

  • AWS CloudFormationhilft Ihnen dabei, AWS Ressourcen einzurichten, sie schnell und konsistent bereitzustellen und sie während ihres gesamten Lebenszyklus regionsübergreifend zu verwalten. AWS-Konten

  • AWS Configbietet einen detaillierten Überblick über die Ressourcen in Ihrem System AWS-Konto und darüber, wie sie konfiguriert sind. Es hilft Ihnen zu erkennen, wie Ressourcen miteinander zusammenhängen und wie sich ihre Konfigurationen im Laufe der Zeit geändert haben.

Andere Tools

  • HashiCorp Terraform ist ein Open-Source-Tool für Infrastruktur als Code (IaC), mit dem Sie mithilfe von Code Cloud-Infrastruktur und -Ressourcen bereitstellen und verwalten können.

Code-Repository

Der Code für dieses Muster ist im AWS CloudFormation Guard Repository GitHub AWS Config with verfügbar. Dieses Code-Repository enthält Beispiele für beide in diesem Muster beschriebenen Szenarien.

Epen

AufgabeBeschreibungErforderliche Fähigkeiten

(Optional) Wählen Sie Schlüssel-Wert-Paare für die Regel aus.

Gehen Sie wie folgt vor, wenn Sie eine benutzerdefinierte Guard-Richtlinie definieren. Wenn Sie eine der Beispielrichtlinien für Szenario 1 oder 2 verwenden, überspringen Sie diese Schritte.

  1. Melden Sie sich bei der an AWS Management Console und öffnen Sie die AWS Config Konsole.

  2. Wählen Sie in der linken Navigationsleiste Ressourcen aus.

  3. Wählen Sie im Ressourceninventar den Ressourcentyp aus, für den Sie eine AWS Config benutzerdefinierte Regel erstellen möchten.

  4. Wählen Sie die Option Details anzeigen aus.

  5. Wählen Sie Konfigurationselement anzeigen (JSON). Dieser Abschnitt wird erweitert und zeigt das Konfigurationselement im JSON Format an.

  6. Identifizieren Sie die Schlüssel-Wert-Paare, für die Sie eine AWS Config benutzerdefinierte Regel erstellen möchten.

AWSAdministrator, Sicherheitsingenieur

Erstellen Sie die benutzerdefinierte Regel.

Folgen Sie den Anweisungen unter Benutzerdefinierte Richtlinienregeln erstellen, um eine AWS Config benutzerdefinierte Regel zu erstellen, indem Sie die zuvor identifizierten Schlüssel-Wert-Paare verwenden oder eine der bereitgestellten Guard-Beispielrichtlinien verwenden.

AWSAdministrator, Sicherheitsingenieur

Überprüfen Sie die benutzerdefinierte Regel.

Führen Sie einen der folgenden Schritte aus, um die benutzerdefinierte Guard-Regel zu validieren:

  • Geben Sie den folgenden Befehl in das Feld AWS Command Line Interface (AWS CLI) ein.

    cfn-guard validate -r guard-s3.guard -d s3bucket-prod-pass.json
  • Folgen Sie den Anweisungen im Detektivmodus unter Evaluieren Ihrer Ressourcen mit AWS Config Regeln, um die Regel in zu implementieren AWS Config. Vergewissern Sie sich, dass die Guard-Syntax den entsprechenden Ressourcen im Zielkonto oder in der Zieldatei korrekt entspricht.

AWSAdministrator, Sicherheitsingenieur

AWS Config Benutzerdefinierte Regeln erstellen

AufgabeBeschreibungErforderliche Fähigkeiten

(Optional) Wählen Sie Schlüssel-Wert-Paare für die Regel aus.

Gehen Sie wie folgt vor, wenn Sie eine benutzerdefinierte Guard-Richtlinie definieren. Wenn Sie eine der Beispielrichtlinien für Szenario 1 oder 2 verwenden, überspringen Sie diese Schritte.

  1. Melden Sie sich bei der an AWS Management Console und öffnen Sie die AWS Config Konsole.

  2. Wählen Sie in der linken Navigationsleiste Ressourcen aus.

  3. Wählen Sie im Ressourceninventar den Ressourcentyp aus, für den Sie eine AWS Config benutzerdefinierte Regel erstellen möchten.

  4. Wählen Sie die Option Details anzeigen aus.

  5. Wählen Sie Konfigurationselement anzeigen (JSON). Dieser Abschnitt wird erweitert und zeigt das Konfigurationselement im JSON Format an.

  6. Identifizieren Sie die Schlüssel-Wert-Paare, für die Sie eine AWS Config benutzerdefinierte Regel erstellen möchten.

AWSAdministrator, Sicherheitsingenieur

Erstellen Sie die benutzerdefinierte Regel.

Folgen Sie den Anweisungen unter Benutzerdefinierte Richtlinienregeln erstellen, um eine AWS Config benutzerdefinierte Regel zu erstellen, indem Sie die zuvor identifizierten Schlüssel-Wert-Paare verwenden oder eine der bereitgestellten Guard-Beispielrichtlinien verwenden.

AWSAdministrator, Sicherheitsingenieur

Überprüfen Sie die benutzerdefinierte Regel.

Führen Sie einen der folgenden Schritte aus, um die benutzerdefinierte Guard-Regel zu validieren:

  • Geben Sie den folgenden Befehl in das Feld AWS Command Line Interface (AWS CLI) ein.

    cfn-guard validate -r guard-s3.guard -d s3bucket-prod-pass.json
  • Folgen Sie den Anweisungen im Detektivmodus unter Evaluieren Ihrer Ressourcen mit AWS Config Regeln, um die Regel in zu implementieren AWS Config. Vergewissern Sie sich, dass die Guard-Syntax den entsprechenden Ressourcen im Zielkonto oder in der Zieldatei korrekt entspricht.

AWSAdministrator, Sicherheitsingenieur

Fehlerbehebung

ProblemLösung

Testen Sie die Guard-Richtlinie außerhalb von AWS Config

Unit-Tests können auf Ihrem lokalen Gerät oder in einer integrierten Entwicklungsumgebung (IDE) durchgeführt werden, z. B. in AWS Cloud9 IDE Gehen Sie wie folgt vor, um Unit-Tests durchzuführen:

  1. Installieren Sie das AWS CloudFormation Guard CLIund seine Abhängigkeiten.

  2. Speichern Sie ein JSON CI-Beispiel im -Format als JSON-Datei auf Ihrer Workstation.

  3. Speichern Sie die GuardDuty Richtlinie als .guard-Datei auf Ihrer Workstation.

  4. Geben Sie im Guard den folgenden Befehl einCLI, um die JSON Beispieldatei mithilfe der Guard-Richtlinie zu validieren.

    cfn-guard validate \ -r guard-s3.guard \ -d s3bucket-prod-pass.json

Debuggen Sie eine AWS Config benutzerdefinierte Regel

Ändern Sie den EnableDebugLogDelivery Wert in Ihrer Guard-Richtlinie intrue. Der Standardwert ist false. Die Protokollnachrichten werden in Amazon gespeichert CloudWatch.

Zugehörige Ressourcen

AWS Dokumentation

AWS Blogbeiträge und Workshops

Sonstige Ressourcen

DatenschutzNutzungsbedingungen für die WebsiteCookie-Einstellungen
© 2025, Amazon Web Services, Inc. oder Tochtergesellschaften. Alle Rechte vorbehalten.