Blog

Bereitstellen von AWS Config-Regeln in Ihrem Unternehmen

Joris Conijn

Joris Conijn

Aktualisiert Oktober 15, 2025
4 Minuten

In meinem letzten Blog habe ich Ihnen gezeigt, wie Sie Ihre eigenen Konfigurationsregeln schreiben können. Aber das bringt Ihnen nur dann etwas, wenn Sie die Regel in Ihren AWS-Konten bereitstellen. In diesem Blog werden wir uns mit der Verteilung dieser Konfigurationsregeln beschäftigen.

Was sind meine Optionen?

Es gibt viele Möglichkeiten, wie Sie diese Regeln in Ihren Mitgliederkonten einsetzen können. In diesem Blog werde ich mich nur auf die 2 echten Optionen konzentrieren:

  • Stellen Sie die Regeln mit CloudFormation StackSets in jedem Konto bereit.
  • Verwenden Sie Konformitätspakete.

CloudFormation StackSets verwenden

Wenn Sie sich ansehen, was CloudFormation StackSets leistet, werden Sie sehen, warum dies eine gute Lösung ist:

Beispiel, wie CloudFormation StackSets funktionieren

Sie müssen einen delegierten Administrator haben. Dieser Administrator hat die Möglichkeit, die Vorlage in anderen Konten zu verteilen. Sie definieren alle Kontonummern und Regionen, in denen Sie die Konfigurationsregeln einsetzen möchten.

Wenn Sie dies mit einer Landingzone kombinieren, haben Sie diese höchstwahrscheinlich bereits eingerichtet.

Verwendung von Conformance Packs

Ein Konformitätspaket ist nichts weiter als ein Bündel von Konfigurationsregeln, die in Gruppen zusammengefasst sind. Aber ein solches Paket bietet Ihnen noch einige weitere Vorteile. Zum Beispiel können Sie die Konformitätsbewertung Ihres Pakets in Ihrem Konto einsehen. Sie können sie mit den Konformitätsbewertungen vergleichen, die Sie in Security Hub sehen können. Angenommen, Sie haben 10 Konfigurationsregeln. Wenn eine davon Ressourcen enthält, die nicht konform sind, haben Sie eine Konformitätsbewertung von 90%.

Dies allein würde jedoch nicht ausreichen, um die Regeln auf alle Ihre Konten zu verteilen. Die Conformance Packs gibt es in 2 Varianten: reguläre und organisatorische Conformance Packs. Reguläre Regeln verteilen das Conformance Pack in einem einzigen Konto. Das organisatorische Konformitätspaket verteilt die Regel in allen Konten.

Hinweis: Sie können die regulären Konfigurationsregeln über eine Organisationskonfigurationsregel bereitstellen. Dadurch können Sie jedoch nicht alle Ihre Regeln gruppieren. Aus diesem Grund tendiere ich dazu, Conformance Packs zu verwenden.

Zeigen Sie mir ein Beispiel

Es ist immer besser, ein Beispiel zu verwenden. Dieses Snippet funktioniert nur, wenn Sie die Voraussetzungen erfüllen. Wenn Sie diese Vorlage in dem Konto bereitstellen, das als delegierter Administrator eingerichtet ist. Alle Mitgliedskonten verfügen dann über die Konfigurationsregeln.

Resources:

 ConformancePackBucket:
   Type: AWS::S3::Bucket
   DeletionPolicy: Retain
   UpdateReplacePolicy: Retain
   Properties:
     BucketName: !Sub awsconfigconforms-${AWS::AccountId}-${AWS::Region}
     BucketEncryption:
       ServerSideEncryptionConfiguration:
         - ServerSideEncryptionByDefault:
             SSEAlgorithm: AES256
     PublicAccessBlockConfiguration:
       BlockPublicAcls: True
       BlockPublicPolicy: True
       IgnorePublicAcls: True
       RestrictPublicBuckets: True

 ConformancePackBucketPolicy:
   Type: AWS::S3::BucketPolicy
   Properties:
     Bucket: !Ref ConformancePackBucket
     PolicyDocument:
       Version: 2012-10-17
       Statement:
         - Sid: AWSConfigConformsCheckAcls
           Action: s3:GetBucketAcl
           Effect: Allow
           Resource: !GetAtt ConformancePackBucket.Arn
           Principal:
             AWS: !Sub arn:aws:iam::${AWS::AccountId}:role/aws-service-role/config-conforms.amazonaws.com/AWSServiceRoleForConfigConforms
           Condition:
             StringEquals:
               aws:PrincipalOrgID: ${aws:PrincipalOrgID}
             Bool:
               aws:SecureTransport: true
         - Sid: AWSConfigConformsReadWriteBucket
           Action:
             - s3:PutObject
             - s3:GetObject
           Effect: Allow
           Resource: !Sub ${ConformancePackBucket.Arn}/*
           Principal:
             AWS: !Sub arn:aws:iam::${AWS::AccountId}:role/aws-service-role/config-conforms.amazonaws.com/AWSServiceRoleForConfigConforms
           Condition:
             StringEquals:
               aws:PrincipalOrgID: ${aws:PrincipalOrgID}
             Bool:
               aws:SecureTransport: true

 OrganizationConformancePack:
   Type: AWS::Config::OrganizationConformancePack
   Properties:
     OrganizationConformancePackName: lz-framework
     DeliveryS3Bucket: !Ref ConformancePackBucket
     ExcludedAccounts: [ "000000000000" ] # AccountID to exclude
     TemplateBody: |-
       Resources:
         S3AccessLogging:
           Type: AWS::Config::ConfigRule
           Properties:
             ConfigRuleName: lz-my-custom-rule
             Description: My custom rule
             EvaluationModes:
               - Mode: DETECTIVE
             Scope:
               ComplianceResourceTypes:
                 - AWS::S3::Bucket
             Source:
               Owner: CUSTOM_POLICY
               SourceDetails:
                 - EventSource: aws.config
                   MessageType: ConfigurationItemChangeNotification
                 - EventSource: aws.config
                   MessageType: OversizedConfigurationItemChangeNotification
               CustomPolicyDetails:
                 EnableDebugLogDelivery: 'true'
                 PolicyRuntime: guard-2.x.x
                 PolicyText: |-
                   # The rule definition goes here

Die Vorlage enthält nur 3 Hauptressourcen, aber 2 eigentliche logische Komponenten. Einen Bucket mit einer Richtlinie und die Definition des Conformance Packs. Schauen wir uns alle Komponenten des Beispiels an.

S3 Bucket und die Bucket-Richtlinie

Dieser Bucket muss mit awsconfigconforms beginnen. Der Dienst wird diesen Bucket zum Hochladen der Vorlage verwenden. Die Vorlage stammt aus der Ressource OrganizationConformancePack. Die Richtlinie erlaubt es dem Dienst, Objekte zu setzen und zu holen, solange er sich innerhalb der Organisation befindet. Dadurch kann der Dienst die Vorlage in allen Mitgliedskonten bereitstellen.

Organisation Conformance Pack

Die Definition des Organisationskonformitätspakets sieht groß aus, ist aber ganz einfach. Wenn Sie genauer hinsehen, werden Sie feststellen, dass sie nur 4 Eigenschaften hat:

  • OrganizationConformancePackName
  • LieferungS3Bucket
  • AusgeschlosseneKonten
  • TemplateBody

Die ersten 3 Optionen sind ziemlich einfach. Die Vorlage selbst ist ein wenig komplizierter. In meinem Beispiel habe ich eine Inline-Vorlage verwendet, um diesen Blog zu vervollständigen. Sie können aber auch auf ein vorhandenes Objekt in S3 verweisen. Auf diese Weise können Sie Linting-Tools wie cfn-lint für Ihr Conformance Pack verwenden. Dadurch werden Fehler bei der Bereitstellung reduziert, da Sie sie abfangen können, bevor Sie Ihren Code festschreiben und veröffentlichen.

Wenn Sie Hilfe beim Einrichten der Vorlage für das Konformitätspaket benötigen, sehen Sie sich diese Beispiele an.

Fazit

Wenn Sie benutzerdefinierte Regeln in einem Konformitätspaket kombinieren. Damit können Sie die Verteilung dieser Regeln vereinfachen. Sie müssen keine Pipelines oder Stapelsätze pflegen. Und Sie lagern die Verteilung Ihrer Regeln an AWS aus.

Damit entfällt der gesamte Wartungsaufwand für die Infrastruktur, wenn Sie diese Verteilung selbst vornehmen. Und Sie müssen sich keine Gedanken über Szenarien wie das Hinzufügen/Entfernen von Konten machen.

Foto von ELEVATE

Verfasst von

Joris Conijn

Joris is the AWS Practise CTO of the Xebia Cloud service line and has been working with the AWS cloud since 2009 and focussing on building event-driven architectures. While working with the cloud from (almost) the start, he has seen most of the services being launched. Joris strongly believes in automation and infrastructure as code and is open to learning new things and experimenting with them because that is the way to learn and grow.

Contact

Let’s discuss how we can support your journey.