HashiCorp Sentinel mit Mondoo-Richtlinien für Terraform: Ein kompakter Leitfaden


Bicycle

In den heutigen schnelllebigen DevOps-Umgebungen ist die Sicherstellung der Infrastrukturkonformität und -sicherheit von höchster Bedeutung. Traditionell war HashiCorp Sentinel innerhalb des HashiCorp-Ökosystems, insbesondere für Terraform-Nutzer, eine bevorzugte Wahl für Richtlinien als Code. Jedoch bietet Mondoo eine überzeugende Alternative, die umfangreiche Sicherheits- und Konformitätsfunktionen bietet, die nahtlos in Terraform integriert werden können. Dieser Artikel untersucht, wie man Mondoo-Richtlinien als Ersatz für HashiCorp Sentinel mit praktischen Beispielen verwendet.

Warum Mondoo für das Management von Terraform-Richtlinien in Betracht ziehen?

Mondoo ist eine Sicherheits- und Konformitätsplattform, die robuste Fähigkeiten für kontinuierliche Sicherheitsbewertungen und Konformitätsprüfungen in Cloud-, On-Premise- und hybriden Umgebungen bietet. Hier sind einige Hauptgründe, Mondoo zu berücksichtigen:

  • Breite Integrationen: Mondoo unterstützt mehrere Cloud-Anbieter, CI/CD-Pipelines, Kubernetes und mehr.
  • Umfassende Sicherheit: Tiefgehende Sicherheits- und Konformitätsprüfungen mit vordefinierten und anpassbaren Richtlinien.
  • Benutzerfreundlichkeit: Eine benutzerfreundliche Plattform mit umfangreicher Dokumentation und Unterstützung.

Erstellung von Mondoo-Richtlinien

Mondoo-Richtlinien werden mithilfe der Richtliniensprache von Mondoo verfasst. Hier ist ein Beispiel für eine einfache Mondoo-Richtlinie, um zu überprüfen, dass kein AWS S3-Bucket öffentlich zugänglich ist:

 1policies:
 2  - uid: terraform-aws-s3-public-access
 3    name: "Stellen Sie sicher, dass kein S3-Bucket öffentlich zugänglich ist."
 4    version: 1.0.0
 5    scoring_system: highest impact
 6    tags:
 7      mondoo.com/category: security
 8    groups:
 9      - title: AWS S3 Bucket Richtlinien
10        filters: asset.runtime == "terraform"
11        checks:
12          - uid: aws-s3-public-access
13
14queries:
15  - uid: aws-s3-public-access
16    title: AWS S3 Public Access
17    impact: 50
18    mql: |
19        terraform.plan.resourceChanges.where(r: r.type == "aws_s3_bucket_acl" ).all(i:  i.change.after.acl.in( props.allowedACLs ) )        
20
21    props:
22      - uid: allowedACLs
23        title: Erlaubte ACLs
24        mql: |
25          ["private", "authenticated-read"]          

Um sicherzustellen, dass Ihre Richtliniendefinition gültig ist, können Sie das Mondoo CLI verwenden, um die Richtliniendatei zu validieren:

1cnspec policy lint aws_s3_bucket_policy.mql.yaml

Integration von Mondoo mit Terraform

Die Integration von Mondoo mit Terraform beinhaltet das Ausführen von Mondoo-Checks als Teil Ihres Terraform-Workflows basierend auf dem Terraform-Plan. Hier ist ein Beispiel für Terraform-Code, der einen AWS S3-Bucket als Ressource verwendet und die Mondoo CLI verwendet, um den Terraform-Plan mit lokalen Richtliniendateien zu scannen:

 1resource "aws_s3_bucket" "example" {
 2  bucket = "my-tf-example-bucket"
 3}
 4
 5resource "aws_s3_bucket_ownership_controls" "example" {
 6  bucket = aws_s3_bucket.example.id
 7  rule {
 8    object_ownership = "BucketOwnerPreferred"
 9  }
10}
11
12resource "aws_s3_bucket_acl" "example" {
13  depends_on = [aws_s3_bucket_ownership_controls.example]
14
15  bucket = aws_s3_bucket.example.id
16  acl    = "private"
17}
  1. Erstellen Sie einen Terraform-Plan:
1terraform plan -out=tfplan
  1. Konvertieren Sie den Plan in JSON:
1terraform show -json tfplan > tfplan.json
  1. Führen Sie den Mondoo-Scan durch:
 1cnspec scan terraform plan tfplan.json -f aws_s3_bucket_policy.mql.yaml
 2→ discover related assets for 1 asset(s)
 3
 4 Terraform Static Analysis tfplan ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% score: A
 5
 6Asset: Terraform Static Analysis tfplan
 7---------------------------------------
 8
 9Checks:
10✓ Pass:  100  AWS S3 Public Access
11
12Scanned 1 asset
13
14Terraform Plan
15    [100/100]   Terraform Static Analysis tfplan

Beispiel: Durchsetzung von Sicherheitsgruppenrichtlinien

Lassen Sie uns eine Richtlinie durchsetzen, um sicherzustellen, dass keine Sicherheitsgruppe SSH-Zugriff von überall erlaubt.

Mondoo-Richtlinie

 1policies:
 2  - uid: terraform-aws-sec-group-ssh-access
 3    name: "Stellen Sie sicher, dass keine Sicherheitsgruppe SSH von 0.0.0.0/0 erlaubt."
 4    version: 1.0.0
 5    scoring_system: highest impact
 6    tags:
 7      mondoo.com/category: security
 8    groups:
 9      - title: AWS SSH Sicherheitsgruppenprüfung
10        filters: asset.runtime == "terraform"
11        checks:
12          - uid: aws-ssh-security-group
13queries:
14  - uid: aws-ssh-security-group
15    title: AWS SSH Sicherheitsgruppenprüfung
16    impact: 20
17    mql: |
18      terraform.plan.resourceChanges.where(r: r.type == "aws_security_group" || r.type == "aws_security_group_rule" ).all(i:
19        i.change.after.from_port == 22
20        && i.change.after.to_port == 22
21        && i.change.after.cidr_blocks.not_in( props.disAllowedCIDRs )
22        && i.change.after.ipv6_cidr_blocks.not_in( props.disAllowedCIDRs )
23        )      
24
25    props:
26      - uid: disAllowedCIDRs
27        title: Nicht erlaubte CIDRs
28        mql: |
29          ["0.0.0.0/0", "::/0" ]          

Terraform-Konfiguration

Hier ist eine Beispiel-Konfiguration für eine AWS-Sicherheitsgruppe in Terraform:

 1resource "aws_security_group" "example" {
 2  name        = "example-sg"
 3  description = "Beispiel Sicherheitsgruppe"
 4
 5  ingress {
 6    from_port   = 22
 7    to_port     = 22
 8    protocol    = "tcp"
 9    cidr_blocks = ["0.0.0.0/0"]
10  }
11}
12
13resource "aws_security_group_rule" "example" {
14  type              = "ingress"
15  from_port         = 22
16  to_port           = 22
17  protocol          = "tcp"
18  ipv6_cidr_blocks = [ "::/0" ]
19  security_group_id = aws_security_group.example.id
20}

Führen Sie die Mondoo-Richtlinie gegen den Terraform-Plan aus

  1. Erstellen und Zeigen des Plans:
1terraform plan -out=tfplan
2terraform show -json tfplan > tfplan.json
  1. Scannen Sie mit Mondoo:
1cnspec scan terraform plan tfplan.json -f aws_security_group_policy.mql.yaml

Der Mondoo-Scan analysiert den Terraform-Plan und setzt die Richtlinie durch, indem er Sie benachrichtigt, falls eine Sicherheitsgruppe SSH-Zugriff von 0.0.0.0/0 erlaubt.

Fazit

Mondoo bietet eine leistungsstarke und flexible Alternative zu HashiCorp Sentinel, um Richtlinien in Ihren Terraform-Workflows durchzusetzen. Durch die Integration von Mondoo können Sie die Sicherheits- und Konformitätsposition Ihrer Infrastruktur mit minimalem Aufwand verbessern. Mit seinen breiten Integrationsmöglichkeiten und umfassenden Funktionen für das Richtlinienmanagement ist Mondoo ideal für moderne DevOps-Umgebungen geeignet.

Insgesamt bietet Mondoo eine robuste Plattform für kontinuierliche Sicherheits- und Konformitätsprüfungen in Ihrer Infrastruktur, um sicherzustellen, dass Ihre ressourcenverwalteten Ressourcen von Terraform den Sicherheitsrichtlinien Ihrer Organisation entsprechen. Diese Richtlinien können auf der Mondoo-Plattform gepflegt und als Teil Ihrer Terraform-Workflows und CI/CD-Pipelines durchgesetzt werden.

Beginnen Sie noch heute mit Mondoo und stellen Sie sicher, dass Ihre ressourcenverwaltete Infrastruktur von Terraform sicher und konform bleibt.

Zurück Unsere Trainings entdecken

Wir sind für Sie da

Sie interessieren sich für unsere Trainings oder haben einfach eine Frage, die beantwortet werden muss? Sie können uns jederzeit kontaktieren! Wir werden unser Bestes tun, um alle Ihre Fragen zu beantworten.

Hier kontaktieren