DevOps und Cloud-Reifegradmodelle verstehen: Ein Leitfaden zur Verbesserung Ihrer IT-Strategie
Im heutigen schnelllebigen Technologiebereich sind DevOps- und Cloud-Praktiken entscheidend, um die Software-Bereitstellung zu beschleunigen und
Die Sicherung der eigenen GitHub-Organisation ist entscheidend, da sie sensiblen Code und Daten enthalten kann. Daher ist es wichtig, Mitwirkende und deren Beiträge zu überwachen, um die Einhaltung von Vorschriften und die Integrität des Codes zu gewährleisten. Die manuelle Verwaltung von GitHub-Konfigurationen kann zeitaufwändig und fehleranfällig sein. Terraform bietet eine Lösung, indem es ermöglicht, die Einrichtung und Pflege von GitHub Organisationen, Repositories, Teams und Berechtigungen zu automatisieren. Durch die Verwendung von Terraform für die GitHub-Konfiguration lassen sich Arbeitsabläufe rationalisieren, die Sicherheit verbessern und die Einhaltung von Best Practices gewährleisten. In diesem Leitfaden werfen wir einen Blick auf den GitHub Terraform-Provider und bauen eine sichere Umgebung für eine GitHub-Infrastruktur auf, die den Sicherheitsstandards von Mondoo entspricht.
In unserem Blog-Beitrag über GitHub und Mondoo haben wir besprochen, wie Mondoo dabei helfen kann, GitHub-Repositories sicher zu halten. Wenn man die Integration seiner Ressourcen in Mondoo automatisieren möchte, bietet unser Blogpost über die Verwendung von Mondoo mit Terraform einen guten Ansatz. Mondoo kann dabei helfen, die Sicherheit der eigenen Infrastruktur zu verbessern, indem es nach Schwachstellen sucht und Best-Practice-Einstellungen für Assets empfiehlt.
Installieren des GitHub-Providers: Wir installieren den GitHub-Provider über die Terraform Registry. Dieser Provider wird verwendet, um mit der API von GitHub zu interagieren und GitHub-Ressourcen programmatisch zu verwalten.
Konfigurieren des GitHub-Providers: Wir konfigurieren den GitHub-Provider, indem wir die Attribute token
und owner
festlegen. Das Token-Attribut sollte auf den richtigen GitHub-PAT gesetzt werden und das Owner-Attribut auf den Namen der GitHub-Organisation.
1terraform {
2 required_providers {
3 github = {
4 source = "integrations/github"
5 version = "~> 6.0"
6 }
7 }
8}
9
10provider "github" {
11 token = var.token
12 owner = var.owner
13}
Der GitHub Terraform-Provider ermöglicht die Verwaltung verschiedener GitHub-Ressourcen, darunter:
Wir werden nun einen Blick auf die Erstellung von sicheren Repositories und Branch-Schutzregeln werfen, die mit Mondoos Sicherheitsstandards übereinstimmen.
Erstellen eines GitHub-Repositorys: Wir verwenden die Ressource github_repository
, um ein neues GitHub-Repository zu erstellen. Mit dieser Ressource können wir den Namen des Repositorys, die Beschreibung, die Sichtbarkeit und andere sicherheitsrelevante Einstellungen festlegen, die für einen hohen Mondoo Asset Score ausschlaggebend sind.
1resource "github_repository" "secure_repo" {
2 name = "secure_repo"
3 description = "Getting started: A secure repository with advanced security features. Authors: x"
4
5 visibility = "public"
6
7 default_branch = "main"
8
9 has_issues = true
10 has_projects = true
11 has_wiki = true
12
13 allow_merge_commit = true
14 allow_squash_merge = false
15 allow_rebase_merge = false
16 allow_auto_merge = true
17
18 delete_branch_on_merge = true
19 web_commit_signoff_required = true
20
21 has_downloads = false
22 auto_init = true
23
24 archived = false
25 archive_on_destroy = false
26
27}
Repository-Dateien verwalten: Wir verwenden die Ressource github_repository_file
zur Verwaltung wichtiger Dateien wie README, LICENSE, CODEOWNERS, support.md, security.md und code_of_conduct.md. Dies ist eine Beispielimplementierung für eine Datei:
1resource "github_repository_file" "security_policy" {
2 repository = github_repository.secure_repo.name
3 branch = "main"
4 file = "security.md"
5 content = "This is a secure file."
6 commit_message = "Add security policy file"
7 commit_author = "Trusted User"
8 commit_email = "user@example.com"
9 overwrite_on_create = true
10}
Zu beachten ist, dass die Mondoo-Checks die oben angegebenen Dateinamen erwarten.
Eine README-Datei wird automatisch erstellt, wenn eine Repository-Beschreibung angeben wird. Stellen Sie sicher, dass Sie einen Abschnitt "Getting started:" und "Authors:" in das README einfügen.
Stellen Sie sicher, dass der Inhalt der CODEOWNERS-Datei zumindest die Code-Eigentümer für das Verzeichnis
.github/workflows/
angibt.
Verwaltung von Regeln zum Schutz von Branches: Wir verwenden die Ressource github_branch_protection
, um Regeln zum Schutz von Branches für unser GitHub-Repository zu verwalten. Mit dieser Ressource können wir unter anderem den Namen des betroffenen Branches angeben, die Einhaltung der Regeln erzwingen und die erforderliche Überprüfung von Pull Requests festlegen.
1resource "github_branch_protection" "branch_protection" {
2 repository_id = github_repository.secure_repo.id
3 pattern = "main"
4 enforce_admins = true
5 require_signed_commits = true
6 require_conversation_resolution = true
7 required_status_checks {
8 strict = true
9 contexts = ["ci/mondoo"]
10 }
11 required_pull_request_reviews {
12 dismiss_stale_reviews = true
13 restrict_dismissals = true
14 required_approving_review_count = 2
15 require_code_owner_reviews = true
16 dismissal_restrictions = [
17 "/user1",
18 ]
19 }
20 restrict_pushes {
21 push_allowances = [
22 "/user1",
23 ]
24 }
25 allows_force_pushes = false
26}
Diese Konfigurationen erhöhen die Sicherheit der Repositories drastisch und sorgen für eine bessere Bewertung der Assets in Mondoo. Leider kann der GitHub Terraform-Provider keine neuen GitHub Actions-Workflows erstellen und daher nicht alle Mondoo-Checks bestehen. Wir können jedoch neue Repositories mit Hilfe von Repository-Templates erstellen.
Repository-Templates werden verwendet, um die Erstellung neuer Repositories mit vordefinierten Konfigurationen und Einstellungen zu standardisieren. Obwohl wir in Terraform keine Workflows erstellen können, können wir vordefinierte Repositories verwenden, welche die fehlenden sicherheitsrelevanten Dateien enthalten. In diesem Beispiel verwenden wir ein Template einer von uns erstellten Demo-Organisation, die bereits alle relevanten Einstellungen und Dateien enthält. So verwenden wir ein Template innerhalb einer neuen Repository-Ressource:
1resource "github_repository" "template_example" {
2 name = "another_example"
3 description = "My awesome codebase from a template."
4 visibility = "public"
5
6 template {
7 owner = "whatacoolorg"
8 repository = "demorepo"
9 include_all_branches = true
10 }
11}
Wir können alle Mondoo-Compliance-Checks für GitHub erfolgreich bestehen, nachdem wir das neue Repository aus einem Template und Branch-Schutzregeln erstellt haben.
Zusammenfassend lässt sich sagen, dass die Sicherung der eigenen GitHub-Organisation und der Repositories entscheidend für den Schutz von sensiblem Code und Daten ist. Durch die Automatisierungsmöglichkeiten von Terraform lässt sich die Infrastruktur von GitHub effizient verwalten, Sicherheitsstandards durchsetzen und die Einhaltung von Best Practices sicherstellen. Während einige Mondoo-Checks aufgrund von Einschränkungen bei der Erstellung von GitHub-Actions-Workflows über Terraform nicht berücksichtigt werden können, kann die Nutzung von Repository-Templates helfen, die Lücke zu schließen und die Erstellung von sicheren Repositories von Anfang an zu erleichtern. Wenn die in diesem Leitfaden beschriebenen Schritte befolgt werden und Mondoo für das Scannen von Schwachstellen und die Durchsetzung von Richtlinien integriert wird, lässt sich die Sicherheitslage auf GitHub verbessern und potenzielle Risiken effektiv eindämmen.
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